SnykでAWSをスキャンしていく #Snyk
おはようございます。ゲームソリューション部のきだぱんです。
皆さん、Snykは使ってますか?
コードやOSSで使用するイメージも強いですが、実はSnykでAWSもチェックできるのです。
本記事では、SnykでAWS環境のセキュリティスキャンをしてみたいと思います。
Snykとは
そもそも、Snykとは何なのか。
Snykは SAST(Static Application Security Testing)機能 を持つ製品です。
従来のセキュリティ対策は、リリース直前や運用フェーズで専門チームが実施することが多く、手戻りが大きいという課題がありました。しかし、Snykは**「シフトレフト」**、つまり開発ライフサイクルの早い段階でセキュリティを組み込むことができます!
詳しくはこちらをご確認ください!
SnykとAWSの連携設定していく
IAMロールの作成
各種スキャンを実行する前に、まずSnykにAWSアカウントのリソースを読み取るための権限を付与する必要があります。
Snyk UIでCloudFormationテンプレートをダウンロード
Snykの管理画面にログインし、 [Integrations]
> [Cloud Platforms]
から AWS
を選択します。
設定画面で、CloudFormationのテンプレートをダウンロードします。
このテンプレートには、Snykが必要とする最小限の権限(ECRリポジトリの読み取りなど)が定義されたIAMロールの構成が記述されています。
次に、ダウンロードしたテンプレートを使ってAWS上にIAMロールを作成します。
CloudFormationのサービスページからスタックの作成を行います。
先ほど、ダウンロードしたファイルを読み込ませます。
スタック名を記載し、分かりやすい名前(例: snyk-integration-role-stack
など)を記載し、作成します。
ステータスがCREATE_COMPLETEになるまで1〜2分待ちます。
IAMロールのARNをSnykに登録
作成が完了したスタックの名前(今回は、 snyk-integration-role-stack
)をクリックします。
詳細画面の上部にある「出力」タブを選択します。
「SnykRoleArn
」というキーの横に表示されている値(arn:aws:iam::...
で始まる文字列)をコピーします。
Snykに必要なIAMロールのARNです。
SnykのAWS連携設定画面に戻り、コピーしたARNを貼り付けて保存します。
(任意)Environment name (optional) の欄に、Snyk上で表示するための分かりやすい名前を入力します。
この項目は任意ですが、複数のAWSアカウントをSnykに連携させる場合に設定しておくと、どのアカウントか識別しやすくなります。
※もし空欄のままにした場合は、AWSアカウントに設定されているエイリアス(別名)がSnyk上で自動的に使用されます。
最後に「Approve and begin scan」ボタンをクリックすれば、連携と初回スキャンが開始されます!
スキャン結果を見ていく
Snyk UI上の[Cloud]からスキャン結果を確認できました。
結果の詳細を見てみましょう。(一部)
- 検出された問題(CLOUD ISSUE):結果の概要
- Native ID (ARN):どのAWSリソースに問題があるかを特定するための**一意なID(ARN)**です。
- Type:リソースの種類
- Location:リソースが存在するAWSリージョン
- Severity:深刻度
- ID:Snykが定義しているルールの一意なID(
SNYK-CC-xxxx
)
このIDをクリックすると、なぜこの設定が問題なのか、どのような脅威があるのかといった詳細な解説ドキュメントを読むことができます。
CloudFormationやTerraformでのFix方法や、Resourceの詳細を確認することもできます!
最後に
この記事では、Snyk を利用して AWS 環境のセキュリティスキャンをしてみました。
Snykに関するブログも沢山展開されていますので、是非こちらもご覧ください。
この記事がどなたかのお役に立てば幸いです。
以上、きだぱんでした。