はじめに
Amazon Inspectorの検出結果(脆弱性一覧)をawsコマンドで取得できるか調査していたのですが、そんなことをせずにマネジメントコンソール上で取得できることに気づいたので、やり方を残しておきます。
なぜわざわざ記事にしようと思ったかというと、Inspectorに「ボタンひとつでダウンロード」のような機能が備わっておりません。 代わりに「CSV,JSON形式でS3へ出力する機能」が備わっているのですが、エクスポート時に カスタムキーを設定する必要があったり、キーポリシーに手を加える必要があります。
全体の流れ
- KMSでカスタムキーの作成
- S3の作成、バケットポリシーの設定
- Amazon Inspectorのダッシュボードから出力する
手順
1. KMSでカスタムキーの作成
Inspectorは標準キーが存在しないため、「カスタマー管理型のキー」を作成します。基本デフォルトの設定で良いですが、キーポリシーまわりだけ手を加える必要があります。
「STEP4-アクセス許可」まで進んだ後、AWSServiceRoleForAmazonInspector2
を選択して、キーポリシーの編集画面に遷移します。
Principal
ですが、STEP4で設定した「ロール」が設定されているので、「サービス」に書き換えてください。書き換え後は以下の記述です。
"Service": "inspector2.amazonaws.com"
面倒な方は、以下のキーポリシーを貼り付けてもらってOKです(ご自身のアカウントIDを記述ください)
{
"Version": "2012-10-17",
"Id": "key-consolepolicy-3",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<アカウントID>:root"
},
"Action": "kms:*",
"Resource": "*"
},
{
"Sid": "Allow use of the key",
"Effect": "Allow",
"Principal": {
"Service": "inspector2.amazonaws.com"
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "*"
},
{
"Sid": "Allow attachment of persistent resources",
"Effect": "Allow",
"Principal": {
"Service": "inspector2.amazonaws.com"
},
"Action": [
"kms:CreateGrant",
"kms:ListGrants",
"kms:RevokeGrant"
],
"Resource": "*",
"Condition": {
"Bool": {
"kms:GrantIsForAWSResource": "true"
}
}
}
]
}
カスタムキーの作成は完了です。
2. S3の作成、バケットポリシーの設定
Inspectorが出力するS3バケットを作成しましょう。バケットへのアクセスにInspectorを追加したいため、以下のバケットポリシーを設定してください。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "inspector2.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::<バケット名>/*"
}
]
}
これでInspectorからのアクセスを受け付けることができます。
3. Amazon Inspectorのダッシュボードから出力する
これで事前準備が整いました。早速、Inspectorで検出結果を出力をしてみましょう。
今まで作成してきたものを設定します。(出力対象をフィルタすることもできます)
出力ボタンを押下すると、設定した出力形式でファイルがアップロードされています。
まとめ
Amazon Inspectorを使用して脆弱性の一覧をCSV形式で出力する方法を解説しました。もっといいやり方等あればコメントで教えていただけると幸いです