

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AMS 予防的コントロールと検出的コントロールライブラリ
<a name="scp-library"></a>

AWS Managed Services (AMS) は、実証済みのサービスコントロールポリシー (SCPs) と ConfigRules の厳選されたライブラリ/カタログを提供します。これらは、セキュリティ体制を改善し、AMS アカウントのコンプライアンスギャップを軽減するために活用できます。

**Topics**
+ [厳選された SCPs と Config ルール](scp-library-compliance.md)
+ [Config ルールのカスタム通知](scp-lib-custom-notice.md)

# 厳選された SCPs と Config ルール
<a name="scp-library-compliance"></a>

AMS Advanced の厳選された SCPs と Config ルール。
+ **サービスコントロールポリシー (SCPs)**: 提供される SCPsは、デフォルトの AMS ポリシーに追加されます。

  これらのライブラリコントロールをデフォルトのコントロールと組み合わせて使用して、特定のセキュリティ要件を満たすことができます。
+ **Config ルール**: ベースラインメジャーとして、AMS では、デフォルトの AMS 設定ルール (デフォルトのルールについては AMS アーティファクトを参照) に加えて、コンフォーマンスパック ( AWS Config ガイドの[「コンフォーマンスパック](https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html)」を参照) を適用することをお勧めします。コンフォーマンスパックはコンプライアンス要件の大部分をカバーし、AWS は定期的に更新します。

  ここに記載されているルールは、コンフォーマンスパックでカバーされていないユースケース固有のギャップをカバーするために使用できます。

