AWS Control Tower
ユーザーガイド

強く推奨されるガードレール

強く推奨されるガードレールは、適切に設計されたマルチアカウント環境のベストプラクティスに基づいています。これらのガードレールはデフォルトで無効になっており、無効のままでもかまいません。以下に、AWS Control Tower で使用できる強く推奨されるガードレールそれぞれのリファレンスを示します。

Disallow Creation of Access Keys for the Root User (root ユーザーのアクセスキーの作成を禁止する)

root ユーザーのアクセスキーの作成を禁止することで、AWS アカウントを保護します。代わりに、AWS アカウントの操作のためのアクセス許可を制限した IAM ユーザーのアクセスキーを作成することをお勧めします。これは、強く推奨されるガイダンスによる予防的ガードレールです。デフォルトでは、このガードレールは有効になっていません。

このガードレールのアーティファクトは、以下の SCP です。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GRRESTRICTROOTUSERACCESSKEYS", "Effect": "Deny", "Action": "iam:CreateAccessKey", "Resource": [ "*" ], "Condition": { "StringLike": { "aws:PrincipalArn": [ "arn:aws:iam::*:root" ] } } } ] }

root ユーザーとしてのアクションを禁止する

AWS アカウントを保護するには、root ユーザー認証情報 (アカウントのすべてのリソースへの無制限のアクセスを許可するアカウント所有者の認証情報) を使用したアカウントアクセスを禁止します。代わりに、AWS アカウントとの日常的なやり取り用に AWS IAM (Identity and Access Management) ユーザーを作成することをお勧めします。これは、強く推奨されるガイダンスによる予防的ガードレールです。デフォルトでは、このガードレールは有効になっていません。

このガードレールのアーティファクトは、以下の SCP です。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GRRESTRICTROOTUSER", "Effect": "Deny", "Action": "*", "Resource": [ "*" ], "Condition": { "StringLike": { "aws:PrincipalArn": [ "arn:aws:iam::*:root" ] } } } ] }

Enable Encryption for Amazon EBS Volumes Attached to Amazon EC2 Instances (Amazon EC2 インスタンスにアタッチされた Amazon EBS ボリュームの暗号化を有効にする)

このガードレールにより、Landing Zone の Amazon EC2 インスタンスにアタッチされた Amazon EBS ボリュームに対して暗号化が有効になっているかどうかが検出されます。このガードレールにより、アカウントのステータスは変更されません。これは、強く推奨されるガイダンスによる発見的ガードレールです。デフォルトでは、このガードレールは OU で有効になっていません。

このガードレールのアーティファクトは、以下の AWS Config ルールです。

AWSTemplateFormatVersion: 2010-09-09 Description: Configure AWS Config rules to check for encryption of all storage volumes attached to compute Parameters: ConfigRuleName: Type: 'String' Description: 'Name for the Config rule' Resources: CheckForEncryptedVolumes: Type: AWS::Config::ConfigRule Properties: ConfigRuleName: !Sub ${ConfigRuleName} Description: Checks whether EBS volumes that are in an attached state are encrypted. Source: Owner: AWS SourceIdentifier: ENCRYPTED_VOLUMES Scope: ComplianceResourceTypes: - AWS::EC2::Volume

Disallow Internet Connection Through RDP (RDP を介したインターネット接続を禁止する)

このガードレールにより、Remote Desktop Protocol (RDP) などのサービスを介したインターネット接続が Amazon EC2 インスタンスに対して有効になっているかどうかが検出されます。このガードレールにより、アカウントのステータスは変更されません。これは、強く推奨されるガイダンスによる発見的ガードレールです。デフォルトでは、このガードレールは有効になっていません。

このガードレールのアーティファクトは、以下の AWS Config ルールです。

