LoginSignup
1
0

More than 5 years have passed since last update.

aws configservice で --query したメモ

Last updated at Posted at 2019-03-21

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 運用のお役に立てば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0