**注記**  
AMS のデフォルトのルールとコンフォーマンスパックが時間の経過とともに更新されると、これらのルールが重複することがあります。  
AMS では、一般的に重複する Config ルールを定期的にクリーンアップすることをお勧めします。  
AMS Advanced の場合、out-of-band変更を避けるため、Config ルールは自動修正 ([「AWS Config ルールによる非準拠 AWS リソースの修正」を参照](https://docs.aws.amazon.com/config/latest/developerguide/remediation.html)) を使用しないでください。

## SCP-AMS-001: EBS の作成を制限する
<a name="scp-ebs-create"></a>

暗号化が有効になっていない場合は、EBS ボリュームの作成を防止します。

```
{
      "Condition": {
        "Bool": {
          "ec2:Encrypted": "false"
        }
      },
      "Action": "ec2:CreateVolume",
      "Resource": "*",
      "Effect": "Deny"
    }
```

## SCP-AMS-002: EC2 起動を制限する
<a name="scp-ec2-launch"></a>

EBS ボリュームが暗号化されていない場合、EC2 インスタンスの起動を防止します。これには、暗号化されていない AMIs からの EC2 起動の拒否も含まれます。この SCP はルートボリュームにも適用されるためです。

```
{
      "Condition": {
        "Bool": {
          "ec2:Encrypted": "false"
        }
      },
      "Action": "ec2:RunInstances",
      "Resource": "arn:aws:ec2:*:*:volume/*",
      "Effect": "Deny"
    }
```

## SCP-ADV-001: RFC 送信を制限する
<a name="scp-restrict-rfcs"></a>

デフォルトの AMS ロールが、VPC **の作成や VPC** **の削除**など、特定の自動 RFCs を送信しないように制限します。これは、フェデレーティッドロールにより詳細なアクセス許可を適用する場合に便利です。

例えば、VPC の作成と削除、追加のサブネットの作成、アプリケーションアカウントのオフボーディング、SAML ID プロバイダーの更新または削除を許可するものを除き、使用可能な RFCs のほとんどをデフォルトで送信`AWSManagedServicesChangeManagement Role`できます。

## SCP-AMS-003: AMS での EC2 または RDS の作成を制限する
<a name="scp-restrict-ec2-rds-creation"></a>

特定のタグを持たない Amazon EC2 および RDS インスタンスの作成を防止し、AMS デフォルト`AMS Backup IAM`ロールに許可します。これはディザスタリカバリまたは DR に必要です。

```
{
    "Sid": "DenyRunInstanceWithNoOrganizationTag",
    "Effect": "Deny",
    "Action": [
        "ec2:RunInstances",
        "rds:CreateDBInstance"
    ],
    "Resource": [
        "arn:aws:ec2:*:*:instance/*",
        "arn:aws:ec2:*:*:volume/*",
        "arn:aws:rds:*:*:db:*"
    ],
    "Condition": {
        "Null": {
            "aws:RequestTag/organization": "true"
        },
        "StringNotLike": {
            "aws:PrincipalArn": [
                "arn:aws:iam::<Account_Number>:role/ams-backup-iam-role"
            ]
        }
    }
}
```

## SCP-AMS-004: S3 アップロードを制限する
<a name="scp-prevent-s3-uploads"></a>

暗号化されていない S3 オブジェクトのアップロードを防止します。

```
{
            "Sid": "DenyUnencryptedS3Uploads",
            "Effect": "Deny",
            "Action": "s3:PutObject",
            "Resource": "*",
            "Condition": {
                "StringNotLike": {
                    "s3:x-amz-server-side-encryption": ["aws:kms", "AES256"]
                },
                "Null": {
                    "s3:x-amz-server-side-encryption": "false"
                }
            }
        }
    ]
}
```

## SCP-AMS-005: API とコンソールへのアクセスを制限する
<a name="scp-prevent-access"></a>

顧客の InfoSec が判断した既知の不正な IP アドレスからのリクエストに対する AWS コンソールと API アクセスを防止します。

## SCP-AMS-006: IAM エンティティが組織からメンバーアカウントを削除できないようにする
<a name="scp-prevent-iam-entity"></a>

 AWS Identity and Access Management エンティティが組織からメンバーアカウントを削除しないようにします。

```
{
  "Effect": "Deny",
  "Action": ["organizations:LeaveOrganization"],
  "Resource": ["*"]
}
```

## SCP-AMS-007: 組織外のアカウントへのリソースの共有を禁止する
<a name="scp-prevent-sharing-resources"></a>

 AWS 組織外の外部アカウントとのリソースの共有を禁止する

```
  {
    "Effect": "Deny",
    "Action": [
      "ram:*"
    ],
    "Resource": [
      "*"
    ],
    "Condition": {
      "Bool": {
        "ram:AllowsExternalPrincipals": "true"
      }
    }
  },
  {
    "Effect": "Deny",
    "Action": [
      "ram:CreateResourceShare",
      "ram:UpdateResourceShare"
    ],
    "Resource": "*",
    "Condition": {
      "Bool": {
        "ram:RequestedAllowsExternalPrincipals": "true"
      }
    }
  }
```

## SCP-AMS-008: 組織または組織単位 (OUsとの共有を禁止する
<a name="scp-prevent-sharing-with-organizations"></a>

組織内のアカウントや OU とリソースを共有しないようにします。

```
{
  "Effect": "Deny",
  "Action": [
    "ram:CreateResourceShare",
    "ram:AssociateResourceShare"
  ],
  "Resource": "*",
  "Condition": {
    "ForAnyValue:StringLike": {
      "ram:Principal": [
        "arn:aws:organizations::*:account/o-${OrganizationId}/${AccountId}",
        "arn:aws:organizations::*:ou/o-${OrganizationId}/ou-${OrganizationalUnitId}"
      ]
    }
  }
}
```

## SCP-AMS-009: ユーザーがリソース共有の招待を受け入れないようにする
<a name="scp-prevent-resource-share-acceptance"></a>

メンバーアカウントが からの招待を受け入れ AWS RAM てリソース共有に参加できないようにします。この API は条件をサポートしておらず、外部アカウントからの共有のみを防ぎます。

```
{
  "Effect": "Deny",
  "Action": ["ram:AcceptResourceShareInvitation"],
  "Resource": ["*"]
}
```

## SCP-AMS-010: アカウントリージョンのアクションの有効化と無効化を禁止する
<a name="scp-prevent-account-region-enable-disable"></a>

 AWS アカウントの新しい AWS リージョンを有効または無効にしないようにします。

```
{
  "Effect": "Deny",
  "Action": [
    "account:EnableRegion",
    "account:DisableRegion"
  ],
  "Resource": "*"
}
```

## SCP-AMS-011: 請求変更アクションの防止
<a name="scp-prevent-billing-modification"></a>

請求および支払い設定の変更を防止します。

```
{
  "Effect": "Deny",
  "Action": [
    "aws-portal:ModifyBilling",
    "aws-portal:ModifyAccount",
    "aws-portal:ModifyPaymentMethods"
  ],
  "Resource": "*"
}
```

## SCP-AMS-012: 特定の CloudTrails の削除または変更を防止する
<a name="scp-prevent-cloudtrail-modification"></a>

特定の AWS CloudTrail 証跡への変更を防止します。

```
{
  "Effect": "Deny",
  "Action": [
    "cloudtrail:DeleteEventDataStore",
    "cloudtrail:DeleteTrail",
    "cloudtrail:PutEventSelectors",
    "cloudtrail:PutInsightSelectors",
    "cloudtrail:UpdateEventDataStore",
    "cloudtrail:UpdateTrail",
    "cloudtrail:StopLogging"
  ],
  "Resource": [
    "arn:${Partition}:cloudtrail:${Region}:${Account}:trail/${TrailName}"
  ]
}
```

## SCP-AMS-013: デフォルトの EBS 暗号化の無効化を禁止する
<a name="scp-prevent-disable-ebs-encryption"></a>

デフォルトの Amazon EBS 暗号化の無効化を防止します。

```
{
  "Effect": "Deny",
  "Action": [
    "ec2:DisableEbsEncryptionByDefault"
  ],
  "Resource": "*"
}
```

## SCP-AMS-014: デフォルトの VPC とサブネットの作成を禁止する
<a name="scp-prevent-default-vpc-subnet-creation"></a>

デフォルトの Amazon VPC とサブネットの作成を防止します。

```
{
  "Effect": "Deny",
  "Action": [
    "ec2:CreateDefaultSubnet",
    "ec2:CreateDefaultVpc"
  ],
  "Resource": "*"
}
```

## SCP-AMS-015: GuardDuty の無効化と変更を禁止する
<a name="scp-prevent-default-vpc-subnet-creation"></a>

Amazon GuardDuty が変更または無効化されないようにします。

```
{
  "Effect": "Deny",
  "Action": [
    "guardduty:AcceptInvitation",
    "guardduty:ArchiveFindings",
    "guardduty:CreateDetector",
    "guardduty:CreateFilter",
    "guardduty:CreateIPSet",
    "guardduty:CreateMembers",
    "guardduty:CreatePublishingDestination",
    "guardduty:CreateSampleFindings",
    "guardduty:CreateThreatIntelSet",
    "guardduty:DeclineInvitations",
    "guardduty:DeleteDetector",
    "guardduty:DeleteFilter",
    "guardduty:DeleteInvitations",
    "guardduty:DeleteIPSet",
    "guardduty:DeleteMembers",
    "guardduty:DeletePublishingDestination",
    "guardduty:DeleteThreatIntelSet",
    "guardduty:DisableOrganizationAdminAccount",
    "guardduty:DisassociateFromMasterAccount",
    "guardduty:DisassociateMembers",
    "guardduty:InviteMembers",
    "guardduty:StartMonitoringMembers",
    "guardduty:StopMonitoringMembers",
    "guardduty:TagResource",
    "guardduty:UnarchiveFindings",
    "guardduty:UntagResource",
    "guardduty:UpdateDetector",
    "guardduty:UpdateFilter",
    "guardduty:UpdateFindingsFeedback",
    "guardduty:UpdateIPSet",
    "guardduty:UpdateMalwareScanSettings",
    "guardduty:UpdateMemberDetectors",
    "guardduty:UpdateOrganizationConfiguration",
    "guardduty:UpdatePublishingDestination",
    "guardduty:UpdateThreatIntelSet"
  ],
  "Resource": "*"
}
```

## SCP-AMS-016: ルートユーザーアクティビティの防止
<a name="scp-prevent-root-user-activity"></a>

ルートユーザーがアクションを実行できないようにします。

```
{
  "Action": "*",
  "Resource": "*",
  "Effect": "Deny",
  "Condition": {
    "StringLike": {
      "aws:PrincipalArn": [
        "arn:aws:iam::*:root"
      ]
    }
  }
}
```

## SCP-AMS-017: ルートユーザーのアクセスキーの作成を禁止する
<a name="scp-prevent-access-key-creation"></a>

ルートユーザーのアクセスキーの作成を防止します。

```
{
  "Effect": "Deny",
  "Action": "iam:CreateAccessKey",
  "Resource": "arn:aws:iam::*:root"
}
```

## SCP-AMS-018: S3 アカウントのパブリックアクセスブロックの無効化を禁止する
<a name="scp-prevent-disabling-s3-public-access-block"></a>

Amazon S3 アカウントのパブリックアクセスブロックを無効にしないようにします。これにより、アカウントのバケットがパブリックになるのを防ぐことができます。

```
{
  "Effect": "Deny",
  "Action": "s3:PutAccountPublicAccessBlock",
  "Resource": "*"    
}
```

## SCP-AMS-019: AWS Config の無効化または Config ルールの変更を禁止する
<a name="scp-prevent-modifying-config-rules"></a>

 AWS Config ルールの無効化または変更を防止します。

```
{
  "Effect": "Deny",
  "Action": [
    "config:DeleteConfigRule",
    "config:DeleteConfigurationRecorder",
    "config:DeleteDeliveryChannel",
    "config:DeleteEvaluationResults",
    "config:StopConfigurationRecorder"
  ],
  "Resource": "*"
}
```

## SCP-AMS-020: すべての IAM アクションを禁止する
<a name="scp-prevent-iam-actions"></a>

すべての IAM アクションを防止します。

```
{
  "Effect": "Deny",
  "Action": [
    "iam:*"
  ],
  "Resource": "*"
}
```

## SCP-AMS-021: CloudWatch Logs グループとストリームの削除を禁止する
<a name="scp-prevent-iam-actions"></a>

Amazon CloudWatch Logs グループとストリームの削除を防止します。

```
{
  "Effect": "Deny",
  "Action": [
    "logs:DeleteLogGroup",
    "logs:DeleteLogStream"
  ],
  "Resource": "*"
}
```

## SCP-AMS-022: Glacier 削除の防止
<a name="scp-prevent-glacier-deletion"></a>

Amazon Glacier の削除を防止します。

```
{
  "Effect": "Deny",
  "Action": [
    "glacier:DeleteArchive",
    "glacier:DeleteVault"
  ],
  "Resource": "*"
}
```

## SCP-AMS-023: IAM Access Analyzer の削除を禁止する
<a name="scp-prevent-iam-access-analyzer-deletion"></a>

IAM Access Analyzer の削除を防止します。

```
{
  "Action": [
    "access-analyzer:DeleteAnalyzer"
  ],
  "Resource": "*",
  "Effect": "Deny"
}
```

## SCP-AMS-024: Security Hub CSPM への変更の防止
<a name="scp-prevent-security-hub-modification"></a>

削除を防止します AWS Security Hub CSPM。

```
{
  "Action": [
    "securityhub:DeleteInvitations",
    "securityhub:DisableSecurityHub",
    "securityhub:DisassociateFromMasterAccount",
    "securityhub:DeleteMembers",
    "securityhub:DisassociateMembers"
  ],
  "Resource": "*",
  "Effect": "Deny"
}
```

## SCP-AMS-025: Directory Service での削除の防止
<a name="scp-prevent-directory-service-deletion"></a>

のリソースの削除を防止します Directory Service。

```
{
  "Action": [
    "ds:DeleteDirectory",
    "ds:DeleteLogSubscription",
    "ds:DeleteSnapshot",
    "ds:DeleteTrust",
    "ds:DeregisterCertificate",
    "ds:DeregisterEventTopic",
    "ds:DisableLDAPS",
    "ds:DisableRadius",
    "ds:DisableSso",
    "ds:UnshareDirectory"
  ],
  "Resource": "*",
  "Effect": "Deny"
}
```

## SCP-AMS-026: 拒否リストに登録されたサービスの使用を禁止する
<a name="scp-prevent-denylisted-service"></a>

拒否リストに登録されたサービスの使用を防止します。

**注記**  
*service1* と *service2* をサービス名に置き換えます。*access-analyzer* または *IAM* の例。

```
{
  "Effect": "Deny",
  "Resource": "*",
  "Action": ["service1:*", "service2:*"]
}
```

## SCP-AMS-027: 特定のリージョンでの拒否リストに登録されたサービスの使用を禁止する
<a name="scp-prevent-denylisted-service-specifc-regions"></a>

特定の AWS リージョンで拒否リストに登録されているサービスの使用を防止します。

**注記**  
*service1* と *service2* をサービス名に置き換えます。*access-analyzer* または *IAM* の例。  
*region1* と *region2* をサービス名に置き換えます。*us-west-2* または *use-east-1* の例。

```
{
  "Effect": "Deny",
  "Resource": "*",
  "Action": ["service1:*", "service2:*"],
  "Condition": {
    "StringEquals": {
      "aws:RequestedRegion": [
        "region1",
        "region2"
      ]
    }
  }
}
```

## SCP-AMS-028: 承認されたプリンシパル以外によるタグの変更を防止する
<a name="scp-prevent-tag-modifications"></a>

承認されたプリンシパル以外のユーザーによるタグの変更を防止します。認可タグを使用してプリンシパルを認可します。認可タグは、リソースとプリンシパルに関連付ける必要があります。ユーザー/ロールは、リソースとプリンシパルの両方のタグが一致する場合にのみ、承認されたと見なされます。詳細については、以下のリソースを参照してください。
+ [のサービスコントロールポリシーを使用した認可に使用されるリソースタグの保護 AWS Organizations](https://aws.amazon.com/blogs/security/securing-resource-tags-used-for-authorization-using-service-control-policy-in-aws-organizations/)
+ [承認されたプリンシパル以外によるタグの変更を防ぐ](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples_tagging.html#example-require-restrict-tag-mods-to-admin)

```
{
  "Effect": "Deny",
  "Action": [
    "ec2:CreateTags",
    "ec2:DeleteTags"
  ],
  "Resource": [
    "*"
  ],
  "Condition": {
    "StringNotEquals": {
      "ec2:ResourceTag/access-project": "${aws:PrincipalTag/access-project}",
      "aws:PrincipalArn": "arn:aws:iam::{ACCOUNT_ID}:{RESOURCE_TYPE}/{RESOURCE_NAME}"
    },
    "Null": {
      "ec2:ResourceTag/access-project": false
    }
  }
},
{
  "Effect": "Deny",
  "Action": [
    "ec2:CreateTags",
    "ec2:DeleteTags"
  ],
  "Resource": [
    "*"
  ],
  "Condition": {
    "StringNotEquals": {
      "aws:RequestTag/access-project": "${aws:PrincipalTag/access-project}",
      "aws:PrincipalArn": "arn:aws:iam::{ACCOUNT_ID}:{RESOURCE_TYPE}/{RESOURCE_NAME}"
    },
    "ForAnyValue:StringEquals": {
      "aws:TagKeys": [
        "access-project"
      ]   
    }   
  }
},
{       
  "Effect": "Deny", 
  "Action": [
    "ec2:CreateTags",
    "ec2:DeleteTags"
  ],      
  "Resource": [
    "*"     
  ],      
  "Condition": {
    "StringNotEquals": {
      "aws:PrincipalArn": "arn:aws:iam::{ACCOUNT_ID}:{RESOURCE_TYPE}/{RESOURCE_NAME}"
    },      
    "Null": {
      "aws:PrincipalTag/access-project": true
    }       
  }       
}
```

## SCP-AMS-029: ユーザーが Amazon VPC フローログを削除できないようにする
<a name="scp-prevent-vpc-flow-log-deletion"></a>

Amazon VPC フローログの削除を防止します。

```
{
  "Action": [
    "ec2:DeleteFlowLogs",
    "logs:DeleteLogGroup",
    "logs:DeleteLogStream",
    "s3:DeleteBucket",
    "s3:DeleteObject",
    "s3:DeleteObjectVersion",
    "s3:PutLifecycleConfiguration",
    "firehose:DeleteDeliveryStream"
  ],
  "Resource": "*",
  "Effect": "Deny"
}
```

## SCP-AMS-030: ネットワークアカウント以外のアカウントとの VPC サブネットの共有を禁止する
<a name="scp-prevent-sharing-vpc-subnet"></a>

Amazon VPC サブネットをネットワークアカウント以外のアカウントと共有しないようにします。

**注記**  
*NETWORK\$1ACCOUNT\$1ID* をネットワークアカウント ID に置き換えます。

```
{
  "Effect": "Deny",
  "Action": [
    "ram:AssociateResourceShare",
    "ram:CreateResourceShare"
  ],
  "Resource": "*",
  "Condition": {
    "StringNotEquals": {
      "ram:Principal": "NETWORK_ACCOUNT_ID"
    },
    "StringEquals": {
      "ram:RequestedResourceType": "ec2:Subnet"
    }
  }
}
```

## SCP-AMS-031: 禁止されているインスタンスタイプのインスタンスの起動を禁止する
<a name="scp-prevent-launching-prohibited-instances"></a>

禁止された Amazon EC2 インスタンスタイプの遅延を防止します。

**注記**  
*instance\$1type1* と *instance\$1type2* を、*t2.micro* や *\$1.nano などのワイルドカード文字列など、制限するインスタンスタイプに置き換えます*。

```
{
  "Effect": "Deny",
  "Action": "ec2:RunInstances",
  "Resource": [
    "arn:aws:ec2:*:*:instance/*"
  ],
  "Condition": {
    "ForAnyValue:StringLike": {
      "ec2:InstanceType": [
        "instance_type1", 
        "instance_type2"
      ]
    }
  }
}
```

## SCP-AMS-032: IMDSv2 を使用しないインスタンスの起動を禁止する
<a name="scp-prevent-launching-instances-without-imdsv2"></a>

IMDSv2 を使用しない Amazon EC2 インスタンスを防止します。 IMDSv2

```
[
  {
    "Effect": "Deny",
    "Action": "ec2:RunInstances",
    "Resource": "arn:aws:ec2:*:*:instance/*",
    "Condition": {
      "StringNotEquals": {
        "ec2:MetadataHttpTokens": "required"
      }
    }
  },
  {
    "Effect": "Deny",
    "Action": "ec2:RunInstances",
    "Resource": "arn:aws:ec2:*:*:instance/*",
    "Condition": {
      "NumericGreaterThan": {
        "ec2:MetadataHttpPutResponseHopLimit": "3"
      }
    }
  },
  {
    "Effect": "Deny",
    "Action": "*",
    "Resource": "*",
    "Condition": {
      "NumericLessThan": {
        "ec2:RoleDelivery": "2.0"
      }
    }
  },
  {
    "Effect": "Deny",
    "Action": "ec2:ModifyInstanceMetadataOptions",
    "Resource": "*"
  }
]
```

## SCP-AMS-033: 特定の IAM ロールへの変更を禁止する
<a name="scp-prevent-modifications-to-iam-roles"></a>

指定された IAM ロールへの変更を防止します。

```
{
  "Action": [
    "iam:AttachRolePolicy",
    "iam:DeleteRole",
    "iam:DeleteRolePermissionsBoundary",
    "iam:DeleteRolePolicy",
    "iam:DetachRolePolicy",
    "iam:PutRolePermissionsBoundary",
    "iam:PutRolePolicy",
    "iam:TagRole",
    "iam:UntagRole",
    "iam:UpdateAssumeRolePolicy",
    "iam:UpdateRole",
    "iam:UpdateRoleDescription"
  ],
  "Resource": [
     "arn:aws:iam::{ACCOUNT_ID}:role/{RESOURCE_NAME}"
  ],
  "Effect": "Deny"
}
```

## SCP-AMS-034: 特定の IAM ロールで AssumeRolePolicy の変更を禁止する
<a name="scp-prevent-assumerolepolicy-modifications"></a>

指定された IAM ロールの AssumeRolePolicy への変更を防止します。

```
{
  "Action": [
    "iam:UpdateAssumeRolePolicy"
  ],
  "Resource": [
     "arn:aws:iam::{ACCOUNT_ID}:role/{RESOURCE_NAME}"
  ],
  "Effect": "Deny"
}
```

## ConfigRule: 必須タグ
<a name="cnfgrl-required-tags"></a>

EC2 インスタンスに必要なカスタムタグがあるかどうかを確認します。InfoSec に加えて、これはコスト管理にも役立ちます。

```
ConfigRuleName: required-tags
      Description: >-
        A Config rule that checks whether EC2 instances have the required tags.
      Scope:
        ComplianceResourceTypes:
          - 'AWS::EC2::Instance'
      InputParameters:
        tag1Key: COST_CENTER
        tag2Key: APP_ID
      Source:
        Owner: AWS
        SourceIdentifier: REQUIRED_TAGS
```

## ConfigRule: アクセスキーがローテーションされました
<a name="cnfgrl-access-key-rotate"></a>

アクセスキーが指定された期間内にローテーションされていることを確認します。これは通常、一般的なコンプライアンス要件に従って 90 日に設定されます。

```
ConfigRuleName: access-keys-rotated
      Description: >-
        A config rule that checks whether the active access keys are rotated
        within the number of days specified in maxAccessKeyAge. The rule is
        NON_COMPLIANT if the access keys have not been rotated for more than
        maxAccessKeyAge number of days.
      InputParameters:
        maxAccessKeyAge: '90'
      Source:
        Owner: AWS
        SourceIdentifier: ACCESS_KEYS_ROTATED
      MaximumExecutionFrequency: TwentyFour_Hours
```

## ConfigRule: AMS の IAM ルートアクセスキー
<a name="cnfgrl-iam-root-rotate"></a>

ルートアクセスキーがアカウントに存在していないことを確認します。AMS Advanced アカウントの場合、これはout-of-the-box準拠することが期待されます。

```
ConfigRuleName: iam-root-access-key-check
      Description: >-
        A config rule that checks whether the root user access key is available. The rule is COMPLIANT if the user access key does not exist.
      Source:
        Owner: AWS
        SourceIdentifier: IAM_ROOT_ACCESS_KEY_CHECK
      MaximumExecutionFrequency: TwentyFour_Hours
```

## ConfigRule: SSM マネージド EC2
<a name="cnfgrl-ssm-managed"></a>

EC2sが SSM Systems Manager によって管理されていることを確認します。

```
ConfigRuleName: ec2-instance-managed-by-systems-manager
      Description: >-
        A Config rule that checks whether the EC2 instances in the
        account are managed by AWS Systems Manager.
      Scope:
        ComplianceResourceTypes:
          - 'AWS::EC2::Instance'
          - 'AWS::SSM::ManagedInstanceInventory'
      Source:
        Owner: AWS
        SourceIdentifier: EC2_INSTANCE_MANAGED_BY_SSM
```

## ConfigRule: AMS で未使用の IAM ユーザー
<a name="cnfgrl-unused-user"></a>

指定された期間使用されていない IAM ユーザー認証情報を確認します。キーローテーションチェックと同様に、これは通常、一般的なコンプライアンス要件に従ってデフォルトで 90 日に設定されます。

```
ConfigRuleName: iam-user-unused-credentials-check
      Description: >-
        A config rule that checks whether IAM users have passwords
        or active access keys that have not been used within the
        specified number of days provided.
      InputParameters:
        maxCredentialUsageAge: '90'
      Source:
        Owner: AWS
SourceIdentifier: IAM_USER_UNUSED_CREDENTIALS_CHECK
      MaximumExecutionFrequency: TwentyFour_Hours
```

## ConfigRule: S3 バケットのログ記録
<a name="cnfgrl-s3-logging"></a>

アカウントの S3 バケットでログ記録が有効になっていることを確認します。

```
ConfigRuleName: s3-bucket-logging-enabled
      Description: >-
        A Config rule that checks whether logging is enabled for S3 buckets.
      Scope:
        ComplianceResourceTypes:
          - 'AWS::S3::Bucket'
      Source:
        Owner: AWS
SourceIdentifier: S3_BUCKET_LOGGING_ENABLED
```

## ConfigRule: S3 バケットのバージョニング
<a name="cnfgrl-s3-versioning"></a>

すべての S3 バケットでバージョニングと MFA 削除 (オプション) が有効になっていることを確認します。

```
ConfigRuleName: s3-bucket-versioning-enabled
      Description: >-
        A Config rule that checks whether versioning is enabled for S3
        buckets. Optionally, the rule checks if MFA delete is enabled for S3 buckets.
      Scope:
        ComplianceResourceTypes:
          - 'AWS::S3::Bucket'
      Source:
        Owner: AWS
SourceIdentifier: S3_BUCKET_VERSIONING_ENABLED
```

## ConfigRule: S3 パブリックアクセス
<a name="cnfgrl-s3-public-access"></a>

パブリックアクセス設定 (パブリック ACL、パブリックポリシー、パブリックバケット) がアカウント全体で制限されていることを確認します。

```
ConfigRuleName: s3-account-level-public-access-blocks
      Description: >-
        A Config rule that checks whether the required public access block
        settings are configured from account level. The rule is only
        NON_COMPLIANT when the fields set below do not match the corresponding
        fields in the configuration item.
      Scope:
        ComplianceResourceTypes:
          - 'AWS::S3::AccountPublicAccessBlock'
      InputParameters:
        IgnorePublicAcls: 'True'
        BlockPublicPolicy: 'True'
        BlockPublicAcls: 'True'
        RestrictPublicBuckets: 'True'
      Source:
        Owner: AWS
SourceIdentifier: S3_ACCOUNT_LEVEL_PUBLIC_ACCESS_BLOCKS
```

## ConfigRule: アーカイブされていない GuardDuty の検出結果
<a name="cnfgrl-gd-findings"></a>

アーカイブされていない GuardDuty の検出結果が、指定された期間より古いかどうかを確認します。デフォルトの期間は、低レベルの場合は 30 日間、中レベルの場合は 7 日間、高レベル検出の場合は 1 日間です。

```
ConfigRuleName: guardduty-non-archived-findings
      Description: >-
        A Config rule that checks whether the Amazon GuardDuty has findings that
        are non archived. The rule is NON_COMPLIANT if GuardDuty has non
        archived low/medium/high severity findings older than the specified number.
      InputParameters:
        daysLowSev: '30'
        daysMediumSev: '7'
        daysHighSev: '1'
      Source:
        Owner: AWS
        SourceIdentifier: GUARDDUTY_NON_ARCHIVED_FINDINGS
      MaximumExecutionFrequency: TwentyFour_Hours
```

## ConfigRule: CMK 削除
<a name="cnfgrl-cmk-deletion"></a>

削除がスケジュールされている (または保留中) AWS Key Management Service カスタムマスターキー (CMKs) がないか確認します。CMK 削除に関する認識がないと、データが回復不能になる可能性があるため、これは重要です。

```
ConfigRuleName: kms-cmk-not-scheduled-for-deletion
      Description: >-
        A config rule that checks whether customer master keys (CMKs) are not
        scheduled for deletion in AWS Key Management Service (AWS KMS). The rule is
        NON_COMPLIANT if CMKs are scheduled for deletion.
      Source:
        Owner: AWS
SourceIdentifier: KMS_CMK_NOT_SCHEDULED_FOR_DELETION
      MaximumExecutionFrequency: TwentyFour_Hours
```

## ConfigRule: CMK ローテーション
<a name="cnfgrl-cmk-rotation"></a>

アカウント内のすべての CMK で自動ローテーションが有効になっていることを確認する

```
ConfigRuleName: cmk-backing-key-rotation-enabled
      Description: >-
        A config rule that checks that key rotation is enabled for each customer
        master key (CMK). The rule is COMPLIANT, if the key rotation is enabled
        for specific key object. The rule is not applicable to CMKs that have
        imported key material.
      Source:
        Owner: AWS
SourceIdentifier: CMK_BACKING_KEY_ROTATION_ENABLED
      MaximumExecutionFrequency: TwentyFour_Hours
```

# Config ルールのカスタム通知
<a name="scp-lib-custom-notice"></a>

重大な非準拠の Config ルールが発生し、InfoSec チームとリーダーシップチームに直接エスカレーションされた認識を高める必要がある場合があります。このようなシナリオでは、AMS はコンプライアンス違反のイベント駆動型カスタム通知を設定することをお勧めします。

例：

```
ConfigRuleName: required-tags
      Description: >-
        A Config rule that checks whether EC2 instances have the mandated tags.
      Scope:
        ComplianceResourceTypes:
          - 'AWS::EC2::Instance'
      InputParameters:
        tag1Key: COST_CENTER
        tag2Key: APP_ID
      Source:
        Owner: AWS
SourceIdentifier: REQUIRED_TAGS
  NotificationEventRule:
    Type: 'AWS::Events::Rule'
    Properties:
      Name: CWEventForrequired-tags
      Description: >-
        SNS Notification for Non-Compliant Events of Config Rule:
        required-tags
      State: ENABLED
      EventPattern:
        detail-type:
          - Config Rules Compliance Change
        source:
          - aws.config
        detail:
          newEvaluationResult:
            complianceType:
              - NON_COMPLIANT
          configRuleARN:
            - 'Fn::GetAtt':
                - RequiredEC2Tags
                - Arn
      Targets:
        - Id: RemediationNotification
          Arn:
            Ref: SnsTopic
          InputTransformer:
            InputTemplate: >-
              "EC2 Instance <Instance_ID> is non-compliant. Please add required tags: COST_CENTER, APP_ID, Name, and Backup."
            InputPathsMap:
              instance_id: $.detail.resourceId
  SnsTopic:
    Type: 'AWS::SNS::Topic'
    Properties:
      Subscription:
        - Endpoint: Cloud_Ops_Leaders@customer.com
          Protocol: email
      TopicName: noncompliant-instance-notification
  SnsTopicPolicy:
    Type: 'AWS::SNS::TopicPolicy'
    Properties:
      PolicyDocument:
        Statement:
          - Sid: __default_statement_ID
            Effect: Allow
            Principal:
              AWS: '*'
            Action:
              - 'SNS:GetTopicAttributes'
              - 'SNS:SetTopicAttributes'
              - 'SNS:AddPermission'
              - 'SNS:RemovePermission'
              - 'SNS:DeleteTopic'
              - 'SNS:Subscribe'
              - 'SNS:ListSubscriptionsByTopic'
              - 'SNS:Publish'
              - 'SNS:Receive'
            Resource:
              Ref: SnsTopic
            Condition:
              StringEquals:
                'AWS:SourceOwner':
                  Ref: 'AWS::AccountId'
          - Sid: TrustCWEToPublishEventsToMyTopic
            Effect: Allow
            Principal:
              Service: events.amazonaws.com
            Action: 'sns:Publish'
            Resource:
              Ref: SnsTopic
      Topics:
        - Ref: SnsTopic
```