Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
CloudFormation tumpukan cerna: contoh validator CFN
Contoh-contoh ini dapat membantu Anda mempersiapkan template Anda untuk penyerapan yang sukses.
Format validasi
Validasi bahwa template berisi bagian “Sumber Daya”, dan semua sumber daya yang ditentukan di bawahnya memiliki nilai “Jenis”.
{ "AWSTemplateFormatVersion": "2010-09-09", "Description" : "Create a SNS topic", "Resources": { "SnsTopic": { "Type": "AWS::SNS::Topic" } } }
Validasi bahwa kunci root template diizinkan. Kunci root yang diizinkan adalah:
[ "AWSTemplateFormatVersion", "Description", "Mappings", "Parameters", "Conditions", "Resources", "Rules", "Outputs", "Metadata" ]
Tinjauan manual diperlukan validasi
Jika template berisi sumber daya berikut, validasi otomatis gagal dan Anda memerlukan tinjauan manual.
Kebijakan yang ditampilkan adalah area berisiko tinggi dari sudut pandang keamanan. Misalnya, kebijakan bucket S3 yang mengizinkan siapa pun kecuali pengguna atau grup tertentu untuk membuat objek atau izin menulis, sangat berbahaya. Jadi kami memvalidasi kebijakan dan menyetujui atau menolak berdasarkan konten, dan kebijakan tersebut tidak dapat dibuat secara otomatis. Kami sedang menyelidiki kemungkinan pendekatan untuk mengatasi masalah ini.
Saat ini kami tidak memiliki validasi otomatis di sekitar sumber daya berikut.
[ "S3::BucketPolicy", "SNS::TopicPolicy", "SQS::QueuePolicy" ]
Validasi parameter
Validasi bahwa jika parameter template tidak memiliki nilai yang disediakan; itu harus memiliki nilai default.
Validasi atribut sumber daya
Pemeriksaan atribut yang diperlukan: Atribut tertentu harus ada untuk jenis sumber daya tertentu.
“VPCOptions” harus ada di
AWS::OpenSearch::Domain“CludsterSubnetGroupName” harus ada di
AWS::Redshift::Cluster
{ "AWS::OpenSearch::Domain": [ "VPCOptions" ], "AWS::Redshift::Cluster": [ "ClusterSubnetGroupName" ] }
Pemeriksaan atribut yang tidak diizinkan: Atribut tertentu harus*tidak* ada untuk jenis sumber daya tertentu.
“SecretString" tidak boleh ada di "AWS::SecretsManager::Secret”
“MongoDbSettings" tidak boleh ada di "AWS::DMS::Endpoint”
{ "AWS::SecretsManager::Secret": [ "SecretString" ], "AWS::DMS::Endpoint": [ "MongoDbSettings" ] }
Pemeriksaan parameter SSM: Untuk atribut dalam daftar berikut, nilai harus ditentukan melalui Secrets Manager atau Systems Manager Parameter Store (Parameter String Aman):
{ "RDS::DBInstance": [ "MasterUserPassword", "TdeCredentialPassword" ], "RDS::DBCluster": [ "MasterUserPassword" ], "ElastiCache::ReplicationGroup": [ "AuthToken" ], "DMS::Certificate": [ "CertificatePem", "CertificateWallet" ], "DMS::Endpoint": [ "Password" ], "CodePipeline::Webhook": { "AuthenticationConfiguration": [ "SecretToken" ] }, "DocDB::DBCluster": [ "MasterUserPassword" ] },
Beberapa atribut harus sesuai dengan pola tertentu; misalnya, nama profil instans IAM tidak boleh dimulai dengan awalan cadangan AMS, dan nilai atribut harus cocok dengan regex tertentu seperti yang ditunjukkan:
{ "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).+" ] } }
Validasi sumber daya
Hanya sumber daya yang diizinkan yang dapat ditentukan dalam templat; sumber daya tersebut dijelaskan dalamSumber Daya yang Didukung.
EC2 tumpukan dan grup Auto Scaling ASGs () tidak diizinkan dalam tumpukan yang sama karena batasan penambalan.
Validasi aturan masuknya grup keamanan
Untuk permintaan yang berasal dari CFN Ingest Create atau Stack Update CT jenis perubahan:
Jika (
IpProtocoladalah tcp atau 6) AND (Port adalah 80 atau 443), tidak ada batasan di sekitar nilaiCidrIPJika tidak, tidak
CidrIPbisa 0.0.0.0/0
Untuk permintaan yang berasal dari Service Catalog (produk Service Catalog):
Selain validasi jenis perubahan CFN Ingest Create atau Stack Update CT, port
management_portsdengan protokol di hanyaip_protocolsdapat diakses melalui:allowed_cidrs{ "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"] }