CloudFormation tumpukan cerna: contoh validator CFN - Panduan Pengembang Aplikasi AMS Advanced

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 nilai CidrIP

    • Jika tidak, tidak CidrIP bisa 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_ports dengan protokol di hanya ip_protocols dapat 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"] }