Amazon InspectorでSBOMエクスポートができるようになりました
Amazon InspectorでSBOMエクスポートができるようになったので、検証してみました。
SBOM(Software Bill of Materials、ソフトウェア部品表)とは、ソフトウェアを構成するコンポーネントや互いの依存関係、ライセンスデータなどをリスト化した一覧表であり、ソフトウェアサプライチェーンのリスク管理等に利用されます。
アップデート概要
- Amazon Inspectorで監視されているすべてのリソースのSBOMを、CycloneDxやSPDXなどの業界標準形式でエクスポート可能
- ソフトウェアパッケージに関する詳細と、関連する脆弱性情報が含まれている
検証
事前準備
Inspectorのメニューに「Export SBOMs」があります。
SBOMに脆弱性情報を含ませるため、マーケットプレイスから古いAMIを取得し、EC2インスタンスを起動します。
202個の脆弱性が検知されました。
出力先のS3バケットとKMSキーを用意します。
S3バケットとKMSキーのポリシーが適切に設定されていないとエラーになるので、以下のドキュメントを参考に設定します。
バケットポリシー
{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-inspector", "Effect": "Allow", "Principal": { "Service": "inspector2.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::<S3バケット名>/*", "Condition": { "StringEquals": { "aws:SourceAccount": "<AWSアカウントID>" }, "ArnLike": { "aws:SourceArn": "arn:aws:inspector2:<リージョン>:<AWSアカウントID>:report/*" } } } ] }
KMSキーポリシー
{ "Sid": "Allow Amazon Inspector to use the key", "Effect": "Allow", "Principal": { "Service": "inspector2.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "<AWSアカウントID>" }, "ArnLike": { "aws:SourceArn": "arn:aws:inspector2:<リージョン>:<AWSアカウントID>:report/*" } } }
SBOMをエクスポートする
「Export SBOMs」に戻り、エクスポートの設定を行います。
「Add filter」でエクスポート対象を選択することができます。
利用できるフィルターは以下ドキュメントで確認できます。
今回はタグを使って、先ほどのEC2インスタンスを選択します。
事前準備で作成したS3バケットとKMSキーを選択し、「Export」を押下します。
エクスポートが始まります。
数分後にエクスポートが完了します。
S3バケットにSBOMが出力されました。
ファイルを確認します。
EC2インスタンスの情報から、ソフトウェア情報と検知された脆弱性情報が分かります。
{ "bomFormat": "CycloneDX", "specVersion": "1.4", "version": 1, "metadata": { "timestamp": "2023-06-25T02:34:37Z", "component": { "type": "operating-system", "name": "AMAZON_LINUX_2" }, "properties": [ { "name": "amazon:inspector:ami", "value": "ami-xxxxxxxxxxxx" }, { "name": "amazon:inspector:arch", "value": "x86_64" }, { "name": "amazon:inspector:account_id", "value": "xxxxxxxxxxxx" }, { "name": "amazon:inspector:resource_type", "value": "AWS_EC2_INSTANCE" }, { "name": "amazon:inspector:instance_id", "value": "i-xxxxxxxxxxxx" }, { "name": "amazon:inspector:resource_arn", "value": "arn:aws:ec2:ap-northeast-1:xxxxxxxxxxxx:instance/i-xxxxxxxxxxxx" } ] }, "components": [ { "type": "application", "name": "elfutils-libelf", "purl": "pkg:rpm/elfutils-libelf@0.176-2.amzn2?arch=X86_64&epoch=0&upstream=elfutils-libelf-0.176-2.amzn2.src.rpm", "version": "0.176", "bom-ref": "ddf56a513c0e76ab2ae3246d9a91c463" }, { "type": "application", "name": "libffi", "purl": "pkg:rpm/libffi@3.0.13-18.amzn2.0.2?arch=X86_64&epoch=0&upstream=libffi-3.0.13-18.amzn2.0.2.src.rpm", "version": "3.0.13", "bom-ref": "7815cd0f8a2522a9c1bfa22c7c75e0d5" }, (省略) "vulnerabilities": [ { "id": "CVE-2022-40304", "affects": [ { "ref": "d767c0d05ad199c30aa487f4c139fc94" }, { "ref": "1ec2a0f3c6035ce88b5256faa942a09d" } ] }, { "id": "CVE-2022-32221", "affects": [ { "ref": "49a798c08887e728538e676d0702a3d8" }, { "ref": "4b5db358ca74293f49fb57d2a0bef249" } ] }, ] }
エクスポートされたファイルに含まれる脆弱性の数が、Inspectorで確認したものと一致するか確認しておきます。
下記のコマンドで202個という結果なので、一致しています。
$ aws s3 cp s3://test-sbom-export-bucket/CYCLONEDX_1_4_outputs_xxxxxxxxxxxx/account=xxxxxxxxxxxx/resource=AWS_EC2_INSTANCE/i-xxxxxxxxxxxx_CYCLONEDX_1_4.json - | jq '.vulnerabilities[].id' | wc -l 202
まとめ
Amazon InspectorのSBOMエクスポート機能を確認しました。
脆弱性情報だけでなく、ソフトウェアパッケージの構成情報まで出力できるようになり、Inspectorの幅が一気に広がりました。
昨今のソフトウェア構成の複雑化により、SBOMの重要性がさらに増しているので、脆弱性管理の一貫としてぜひ活用してみてください。