Sysdig SecureのGit統合によるK8sマニフェストファイルのIaCスキャン - GitHub

本記事ではSysdig SecureのGit統合による、GitHubでのKubernetesマニフェストファイルのIaCスキャン手順についてご紹介します。
SysdigのGit統合により、あらかじめ定義されたポリシーに基づいて、プルリクエストのセキュリティ違反をスキャンできます。スキャン評価の結果はプルリクエスト自体に表示されます。このIaCスキャン結果に応じて、プルリクエストのマージを許可またはブロックするようにリポジトリプラットフォームを構成することができます。
# ドキュメント
ドキュメントは下記をご参照ください。

https://docs.sysdig.com/en/docs/sysdig-secure/integrations-for-sysdig-secure/data-sources/git-integrations/ 

# 前提条件
* Sysdig Secure SaaSアカウントのAdmin権限
* GitHub SaaSアカウントのAdmin権限

# Git統合の手順
1. Sysdig Secure UIから __Integrations > Data Sources > Git Integrations__ に移動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/73ef25d1-ad80-ed30-6a73-19802ab59c83.png)

2. __Add Git Integration__ をクリックし、GitHubを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/05dc5444-4db9-7348-aca4-bcfe5063f9ee.png)

3. 任意のGitHubの統合名称を入力し、__Complete in GitHub__ をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/169f4b96-aed7-d520-ca73-ac950d26f01b.png)


4. GitHub側の画面に自動的に遷移します。
5. SysdigアプリケーションをインストールするGitHubアカウントを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/15f1221e-83e1-7cc3-6b27-5663ebace287.png)

6. 対象とするリポジトリを選択し、__Install__ をクリックします（今回は __All repositories__ を選択しています）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/af1775d6-4faf-f01a-0ea1-aec843837832.png)

7. Installに成功すると自動的にSysdig UI画面に遷移するので、__Configure Sources__ をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/d5dcf172-b55a-4067-7c39-08290c5e0236.png)

8. Sources設定画面で __Add Sources__ をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/b1800a10-aa2c-32ef-2e16-34059038e91e.png)

9. スキャン対象となるKubernetesマニフェストファイルを格納するリポジトリとフォルダ、スキャン対象とするブランチ名の情報を入力し（今回はすべてのブランチ名を対象とするため、正規表現で __.*__ と入力）、 __Add Source__ をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/17e52951-0e68-f0a7-a0f3-ffca3761ce9a.png)

10. Souceが登録されたことを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/bc6d76ac-f20a-9edf-fdd9-cd4df100f2da.png)

11. 一段上の __Git Integrations__ 画面に移動し、統合したGitHubのStatusが __Active__ になっていることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/bcf2d63a-05b4-0bf8-2836-bf0bd80ed03b.png)

# Zoneの確認
IaCスキャンの対象と照合する定義済みのポリシーは、Zoneを使って紐づけることができます。

1. Sysdig UIの __Policies > Configurations > Zones__ に移動します。

2. あらかじめ __Entire Git__ というZoneが用意されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/ae891474-0c23-bc59-25bf-0db13df6929f.png)

3. __Entire Git__ をクリックして詳細を確認します。スキャン対象と紐づける定義済みのポリシーがあらかじめ設定されています。__Entire Git__ ではスキャン対象を設定する __Scopes__ を変更することはできませんが（すべてのGit統合が対象となります）、__Apply Posture Policies__ で紐づけるポリシーを変更することは可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/a7e88b1b-4329-8376-e612-02b1514c5060.png)

4. また、新規にZoneを作成して、対象とするGitHubのSourceや適用するポリシーを自由に紐づけることも可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/188df4be-26cd-00ed-fa53-fa47dbc9afe5.png)


# IaCスキャンのテスト
1. GitHubの対象フォルダにKubernetesのマニフェストファイルをアップロードします（今回はexample-voting-app.yamlをアップロード）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/bb2a033a-5c5f-bef3-96d6-da934c81cf5d.png)

2. ブランチを作成してプルリクエストします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/4c948156-b4ad-8511-6cf6-8c05f795c961.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/3f6753cc-18a5-d248-0064-2b6ff424a312.png)

3. IaCスキャンによるチェックが自動的に実行されます。あらかじめ定義されたポリシーに違反する場合はチェックに失敗するので、__Details__ をクリックして違反の詳細を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/760c9605-71eb-3226-e8a4-ebba241816f9.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/8ca6deab-f033-18d9-b1be-920ecefac2da.png)

4. 各違反項目を展開すると詳細を確認できます。これらの情報は特定の懸念領域を明らかにし、タイムリーな修復に役立ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/0e4fc0e8-0f21-9e9c-dd13-bc1184db32f7.png)

# まとめ
Sysdig SecureのGit統合を利用することで、KubernetesマニフェストファイルのIaCスキャンを簡単に自動実行できることが確認できました。
Infrastructure as Codeのスキャンは、セキュリティ標準のチェックを開発パイプラインに移行し、開発プロセスのできるだけ早い段階で潜在的な問題を浮かび上がらせて解決するのに役立ちます。これは、組織内の多くの関係者に利益をもたらします。
* セキュリティおよびコンプライアンスの担当者は違反とセキュリティリスクの減少を実感できます。
* DevOps マネージャーはプロセスを合理化し、パイプラインを保護できます。
* 開発者は問題を早期に検出でき、最小限の労力で問題を修復する方法について明確なガイダンスを得ることができます。