권장 가드레일 - AWS Control Tower

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

권장 가드레일

권장 가드레일은 Well-Architected 다중 계정 환경의 모범 사례를 기반으로 합니다. 이런 가드레일은 기본적으로 비활성 상태이며 사용을 중지할 수 있습니다. 아래에는 AWS Control Tower 에서 사용할 수 있는 권장 가드레일 각각에 대한 참조가 있습니다.

루트 사용자를 위한 액세스 키 생성 허용 안 함

루트 사용자를 위한 액세스 키 생성을 허용하지 않음으로써 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" ] } } } ] }

루트 사용자 자격으로 작업 허용 안 함

루트 사용자 자격 증명으로 계정 액세스를 허용 안 함으로써 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" ] } } } ] }

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

무제한 수신 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

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

루트 사용자에 대해 MFA가 활성화되었는지 여부를 감지합니다.

이 가드레일은 관리 계정의 루트 사용자에 대해 Multi-Factor Authentication (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

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

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

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

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

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

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

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