AWSTemplateFormatVersion: 2010-09-09 Description: Configure AWS Config rules to check whether security groups that are in use disallow unrestricted incoming TCP traffic to the specified ports. Parameters: ConfigRuleName: Type: 'String' Description: 'Name for the Config rule' blockedPort1: Type: String Default: '20' Description: Blocked TCP port number. blockedPort2: Type: String Default: '21' Description: Blocked TCP port number. blockedPort3: Type: String Default: '3389' Description: Blocked TCP port number. blockedPort4: Type: String Default: '3306' Description: Blocked TCP port number. blockedPort5: Type: String Default: '4333' Description: Blocked TCP port number. Conditions: blockedPort1: Fn::Not: - Fn::Equals: - '' - Ref: blockedPort1 blockedPort2: Fn::Not: - Fn::Equals: - '' - Ref: blockedPort2 blockedPort3: Fn::Not: - Fn::Equals: - '' - Ref: blockedPort3 blockedPort4: Fn::Not: - Fn::Equals: - '' - Ref: blockedPort4 blockedPort5: Fn::Not: - Fn::Equals: - '' - Ref: blockedPort5 Resources: CheckForRestrictedCommonPortsPolicy: Type: AWS::Config::ConfigRule Properties: ConfigRuleName: !Sub ${ConfigRuleName} Description: Checks whether security groups that are in use disallow unrestricted incoming TCP traffic to the specified ports. InputParameters: blockedPort1: Fn::If: - blockedPort1 - Ref: blockedPort1 - Ref: AWS::NoValue blockedPort2: Fn::If: - blockedPort2 - Ref: blockedPort2 - Ref: AWS::NoValue blockedPort3: Fn::If: - blockedPort3 - Ref: blockedPort3 - Ref: AWS::NoValue blockedPort4: Fn::If: - blockedPort4 - Ref: blockedPort4 - Ref: AWS::NoValue blockedPort5: Fn::If: - blockedPort5 - Ref: blockedPort5 - Ref: AWS::NoValue Scope: ComplianceResourceTypes: - AWS::EC2::SecurityGroup Source: Owner: AWS SourceIdentifier: RESTRICTED_INCOMING_TRAFFIC

Disallow Internet Connection Through SSH (SSH を介したインターネット接続を禁止する)

このガードレールにより、Secure Shell (SSH) プロトコルなどのリモートサービスを介したインターネット接続が許可されているかどうかが検出されます。このガードレールにより、アカウントのステータスは変更されません。これは、強く推奨されるガイダンスによる発見的ガードレールです。デフォルトでは、このガードレールは有効になっていません。

このガードレールのアーティファクトは、以下の AWS Config ルールです。

AWSTemplateFormatVersion: 2010-09-09 Description: Configure AWS Config rules to check whether security groups that are in use disallow SSH Parameters: ConfigRuleName: Type: 'String' Description: 'Name for the Config rule' Resources: CheckForRestrictedSshPolicy: Type: AWS::Config::ConfigRule Properties: ConfigRuleName: !Sub ${ConfigRuleName} Description: Checks whether security groups that are in use disallow unrestricted incoming SSH traffic. Scope: ComplianceResourceTypes: - AWS::EC2::SecurityGroup Source: Owner: AWS SourceIdentifier: INCOMING_SSH_DISABLED

Enable MFA for the Root User (root ユーザーに対して MFA を有効にする)

このガードレールにより、マスターアカウントの root ユーザーに対して多要素認証 (MFA) が有効になっているかどうかが検出されます。MFA では、ユーザー名とパスワードに加えて認証コードが使用されるため、セキュリティ的に弱い認証から生じる脆弱性のリスクが軽減されます。このガードレールにより、アカウントのステータスは変更されません。これは、強く推奨されるガイダンスによる発見的ガードレールです。デフォルトでは、このガードレールは有効になっていません。

このガードレールのアーティファクトは、以下の AWS Config ルールです。

AWSTemplateFormatVersion: 2010-09-09 Description: Configure AWS Config rules to require MFA for root access to accounts Parameters: ConfigRuleName: Type: 'String' Description: 'Name for the Config rule' MaximumExecutionFrequency: Type: String Default: 24hours Description: The frequency that you want AWS Config to run evaluations for the rule. AllowedValues: - 1hour - 3hours - 6hours - 12hours - 24hours Mappings: Settings: FrequencyMap: 1hour : One_Hour 3hours : Three_Hours 6hours : Six_Hours 12hours : Twelve_Hours 24hours : TwentyFour_Hours Resources: CheckForRootMfa: Type: AWS::Config::ConfigRule Properties: ConfigRuleName: !Sub ${ConfigRuleName} Description: Checks whether the root user of your AWS account requires multi-factor authentication for console sign-in. Source: Owner: AWS SourceIdentifier: ROOT_ACCOUNT_MFA_ENABLED MaximumExecutionFrequency: !FindInMap - Settings - FrequencyMap - !Ref MaximumExecutionFrequency

Disallow Public Read Access to Amazon S3 Buckets (Amazon S3 バケットへのパブリック読み取りアクセスを禁止する)

