기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
CloudFormation 수집 스택: CFN 검사기 예제
이 예제는 성공적인 수집을 위해 템플릿을 준비하는 데 도움이 될 수 있습니다.
형식 검증
템플릿에 "리소스" 섹션이 포함되어 있고 템플릿 아래에 정의된 모든 리소스에 "유형" 값이 있는지 확인합니다.
{ "AWSTemplateFormatVersion": "2010-09-09", "Description" : "Create a SNS topic", "Resources": { "SnsTopic": { "Type": "AWS::SNS::Topic" } } }
템플릿의 루트 키가 허용되는지 확인합니다. 허용되는 루트 키는 다음과 같습니다.
[ "AWSTemplateFormatVersion", "Description", "Mappings", "Parameters", "Conditions", "Resources", "Rules", "Outputs", "Metadata" ]
수동 검토 필수 검증
템플릿에 다음 리소스가 포함된 경우 자동 검증이 실패하고 수동 검토가 필요합니다.
표시된 정책은 보안 관점에서 고위험 영역입니다. 예를 들어 특정 사용자 또는 그룹을 제외한 모든 사용자가 객체를 생성하거나 권한을 쓸 수 있도록 허용하는 S3 버킷 정책은 매우 위험합니다. 따라서 정책을 검증하고 내용을 기반으로 승인 또는 거부하며 이러한 정책은 자동으로 생성할 수 없습니다. 이 문제를 해결하기 위해 가능한 접근 방식을 조사하고 있습니다.
현재 다음 리소스에 대한 자동 검증은 없습니다.
[ "S3::BucketPolicy", "SNS::TopicPolicy", "SQS::QueuePolicy" ]
파라미터 확인
템플릿 파라미터에 값이 제공되지 않은 경우 기본값이 있어야 합니다.
리소스 속성 검증
필수 속성 검사: 특정 리소스 유형에 대해 특정 속성이 있어야 합니다.
에 "VPCOptions"가 있어야 합니다.
AWS::OpenSearch::Domain"CludsterSubnetGroupName"이에 있어야 합니다.
AWS::Redshift::Cluster
{ "AWS::OpenSearch::Domain": [ "VPCOptions" ], "AWS::Redshift::Cluster": [ "ClusterSubnetGroupName" ] }
허용되지 않는 속성 검사: 특정 리소스 유형에는 특정 속성이 *not* 존재해야 합니다.
"AWS::SecretsManager::Secret"에 "SecretString"이 없어야 합니다.AWS::SecretsManager::Secret
“AWS::DMS::EndpointMongoDbSettings”가 없어야 합니다.
{ "AWS::SecretsManager::Secret": [ "SecretString" ], "AWS::DMS::Endpoint": [ "MongoDbSettings" ] }
SSM 파라미터 검사: 다음 목록의 속성의 경우 Secrets Manager 또는 Systems Manager Parameter Store(Secure String Parameter)를 통해 값을 지정해야 합니다.
{ "RDS::DBInstance": [ "MasterUserPassword", "TdeCredentialPassword" ], "RDS::DBCluster": [ "MasterUserPassword" ], "ElastiCache::ReplicationGroup": [ "AuthToken" ], "DMS::Certificate": [ "CertificatePem", "CertificateWallet" ], "DMS::Endpoint": [ "Password" ], "CodePipeline::Webhook": { "AuthenticationConfiguration": [ "SecretToken" ] }, "DocDB::DBCluster": [ "MasterUserPassword" ] },
일부 속성은 특정 패턴을 준수해야 합니다. 예를 들어 IAM 인스턴스 프로파일 이름은 AMS 예약 접두사로 시작해서는 안 되며 속성 값은 다음과 같이 특정 정규식과 일치해야 합니다.
{ "AWS::EC2::Instance": { "IamInstanceProfile": [ "^(?!arn:aws:iam|ams|Ams|AMS|AWSManagedServices|Managed_Services|mc|Mc|MC|sentinel|Sentinel).+", "arn:aws:iam::(\\$\\{AWS::AccountId\\}|[0-9]+):instance-profile/(?!ams|Ams|AMS|AWSManagedServices|Managed_Services|mc|Mc|MC|sentinel|Sentinel).+" ] }, "AWS::AutoScaling::LaunchConfiguration": { "IamInstanceProfile": [ "^(?!arn:aws:iam|ams|Ams|AMS|AWSManagedServices|Managed_Services|mc|Mc|MC|sentinel|Sentinel).+", "arn:aws:iam::(\\$\\{AWS::AccountId\\}|[0-9]+):instance-profile/(?!ams|Ams|AMS|AWSManagedServices|Managed_Services|mc|Mc|MC|sentinel|Sentinel).+" ] }, "AWS::EC2::LaunchTemplate": { "LaunchTemplateData.IamInstanceProfile.Name": [ "^(?!ams|Ams|AMS|AWSManagedServices|Managed_Services|mc|Mc|MC|sentinel|Sentinel).+" ], "LaunchTemplateData.IamInstanceProfile.Arn": [ "arn:aws:iam::(\\$\\{AWS::AccountId\\}|[0-9]+):instance-profile\/(?!ams|Ams|AMS|AWSManagedServices|Managed_Services|mc|Mc|MC|sentinel|Sentinel).+" ] } }
리소스 검증
템플릿에는 허용 목록에 있는 리소스만 지정할 수 있습니다. 이러한 리소스는에 설명되어 있습니다지원되는 리소스.
패치 적용 제한으로 인해 동일한 스택에서 EC2 스택과 Auto Scaling 그룹(ASGs)이 허용되지 않습니다.
보안 그룹 수신 규칙 검증
CFN Ingest Create 또는 Stack Update CT 변경 유형에서 오는 요청의 경우:
(
IpProtocol는 tcp 또는 6) AND (포트는 80 또는 443) 인 경우CidrIP값에 대한 제한이 없습니다.그렇지 않으면는 0.0.0.0/0이 될 수
CidrIP없습니다.
Service Catalog(Service Catalog 제품)에서 오는 요청의 경우:
CFN Ingest Create 또는 Stack Update CT 변경 유형 검증 외에도의 프로토콜이
management_ports있는의 포트는allowed_cidrs를 통해서만 액세스할ip_protocols수 있습니다.{ "ip_protocols": ["tcp", "6", "udp", "17"], "management_ports": [22, 23, 389, 636, 1494, 1604, 2222, 3389, 5900, 5901, 5985, 5986], "allowed_cidrs": ["10.0.0.0/8", "100.64.0.0/10", "172.16.0.0/12", "192.168.0.0/16"] }