
Security Hubでコントロールの一覧とARNを取得する
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
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オプションと併用することで、欲しい情報だけを取得できます。











