1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amazon InspectorからSBOMを出力する

Last updated at Posted at 2024-11-10

概要

Amazon Inspectorを有効化してから、EC2スキャン結果に対するSBOMエクスポートまでの流れを備忘録として書き起こす。

前提

  • EC2インスタンス
    • Amazon Linux 2023 (al2023-ami-2023.6.20241031.0-kernel-6.1-x86_64)

公式

手順

Amazon Inspectorの有効化

ナビゲーションペインから「Inspectorをアクティブ化」を選択

image.png

「Inspectorをアクティブ化」を押下

image.png

SBOM出力用S3バケットの作成

  • S3バケットのリージョンとInspectorのリージョンは同じであること(同じじゃないとエラーになる)
  • 公式が提供するバケットポリシーのサンプルは以下の通り
    {
    	"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:::amzn-s3-demo-bucket/*",
    			"Condition": {
    				"StringEquals": {
    					"aws:SourceAccount": "111122223333"
    				},
    				"ArnLike": {
    					"aws:SourceArn": "arn:aws:inspector2:Region:111122223333:report/*"
    				}
    			}
    		}
    	]
    }
    

出力レポートの暗号化用のKMSキーの作成

  • KMSのリージョンはInspectorのリージョンと同じであること(同じじゃないと選択できない)
  • 公式が提供するキーポリシーのサンプルは以下の通り
    {
    	"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:::amzn-s3-demo-bucket/*",
    			"Condition": {
    				"StringEquals": {
    					"aws:SourceAccount": "111122223333"
    				},
    				"ArnLike": {
    					"aws:SourceArn": "arn:aws:inspector2:Region:111122223333:report/*"
    				}
    			}
    		}
    	]
    }
    

出力

ナビゲーションペインから「Export SBOMs」を選択

  • ファイルタイプ:SBOMのフォーマットを「CycloneDX」「SPDX」のどちらかを選択。詳細は「ソフトウェア管理に向けたSBOM(Software Bill of Materials)の導入に関する手引ver2.0」を参照。https://www.meti.go.jp/press/2024/08/20240829001/20240829001-1r.pdf
  • S3 URI:作成したS3バケット
  • KMS key:作成したKMSキー
    image.png

出力結果

  • CycloneDXで出力
  • 2分後、指定したS3バケットにjsonファイルが出力された
  • オブジェクトは、指定したKMSキーで暗号化してあった (SSE-KMS)

出力内容

  • CycloneDX(v1.4)のデータレファレンス:https://cyclonedx.org/docs/1.4/json/
  • Inspectorが出力するSBOM(CycloneDX)の構造は以下の通り
    {
    	"bomFormat": "CycloneDX",
    	"specVersion": "1.4",
    	"version": 1,
    	"metadata": {
    		"timestamp": "",
    		"component": {},
    		"properties": []
    	},
    	"components": [],
    	"vulnerabilities": []
    }
    

metadata

  • timestamp:生成時刻
  • component:BOMが表現するコンポーネント
    "component": {
        "type": "operating-system",
        "name": "AMAZON_LINUX_2023",
        "version": "6.1.112-124.190.amzn2023.x86_64"
    }
    
  • properties:key-value形式で設定できるプロパティ。Inspectorの場合は、スキャン対象のリソース情報(今回は、Inspector EC2スキャン対象のEC2インスタンス)を入れているようだ。
    "properties": [
        {
            "name": "amazon:inspector:ami",
            "value": "ami-066a7fbea5161f451"
        },
        {
            "name": "amazon:inspector:arch",
            "value": "x86_64"
        },
        {
            "name": "amazon:inspector:account_id",
            "value": <AWSアカウント番号>
        },
        {
            "name": "amazon:inspector:resource_type",
            "value": "AWS_EC2_INSTANCE"
        },
        {
            "name": "amazon:inspector:instance_id",
            "value": <EC2インスタンスID>
        },
        {
            "name": "amazon:inspector:resource_arn",
            "value": "arn:aws:ec2:us-west-2:<AWSアカウントの番号>:instance/<EC2インスタンスID>"
        }
    ]
    

components

  • ソフトウェアコンポーネントの列挙
    • type:コンポーネントタイプ (rpmのものはapplication、pypiのものはlibraryに区分されていた)
    • name:コンポーネント名
    • purl:パッケージURL(qualifiersとして、archやepoch、upstreamが指定されていた)
    • version:コンポーネントバージョン
    • bom-ref:レファレンス用の識別子
    "components": [
        {
            "type": "application",
            "name": "libedit",
            "purl": "pkg:rpm/libedit@3.1-38.20210714cvs.amzn2023.0.2?arch=X86_64&epoch=0&upstream=libedit-3.1-38.20210714cvs.amzn2023.0.2.src.rpm",
            "version": "3.1",
            "bom-ref": "40853ebb7fa05c9370e08063b4fd6e94"
        },(以下省略)
    ]
    
  • コンポーネントの照合
    • rpmパッケージ:出力したSBOM内には471件あったが、「rpm -qa」を叩いたら476件あった。どのコンポーネントが抜けていたかまでは特定してない。そのうち調べる。
    • pypiパッケージ:出力したSBOM内には11件あった。デフォルトで「/usr/lib/python3.9/site-packages/」に配置されているパッケージが読み取られた。

vulnerabilities

  • 最新のAmazon Linux 2023で試したので、今回は脆弱性数0でした。今後、脆弱性が検出されたら、追記します。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?