このガードレールにより、Amazon S3 バケットへのパブリック読み取りアクセスが許可されているかどうかが検出されます。このガードレールにより、アカウントのステータスは変更されません。これは、強く推奨されるガイダンスによる発見的ガードレールです。デフォルトでは、このガードレールは有効になっていません。

このガードレールのアーティファクトは、以下の AWS Config ルールです。

AWSTemplateFormatVersion: 2010-09-09 Description: Configure AWS Config rules to check that your S3 buckets do not allow public access Parameters: ConfigRuleName: Type: 'String' Description: 'Name for the Config rule' Resources: CheckForS3PublicRead: Type: AWS::Config::ConfigRule Properties: ConfigRuleName: !Sub ${ConfigRuleName} Description: Checks that your S3 buckets do not allow public read access. If an S3 bucket policy or bucket ACL allows public read access, the bucket is noncompliant. Source: Owner: AWS SourceIdentifier: S3_BUCKET_PUBLIC_READ_PROHIBITED Scope: ComplianceResourceTypes: - AWS::S3::Bucket

Disallow Public Write Access to Amazon S3 Buckets (Amazon S3 バケットへのパブリック書き込みアクセスを禁止する)

このガードレールにより、Amazon S3 バケットへのパブリック書き込みアクセスが許可されているかどうかが検出されます。このガードレールにより、アカウントのステータスは変更されません。これは、強く推奨されるガイダンスによる発見的ガードレールです。デフォルトでは、このガードレールは有効になっていません。

このガードレールのアーティファクトは、以下の AWS Config ルールです。

AWSTemplateFormatVersion: 2010-09-09 Description: Configure AWS Config rules to check that your S3 buckets do not allow public access Parameters: ConfigRuleName: Type: 'String' Description: 'Name for the Config rule' Resources: CheckForS3PublicWrite: Type: AWS::Config::ConfigRule Properties: ConfigRuleName: !Sub ${ConfigRuleName} Description: Checks that your S3 buckets do not allow public write access. If an S3 bucket policy or bucket ACL allows public write access, the bucket is noncompliant. Source: Owner: AWS SourceIdentifier: S3_BUCKET_PUBLIC_WRITE_PROHIBITED Scope: ComplianceResourceTypes: - AWS::S3::Bucket

Disallow Amazon EBS Volumes That Are Unattached to An Amazon EC2 Instance (Amazon EC2 インスタンスにアタッチされていない Amazon EBS ボリュームを禁止する)

Amazon EBS ボリュームが Amazon EC2 インスタンスから独立して存続するかどうかが検出されます。このガードレールにより、アカウントのステータスは変更されません。これは、強く推奨されるガイダンスによる発見的ガードレールです。デフォルトでは、このガードレールは有効になっていません。

このガードレールのアーティファクトは、以下の AWS Config ルールです。

AWSTemplateFormatVersion: 2010-09-09 Description: Configure AWS Config rules to check whether EBS volumes are attached to EC2 instances Parameters: ConfigRuleName: Type: 'String' Description: 'Name for the Config rule' deleteOnTermination: Type: 'String' Default: 'None' Description: 'Check for Delete on termination' Conditions: deleteOnTermination: Fn::Not: - Fn::Equals: - 'None' - Ref: deleteOnTermination Resources: CheckForEc2VolumesInUse: Type: AWS::Config::ConfigRule Properties: ConfigRuleName: !Sub ${ConfigRuleName} Description: Checks whether EBS volumes are attached to EC2 instances InputParameters: deleteOnTermination: Fn::If: - deleteOnTermination - Ref: deleteOnTermination - Ref: AWS::NoValue Source: Owner: AWS SourceIdentifier: EC2_VOLUME_INUSE_CHECK Scope: ComplianceResourceTypes: - AWS::EC2::Volume

Disallow Amazon EC2Instance Types That Are Not Amazon EBS-Optimized (Amazon EBS 最適化以外のタイプの Amazon EC2 インスタンスを禁止する)

パフォーマンスが最適化された Amazon EBS ボリュームなしで Amazon EC2 インスタンスが起動されるかどうかが検出されます。Amazon EBS 最適化ボリュームにより、Amazon EBS I/O と、インスタンスからの他のトラフィックとの間で、競合が最小限に抑えられます。このガードレールにより、アカウントのステータスは変更されません。これは、強く推奨されるガイダンスによる発見的ガードレールです。デフォルトでは、このガードレールは有効になっていません。

