AWS Config 使い始めてNon Compliant な情報を定期的に自動チェックしたいと思い始めたのでメモ。
JAWS 2019 でもAWS CLI の --query 薦めてたしここは一つjq使わずawsコマンドだけで行く方向で。
設定ルール全体での準拠状況を確認する
AWS Config ダッシュボードの "設定ルールのコンプライアンス" に相当するやつですね
$ aws configservice get-compliance-summary-by-config-rule
{
"ComplianceSummary": {
"NonCompliantResourceCount": {
"CappedCount": 2,
"CapExceeded": false
},
"ComplianceSummaryTimestamp": 1553131869.997,
"CompliantResourceCount": {
"CappedCount": 8,
"CapExceeded": false
:
リソース全体での準拠状況を確認する
同じくダッシュボードの "リソースのコンプライアンス" に相当するやつ
$ aws configservice get-compliance-summary-by-resource-type
{
"ComplianceSummariesByResourceType": [
{
"ComplianceSummary": {
"NonCompliantResourceCount": {
"CappedCount": 18,
"CapExceeded": false
},
"ComplianceSummaryTimestamp": 1553131954.779,
"CompliantResourceCount": {
"CappedCount": 40,
"CapExceeded": false
:
各ルール単位での準拠状況を確認する
get-compliance-details-by-config-rule はルール指定が必要ぽいので
ルール ec2-instance-managed-by-systems-manager の状況を確認してみます
ついでに --query でInstanceIDと準拠情報だけ抽出
$ aws configservice get-compliance-details-by-config-rule --config-rule-name ec2-instance-managed-by-systems-manager \
--query 'EvaluationResults[].{InstanceID:EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId,ComplianceType:ComplianceType}'
[
{
"InstanceID": "i-0103ccxxxxx",
"ComplianceType": "COMPLIANT"
},
{
"InstanceID": "i-0facf2xxxxxx",
"ComplianceType": "NON_COMPLIANT"
:
各リソース単位での準拠状況を確認する
こちらは一覧で出せるようなのでずらっと
$ aws configservice describe-compliance-by-resource \
--query 'ComplianceByResources[].{ResourceID:ResourceId,ComplianceType:Compliance.ComplianceType}'
[
{
"ResourceID": "XXX_Audit",
"ComplianceType": "COMPLIANT"
},
{
"ResourceID": "i-0facf2xxxxxx",
"ComplianceType": "NON_COMPLIANT"
},
:
NON_COMPLIANTだけを抽出するならこんな感じ
ComplianceType を検索条件に入れて非準拠なResourceIDだけをリスト。
これを定期的にSlackに打ち上げれば確認の手間がだいぶ省けそうですね
$ aws configservice describe-compliance-by-resource --query \
'ComplianceByResources[?Compliance.ComplianceType==`NON_COMPLIANT`].{ResourceID:ResourceId,ComplianceType:Compliance.ComplianceType}'
[
{
"ResourceID": "vol-0029b47xxxxx",
"ComplianceType": "NON_COMPLIANT"
},
{
"ResourceID": "vol-00fff2xxxxx",
"ComplianceType": "NON_COMPLIANT"
:
みなさんのAWS Config 運用のお役に立てば幸いです。