![[アップデート] Amazon Inspector でアプリケーションと IaC コードの静的解析がサポートされました #AWSreInforce](https://images.ctfassets.net/ct0aopd36mqt/6vZd9zWZvlqOEDztYoZCro/7349aaad8d597f1c84ffd519d0968d43/eyecatch_awsreinforce2025_1200x630-crunch.png)
[アップデート] Amazon Inspector でアプリケーションと IaC コードの静的解析がサポートされました #AWSreInforce
こんにちは!クラウド事業本部コンサルティング部のたかくに(@takakuni_)です。
Amazon Inspector でコードの静的解析がサポートされました。かなり大きなアップデートのように思えます。
アップデート内容
今まで Amazon Inspector では SCA(Software Composition Analysis)と呼ばれる、ソフトウェアのライブラリに含まれる脆弱性検査をサポートされていました。
ソフトウェア開発におけるセキュリティチェック手法には、他にも SAST (Static Application Security Testing) と呼ばれる、コードの静的解析があるのですが、こちらについては Amazon CodeGuru Security でサポートされており使い分けが必要な状況でした。
今回のアップデートで Inspector でも SAST および IaC コードの静的解析をサポートし、一元管理できるようになりました。
SCM との統合
アップデートのタイトルに「Amazon Inspector launches code security to shift security left in development」とある通り、shift security left
が今回のアップデートの推しポイントです。
GitHub SaaS, GitHub Enterprise Cloud, GitLab Self Managed といった、SCM と統合しコードのプッシュが発生したタイミングで、チェックが行われる仕組みになっています。デプロイ前にチェックできるのは非常に嬉しいですね。
Integrations with GitHub SaaS, GitHub Enterprise Cloud, and GitHub Enterprise Server require public internet access.
対象言語
サポートされている言語は以下のとおりです。
Supported languages for SAST
- C# (all versions but .Net 6.0 and later is recommended)
- C (C11 or earlier)
- C++ (C++ 17 or earlier)
- Go (Go 1.18 only)
- Java (Java 17 or earlier)
- JavaScript (EMCMAScript 2021 or earlier)
- JSX (React 17 or earlier)
- Kotlin (Kotlin 2.0 or earlier)
- PHP (PHP 8.2 or earlier)
- Python (Python 3.11 or earlier within the Python 3 series)
- Ruby (Ruby 2.7 and 3.2 only)
- Rust
- Scala (Scala 3.2.2 or earlier)
- Shell
- TSX
- TypeScript (all versions)
Languages for Infrastructure as Code
- AWS CDK (Python and TypeScript)
- AWS CloudFormation (2010–09–09)
- Terraform (1.6.2 or earlier)
Amazon CodeGuru Security と同じのようです。(Amazon CodeGuru Security はどうなるのでしょうか。)
そのため、デプロイ前のチェックは Amazon Inspector, デプロイ中(パイプライン)でのチェックは CodeGuru Security (SAST), Inspector Scan (SCA) の使い分けが想定されますね。
やってみた
それでは実際に Amazon Inspector の Code Security 機能を利用して、シフトレフトな解析を行ってみます。
Account management
Code Security をアカウントで利用できるよう有効化します。Account management から Activate を選択し、 Code repository scanning を選択し、 Submit をクリックします。
数秒まつと、Code repository scanning が Activated
になりました。
GitHub への接続
Code security をクリックし Connect to から GitHub をクリックします。
すると、Configuration の画面に遷移します。今回はデフォルトの設定でいきます。
続いて、統合名を聞かれます。任意の名前で OK です。
GitHub へ認証リンクが発行されますのでリンクを踏んで、統合します。
うまくいけば統合が作成され、GitHub Apps の作成画面に移ります。Install a new app を選択します。
リージョン別に GitHub Apps が作成されるため、Authorize します。
認証および、リポジトリへのインストールが完了すると、次のように Active および Configured に変化します。
スキャンさせてみる
スキャンはオンデマンドスキャン、定期スキャン、コミット、PR 作成時のスキャンと、いろんなケースでスキャンができます。
定期スキャン、コミット、PR 作成時のスキャンに関しては先ほどの Configurations で指定します。
※ なぜか、初回スキャンはオンデマンドスキャンができず、コミットすると動くようになりました。
脆弱性があるコードを、いくつかアップロードしてみました。
すると、短い時間(おそらくコード量に比例)でスキャン結果が現れました。
赤枠のように重要度は Critical, High, Medium の 3 段階のようです。
Findings をみてみましょう。私が書いたコードの、どのファイルのどの部分が脆弱なのか記載があります。
次のようにリコメンドがありました。
Why are we recommending the following fix?
It appears your code may contain a hardcoded secret. We recommend replacing it with AWS Secrets Manager references to enhance security and follow best practices. For more information, please refer OWASP password storage cheat sheet .
この機能の良いところはリポジトリ内の SAST, SCA, IaC の項目が丸っと見られる部分です。次のように Package Vulnerability
と Code Vulnerability
も表示されていました。
Package Vulnerability
Code Vulnerability
もちろん、フィルターもできます。
注意事項
最後に注意事項です。
Code Scan は各リポジトリのデフォルトブランチのみをチェックします。そのためデフォルトブランチのライフサイクルにあわせて、Scan configuration を設定いただくのが良いかと思います。
Code Security only imports up to 100,000 projects, and only the default branch for each repository is monitored. A project can be associated with a maximum of three default scan configurations.
コスト
執筆時点で Inspector v2 の料金表に Code repository scans の記載はあるものの、具体的な価格は明記されていなさそうでした。
以下の URL を踏んで料金表を取得すると、"APN1-Code-Repository-Scan-SCA"
, "APN1-Code-Repository-Scan-IaC"
, "APN1-Code-Repository-Scan-SAST"
の項目を見つけることができました。
https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonInspectorV2/current/ap-northeast-1/index.json
以下のように Resource-assessment と呼ばれる単位で 0.18 USD 発生するようです。(リージョンによって異なるようで USW2 は 0.15 USD でした。)
"MP3EQZK3Y795BAES" : {
"MP3EQZK3Y795BAES.JRTCKXETXF" : {
"offerTermCode" : "JRTCKXETXF",
"sku" : "MP3EQZK3Y795BAES",
"effectiveDate" : "2025-06-01T00:00:00Z",
"priceDimensions" : {
"MP3EQZK3Y795BAES.JRTCKXETXF.6YS6EN2CT7" : {
"rateCode" : "MP3EQZK3Y795BAES.JRTCKXETXF.6YS6EN2CT7",
"description" : "$0.18 per Resource-assessment for APN1-Code-Repository-Scan-SCA in Asia Pacific (Tokyo)",
"beginRange" : "0",
"endRange" : "Inf",
"unit" : "Resource-assessment",
"pricePerUnit" : {
"USD" : "0.1800000000"
},
"appliesTo" : [ ]
}
},
"termAttributes" : { }
}
},
"FX5FYSCBXXQ9GVHD" : {
"FX5FYSCBXXQ9GVHD.JRTCKXETXF" : {
"offerTermCode" : "JRTCKXETXF",
"sku" : "FX5FYSCBXXQ9GVHD",
"effectiveDate" : "2025-06-01T00:00:00Z",
"priceDimensions" : {
"FX5FYSCBXXQ9GVHD.JRTCKXETXF.6YS6EN2CT7" : {
"rateCode" : "FX5FYSCBXXQ9GVHD.JRTCKXETXF.6YS6EN2CT7",
"description" : "$0.18 per Resource-assessment for APN1-Code-Repository-Scan-IaC in Asia Pacific (Tokyo)",
"beginRange" : "0",
"endRange" : "Inf",
"unit" : "Resource-assessment",
"pricePerUnit" : {
"USD" : "0.1800000000"
},
"appliesTo" : [ ]
}
},
"termAttributes" : { }
}
},
"DN84Q9K2KSPPTB5H" : {
"DN84Q9K2KSPPTB5H.JRTCKXETXF" : {
"offerTermCode" : "JRTCKXETXF",
"sku" : "DN84Q9K2KSPPTB5H",
"effectiveDate" : "2025-06-01T00:00:00Z",
"priceDimensions" : {
"DN84Q9K2KSPPTB5H.JRTCKXETXF.6YS6EN2CT7" : {
"rateCode" : "DN84Q9K2KSPPTB5H.JRTCKXETXF.6YS6EN2CT7",
"description" : "$0.18 per Resource-assessment for APN1-Code-Repository-Scan-SAST in Asia Pacific (Tokyo)",
"beginRange" : "0",
"endRange" : "Inf",
"unit" : "Resource-assessment",
"pricePerUnit" : {
"USD" : "0.1800000000"
},
"appliesTo" : [ ]
}
},
"termAttributes" : { }
}
},
続報あり次第更新します。
まとめ
以上、「Amazon Inspector でアプリケーションと IaC コードの静的解析がサポートされました」でした。
シフトレフトスキャンにおいて、選択肢の候補になってきたのではないでしょうか。DAST もサポートされ始めたらイヨイヨですね。
クラウド事業本部コンサルティング部のたかくに(@takakuni_)でした!