こんにちは。AWS CLIが好きな福島です。
はじめに
今回は、Config Ruleの情報を取得するコマンドをご紹介いたします。
利用するコマンド,サブコマンド
まず、AWS CLIの構造は以下の通りです。
aws <command> <subcommand> [options and parameters]
上記を前提に今回使う <command>,<subcommand>
は、以下の通りです。
<command>
- configservice
<subcommand>
describe-compliance-by-config-rule
⇒Config Ruleの一覧を確認できます。get-compliance-details-by-config-rule
⇒Config Ruleの詳細を確認できます。
では、ここから実際のコマンドを記載いたします。
describe-compliance-by-config-rule
①ConfigRule名,準拠状況,非準拠のリソース数,上限値
- 実行コマンド
aws configservice describe-compliance-by-config-rule \ --query "ComplianceByConfigRules[].[\ ConfigRuleName,Compliance.ComplianceType,\ Compliance.ComplianceContributorCount.CappedCount,\ Compliance.ComplianceContributorCount.CapExceeded]" \ --output text | column -t
表示が見づらかったため、columnコマンドでタブ区切りで表示しています。
- 実行結果
desired-instance-type NON_COMPLIANT 8 False ec2-managedinstance-applications-required NON_COMPLIANT 2 False securityhub-access-keys-rotated-1492aed1 NON_COMPLIANT 5 False securityhub-acm-certificate-expiration-check-1c825612 NON_COMPLIANT 6 False securityhub-alb-http-drop-invalid-header-enabled-4adede58 INSUFFICIENT_DATA None None securityhub-alb-http-to-https-redirection-check-f6612ba5 INSUFFICIENT_DATA None None securityhub-api-gw-associated-with-waf-2f718f0e NON_COMPLIANT 9 False securityhub-api-gw-cache-encrypted-ec6fd28f INSUFFICIENT_DATA None None securityhub-api-gw-execution-logging-enabled-718bec9a NON_COMPLIANT 9 False
- 補足
上限値とは、非準拠リソース数の上限値のことを指し、上限を超えている場合、Trueとなります。
②非準拠(NON_COMPLIANT)のリソースのみ表示
- 実行コマンド
aws configservice describe-compliance-by-config-rule \ --query "ComplianceByConfigRules[].[\ ConfigRuleName,Compliance.ComplianceType,\ Compliance.ComplianceContributorCount.CappedCount,\ Compliance.ComplianceContributorCount.CapExceeded]" \ --compliance-types NON_COMPLIANT \ --output text | column -t
- 実行結果
desired-instance-type NON_COMPLIANT 8 False ec2-managedinstance-applications-required NON_COMPLIANT 2 False securityhub-access-keys-rotated-1492aed1 NON_COMPLIANT 5 False securityhub-acm-certificate-expiration-check-1c825612 NON_COMPLIANT 6 False securityhub-api-gw-associated-with-waf-2f718f0e NON_COMPLIANT 9 False securityhub-api-gw-execution-logging-enabled-718bec9a NON_COMPLIANT 9 False securityhub-api-gw-ssl-enabled-1db7c328 NON_COMPLIANT 9 False securityhub-api-gw-xray-enabled-d707fc35 NON_COMPLIANT 9 False
get-compliance-details-by-config-rule
①ConfigRule名,リソースタイプ,リソースID,準拠状況,チェック時間
本コマンドを実行するためには、Config Rule名を引数に指定する必要があるため、事前に環境変数を定義します。
- 実行例
CONFIG_RULE_NAME="securityhub-mfa-enabled-for-iam-console-access-0b3d825b"
- 実行コマンド
aws configservice get-compliance-details-by-config-rule \ --config-rule-name $CONFIG_RULE_NAME \ --query "EvaluationResults[].[\ EvaluationResultIdentifier.EvaluationResultQualifier.ConfigRuleName,\ EvaluationResultIdentifier.EvaluationResultQualifier.ResourceType,\ EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId,ComplianceType,\ ConfigRuleInvokedTime]" \ --output text
- 実行結果
securityhub-mfa-enabled-for-iam-console-access-0b3d825b AWS::IAM::User AIDAT6MJ7L4PS3UWCLULX COMPLIANT 2021-10-18T11:58:03.670000+09:00 securityhub-mfa-enabled-for-iam-console-access-0b3d825b AWS::IAM::User AIDAT6MJ7L4P6RCJASE4F NON_COMPLIANT 2021-10-18T11:58:03.670000+09:00 securityhub-mfa-enabled-for-iam-console-access-0b3d825b AWS::IAM::User AIDAT6MJ7L4PRN37VSHPL NON_COMPLIANT 2021-10-18T11:58:03.670000+09:00 securityhub-mfa-enabled-for-iam-console-access-0b3d825b AWS::IAM::User AIDAT6MJ7L4PXYE7XLVXV NON_COMPLIANT 2021-10-18T11:58:03.670000+09:00
②全ConfigRuleの①
上記①では事前にConfigRuleを定義しましたが、②は事前定義不要です。
- 実行コマンド
aws configservice describe-compliance-by-config-rule --query "ComplianceByConfigRules[].[ConfigRuleName]" --output text | while read line do aws configservice get-compliance-details-by-config-rule \ --config-rule-name $line \ --query "EvaluationResults[].\ [EvaluationResultIdentifier.EvaluationResultQualifier.ConfigRuleName,\ EvaluationResultIdentifier.EvaluationResultQualifier.ResourceType,\ EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId,\ ComplianceType,\ ConfigRuleInvokedTime]" \ --output text done
- 実行結果
desired-instance-type AWS::EC2::Instance i-0b56103f063dfd717 NON_COMPLIANT 2021-09-23T16:45:28.118000+09:00 desired-instance-type AWS::EC2::Instance i-0f6126b7aeedfabd6 NON_COMPLIANT 2021-07-16T15:01:25.949000+09:00 ec2-managedinstance-applications-required AWS::SSM::ManagedInstanceInventory i-06703f886cc49c540 NON_COMPLIANT 2021-09-14T14:54:10.400000+09:00 ec2-managedinstance-applications-required AWS::SSM::ManagedInstanceInventory i-0808672558492fde8 NON_COMPLIANT 2021-10-01T19:07:29.155000+09:00 securityhub-access-keys-rotated-1492aed1 AWS::IAM::User AIDAT6MJ7L4P6FECH7VVF COMPLIANT 2021-10-18T11:58:03.011000+09:00 securityhub-access-keys-rotated-1492aed1 AWS::IAM::User AIDAT6MJ7L4P6RCJASE4F COMPLIANT 2021-10-18T11:58:03.011000+09:00 securityhub-access-keys-rotated-1492aed1 AWS::IAM::User AIDAT6MJ7L4PR5JPPJPWG COMPLIANT 2021-10-18T11:58:03.011000+09:00 securityhub-access-keys-rotated-1492aed1 AWS::IAM::User AIDAT6MJ7L4PRN37VSHPL COMPLIANT 2021-10-18T11:58:03.011000+09:00
終わりに
今回は、Config Ruleの情報を取得するコマンドをご紹介いたしました。 Config Ruleが増えてくるとマネジメントコンソールからでは確認が大変なため、ぜひ使っていただけますと幸いです。