このガードレールのアーティファクトは、以下の AWS Config ルールです。

AWSTemplateFormatVersion: 2010-09-09 Description: Configure AWS Config rules to check whether EBS optimization is enabled for your EC2 instances that can be EBS-optimized Parameters: ConfigRuleName: Type: 'String' Description: 'Name for the Config rule' Resources: CheckForEbsOptimizedInstance: Type: AWS::Config::ConfigRule Properties: ConfigRuleName: !Sub ${ConfigRuleName} Description: Checks whether EBS optimization is enabled for your EC2 instances that can be EBS-optimized Source: Owner: AWS SourceIdentifier: EBS_OPTIMIZED_INSTANCE Scope: ComplianceResourceTypes: - AWS::EC2::Instance

Disallow Public Access to Amazon RDS Database Instances (Amazon RDS データベースインスタンスへのパブリックアクセスを禁止する)

Amazon RDS データベースインスタンスでパブリックアクセスが有効になっているかどうかが検出されます。このガードレールにより、アカウントのステータスは変更されません。これは、強く推奨されるガイダンスによる発見的ガードレールです。デフォルトでは、このガードレールは有効になっていません。

このガードレールのアーティファクトは、以下の AWS Config ルールです。

AWSTemplateFormatVersion: 2010-09-09 Description: Configure AWS Config rules to check whether Amazon RDS instances are not publicly accessible. Parameters: ConfigRuleName: Type: 'String' Description: 'Name for the Config rule' Resources: CheckForRdsPublicAccess: Type: AWS::Config::ConfigRule Properties: ConfigRuleName: !Sub ${ConfigRuleName} Description: Checks whether the Amazon Relational Database Service (RDS) instances are not publicly accessible. The rule is non-compliant if the publiclyAccessible field is true in the instance configuration item. Source: Owner: AWS SourceIdentifier: RDS_INSTANCE_PUBLIC_ACCESS_CHECK Scope: ComplianceResourceTypes: - AWS::RDS::DBInstance

Disallow Public Access to Amazon RDS Database Snapshots (Amazon RDS データベーススナップショットへのパブリックアクセスを禁止する)

Amazon RDS データベーススナップショットへのパブリックアクセスが有効になっているかどうかが検出されます。このガードレールにより、アカウントのステータスは変更されません。これは、強く推奨されるガイダンスによる発見的ガードレールです。デフォルトでは、このガードレールは有効になっていません。

このガードレールのアーティファクトは、以下の AWS Config ルールです。

AWSTemplateFormatVersion: 2010-09-09 Description: Checks if Amazon Relational Database Service (Amazon RDS) snapshots are public. Parameters: ConfigRuleName: Type: 'String' Description: 'Name for the Config rule' Resources: CheckForRdsStorageEncryption: Type: AWS::Config::ConfigRule Properties: ConfigRuleName: !Sub ${ConfigRuleName} Description: Checks if Amazon Relational Database Service (Amazon RDS) snapshots are public. The rule is non-compliant if any existing and new Amazon RDS snapshots are public. Source: Owner: AWS SourceIdentifier: RDS_SNAPSHOTS_PUBLIC_PROHIBITED Scope: ComplianceResourceTypes: - AWS::RDS::DBSnapshot

Disallow Amazon RDS Database Instances That Are Not Storage Encrypted (ストレージが暗号化されていない Amazon RDS データベースインスタンスを禁止する)

Amazon RDS データベースインスタンスが、自動バックアップ、リードレプリカ、スナップショットと共に、保管時に暗号化されていないかどうかが検出されます。このガードレールにより、アカウントのステータスは変更されません。これは、強く推奨されるガイダンスによる発見的ガードレールです。デフォルトでは、このガードレールは有効になっていません。

このガードレールのアーティファクトは、以下の AWS Config ルールです。

AWSTemplateFormatVersion: 2010-09-09 Description: Configure AWS Config rules to check whether storage encryption is enabled for your RDS DB instances Parameters: ConfigRuleName: Type: 'String' Description: 'Name for the Config rule' Resources: CheckForRdsStorageEncryption: Type: AWS::Config::ConfigRule Properties: ConfigRuleName: !Sub ${ConfigRuleName} Description: Checks whether storage encryption is enabled for your RDS DB instances. Source: Owner: AWS SourceIdentifier: RDS_STORAGE_ENCRYPTED Scope: ComplianceResourceTypes: - AWS::RDS::DBInstance

このページの内容: