Security Hubで不要なコントロールを無効化しようとしましたが、「コントロールのARN」が必要でした。 本記事では、Security Hubのコントロールの一覧とARNを取得してみました。
おすすめの方
- Security Hubのコントロールの一覧を取得したい方
- Security HubのコントロールのARNを取得したい方
Security Hubのコントロールの一覧とARNを取得する
DescribeStandardsControls
を使います。
しかし、StandardsSubscriptionArn
とやらの指定が必要なので、先に取得します。
StandardsSubscriptionArnを取得する
GetEnabledStandards
で取得できます。
$ aws securityhub get-enabled-standards
{
"StandardsSubscriptions": [
{
"StandardsSubscriptionArn": "arn:aws:securityhub:ap-northeast-1:123456789012:subscription/cis-aws-foundations-benchmark/v/1.2.0",
"StandardsArn": "arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0",
"StandardsStatus": "READY"
},
{
"StandardsSubscriptionArn": "arn:aws:securityhub:ap-northeast-1:123456789012:subscription/aws-foundational-security-best-practices/v/1.0.0",
"StandardsArn": "arn:aws:securityhub:ap-northeast-1::standards/aws-foundational-security-best-practices/v/1.0.0",
"StandardsStatus": "READY"
}
]
}
2つのStandardsSubscriptionArn
が取得できました。この2つは、次のセキュリティ基準に該当します。
コントロールの一覧を取得する
さきほどのセキュリティ基準それぞれで、コントロールを取得すればOKです。
AWS 基礎セキュリティのベストプラクティス v1.0.0
aws securityhub describe-standards-controls \
--standards-subscription-arn "arn:aws:securityhub:ap-northeast-1:123456789012:subscription/aws-foundational-security-best-practices/v/1.0.0"
CIS AWS Foundations Benchmark v1.2.0
aws securityhub describe-standards-controls \
--standards-subscription-arn "arn:aws:securityhub:ap-northeast-1:123456789012:subscription/cis-aws-foundations-benchmark/v/1.2.0"
必要に応じて、次のように> controls.json
を付与して実行すれば、別のプログラムで結果を扱いやすくなります(JSONのため)。
aws securityhub describe-standards-controls \
--standards-subscription-arn "arn:aws:securityhub:ap-northeast-1:123456789012:subscription/cis-aws-foundations-benchmark/v/1.2.0" \
> controls.json
query指定の参考
特定の情報だけで良い場合は、query
を利用すると便利です。
StandardsControlArnのみ欲しい
$ aws securityhub describe-standards-controls \
--standards-subscription-arn "arn:aws:securityhub:ap-northeast-1:123456789012:subscription/aws-foundational-security-best-practices/v/1.0.0" \
--query 'Controls[*].StandardsControlArn'
[
"arn:aws:securityhub:ap-northeast-1:123456789012:control/aws-foundational-security-best-practices/v/1.0.0/ACM.1",
"arn:aws:securityhub:ap-northeast-1:123456789012:control/aws-foundational-security-best-practices/v/1.0.0/APIGateway.1",
...省略...
]
特定の情報をdict形式で欲しい
$ aws securityhub describe-standards-controls \
--standards-subscription-arn "arn:aws:securityhub:ap-northeast-1:123456789012:subscription/aws-foundational-security-best-practices/v/1.0.0" \
--query 'Controls[*].{ControlId:ControlId,ControlStatus:ControlStatus,SeverityRating:SeverityRating,Title:Title,StandardsControlArn:StandardsControlArn}'
[
{
"ControlId": "ACM.1",
"ControlStatus": "ENABLED",
"SeverityRating": "MEDIUM",
"Title": "Imported and ACM-issued certificates should be renewed after a specified time period",
"StandardsControlArn": "arn:aws:securityhub:ap-northeast-1:123456789012:control/aws-foundational-security-best-practices/v/1.0.0/ACM.1"
},
{
"ControlId": "APIGateway.1",
"ControlStatus": "ENABLED",
"SeverityRating": "MEDIUM",
"Title": "API Gateway REST and WebSocket API execution logging should be enabled",
"StandardsControlArn": "arn:aws:securityhub:ap-northeast-1:123456789012:control/aws-foundational-security-best-practices/v/1.0.0/APIGateway.1"
},
{...省略...}
]
特定の情報をdict形式で欲しい(無効なやつだけ)
$ aws securityhub describe-standards-controls \
--standards-subscription-arn "arn:aws:securityhub:ap-northeast-1:123456789012:subscription/aws-foundational-security-best-practices/v/1.0.0" \
--query 'Controls[?ControlStatus==`DISABLED`].{ControlId:ControlId,ControlStatus:ControlStatus,SeverityRating:SeverityRating,Title:Title,StandardsControlArn:StandardsControlArn}'
[
{
"ControlId": "Account.1",
"ControlStatus": "DISABLED",
"SeverityRating": "MEDIUM",
"Title": "Security contact information should be provided for an AWS account.",
"StandardsControlArn": "arn:aws:securityhub:ap-northeast-1:123456789012:control/aws-foundational-security-best-practices/v/1.0.0/Account.1"
}
]
さいごに
Security Hubでコントロールの一覧を取得してみました。
--query
オプションと併用することで、欲しい情報だけを取得できます。