強く推奨されるガードレール
強く推奨されるガードレールは、適切に設計されたマルチアカウント環境のベストプラクティスに基づいています。これらのガードレールはデフォルトで無効になっており、無効のままでもかまいません。以下に、AWS Control Tower で使用できる強く推奨されるガードレールそれぞれのリファレンスを示します。
トピック
- Disallow Creation of Access Keys for the Root User (ルートユーザーのアクセスキーの作成を許可しない)
- Disallow Actions as a Root User (ルートユーザーとしてのアクションを許可しない)
- Detect Whether Encryption is Enabled for Amazon EBS Volumes Attached to Amazon EC2 Instances (Amazon EC2 インスタンスにアタッチされた Amazon EBS ボリュームに対して暗号化が有効になっているかどうかを検出する)
- Detect Whether Unrestricted Incoming TCP Traffic is Allowed (無制限の着信 TCP トラフィックが許可されているかどうかを検出する)
- Detect Whether Unrestricted Internet Connection Through SSH is Allowed (SSH を介した無制限のインターネット接続が許可されているかどうかを検出する)
- Detect Whether MFA for the Root User is Enabled (ルートユーザーに対して MFA が有効になっているかどうかを検出する)
- Detect Whether Public Read Access to Amazon S3 Buckets is Allowed (Simple Storage Service (Amazon S3) バケットへのパブリック読み取りアクセスが許可されているかどうかを検出する)
- Detect Whether Public Write Access to Amazon S3 Buckets is Allowed (Simple Storage Service (Amazon S3) バケットへのパブリック書き込みアクセスが許可されているかどうかを検出する)
- Detect Whether Amazon EBS Volumes are Attached to Amazon EC2 Instances (Amazon EBS ボリュームが Amazon EC2 インスタンスにアタッチされているかどうかを検出する)
- Detect Whether Amazon EBS Optimization is Enabled for Amazon EC2 Instances (Amazon EC2 インスタンスに対して Amazon EBS 最適化が有効になっているかどうかを検出する)
- Detect Whether Public Access to Amazon RDS Database Instances is Enabled (Amazon RDS データベースインスタンスへのパブリックアクセスが有効になっているかどうかを検出する)
- Detect Whether Public Access to Amazon RDS Database Snapshots is Enabled (Amazon RDS データベーススナップショットへのパブリックアクセスが有効になっているかどうかを検出する)
- Detect Whether Storage Encryption is Enabled for Amazon RDS Database Instances (Amazon RDS データベースインスタンスに対してストレージ暗号化が有効になっているかどうかを検出する)
Disallow Creation of Access Keys for the Root User (ルートユーザーのアクセスキーの作成を許可しない)
ルートユーザーのアクセスキーの作成を禁止することで、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" ] } } } ] }
Disallow Actions as a Root User (ルートユーザーとしてのアクションを許可しない)
AWS アカウントを保護するには、ルートユーザー認証情報 (アカウントのすべてのリソースへの無制限のアクセスを許可するアカウント所有者の認証情報) を使用したアカウントアクセスを禁止します。代わりに、AWS アカウントとの日常的なやり取り用に AWS Identity and Access Management (IAM) ユーザーを作成することをお勧めします。これは、強く推奨されるガイダンスによる予防ガードレールです。デフォルトでは、このガードレールは有効になっていません。
このガードレールのアーティファクトは、以下の SCP です。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GRRESTRICTROOTUSER", "Effect": "Deny", "Action": "*", "Resource": [ "*" ], "Condition": { "StringLike": { "aws:PrincipalArn": [ "arn:aws:iam::*:root" ] } } } ] }
Detect Whether Encryption is Enabled for Amazon EBS Volumes Attached to Amazon EC2 Instances (Amazon EC2 インスタンスにアタッチされた Amazon EBS ボリュームに対して暗号化が有効になっているかどうかを検出する)
このガードレールにより、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
Detect Whether Unrestricted Incoming TCP Traffic is Allowed (無制限の着信 TCP トラフィックが許可されているかどうかを検出する)
このガードレールは、無制限の着信 TCP トラフィックが許可されているかどうかを検出することで、サーバーがリスクにさらされるのを軽減するのに役立ちます。これにより、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
Detect Whether Unrestricted Internet Connection Through SSH is Allowed (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
Detect Whether MFA for the Root User is Enabled (ルートユーザーに対して MFA が有効になっているかどうかを検出する)
このガードレールにより、管理アカウントのルートユーザーに対して多要素認証 (MFA、Multi-Factor Authentication) が有効になっているかどうかが検出されます。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
Detect Whether Public Read Access to Amazon S3 Buckets is Allowed (Simple Storage Service (Amazon S3) バケットへのパブリック読み取りアクセスが許可されているかどうかを検出する)
このガードレールにより、Simple Storage Service (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
Detect Whether Public Write Access to Amazon S3 Buckets is Allowed (Simple Storage Service (Amazon S3) バケットへのパブリック書き込みアクセスが許可されているかどうかを検出する)
このガードレールにより、Simple Storage Service (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
Detect Whether Amazon EBS Volumes are Attached to Amazon EC2 Instances (Amazon EBS ボリュームが Amazon EC2 インスタンスにアタッチされているかどうかを検出する)
このガードレールは、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
Detect Whether Amazon EBS Optimization is Enabled for Amazon EC2 Instances (Amazon EC2 インスタンスに対して Amazon EBS 最適化が有効になっているかどうかを検出する)
パフォーマンスに最適化された 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
Detect Whether Public Access to Amazon RDS Database Instances is Enabled (Amazon RDS データベースインスタンスへのパブリックアクセスが有効になっているかどうかを検出する)
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
Detect Whether Public Access to Amazon RDS Database Snapshots is Enabled (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
Detect Whether Storage Encryption is Enabled for Amazon RDS Database Instances (Amazon RDS データベースインスタンスに対してストレージ暗号化が有効になっているかどうかを検出する)
保存時に暗号化されていない 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