Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
CloudFormation ingest stack : exemples de validateurs CFN
Ces exemples peuvent vous aider à préparer votre modèle en vue d'une ingestion réussie.
Validation du format
Vérifiez que le modèle contient une section « Ressources » et que toutes les ressources définies sous celui-ci ont une valeur « Type ».
{ "AWSTemplateFormatVersion": "2010-09-09", "Description" : "Create a SNS topic", "Resources": { "SnsTopic": { "Type": "AWS::SNS::Topic" } } }
Vérifiez que les clés racines du modèle sont autorisées. Les clés root autorisées sont les suivantes :
[ "AWSTemplateFormatVersion", "Description", "Mappings", "Parameters", "Conditions", "Resources", "Rules", "Outputs", "Metadata" ]
Validation requise pour la révision manuelle
Si le modèle contient les ressources suivantes, la validation automatique échoue et vous devez procéder à une révision manuelle.
Les politiques présentées sont des zones à haut risque du point de vue de la sécurité. Par exemple, une politique de compartiment S3 permettant à quiconque, à l'exception d'utilisateurs ou de groupes spécifiques, de créer des objets ou d'écrire des autorisations est extrêmement dangereuse. Nous validons donc les politiques et les approuvons ou les refusons en fonction du contenu, et ces politiques ne peuvent pas être créées automatiquement. Nous étudions des approches possibles pour résoudre ce problème.
Nous n'avons actuellement pas de validation automatique pour les ressources suivantes.
[ "S3::BucketPolicy", "SNS::TopicPolicy", "SQS::QueuePolicy" ]
Validation de paramètres
Vérifiez que si aucune valeur n'est fournie pour un paramètre de modèle, il doit avoir une valeur par défaut.
Validation des attributs de ressources
Vérification des attributs requise : certains attributs doivent exister pour certains types de ressources.
« VPCOptions » doit exister dans
AWS::OpenSearch::Domain« CludsterSubnetGroupName » doit exister dans
AWS::Redshift::Cluster
{ "AWS::OpenSearch::Domain": [ "VPCOptions" ], "AWS::Redshift::Cluster": [ "ClusterSubnetGroupName" ] }
Vérification des attributs non autorisés : certains attributs ne doivent *pas* exister pour certains types de ressources.
«SecretString" ne doit pas exister dans "AWS::SecretsManager::Secret»
«MongoDbSettings" ne doit pas exister dans "AWS::DMS::Endpoint»
{ "AWS::SecretsManager::Secret": [ "SecretString" ], "AWS::DMS::Endpoint": [ "MongoDbSettings" ] }
Vérification des paramètres SSM : pour les attributs de la liste suivante, les valeurs doivent être spécifiées via Secrets Manager ou 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" ] },
Certains attributs doivent respecter certains modèles ; par exemple, les noms de profil d'instance IAM ne doivent pas commencer par des préfixes réservés AMS, et la valeur de l'attribut doit correspondre à l'expression régulière spécifique, comme indiqué :
{ "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).+" ] } }
Validation des ressources
Seules les ressources autorisées peuvent être spécifiées dans le modèle ; ces ressources sont décrites dansRessources prises en charge.
EC2 les piles et les groupes Auto Scaling (ASGs) ne sont pas autorisés dans la même pile en raison des limites liées aux correctifs.
Validation des règles d'entrée des groupes de sécurité
Pour les demandes provenant des types de modification CFN Ingest Create ou Stack Update CT :
Si (
IpProtocolest TCP ou 6) ET (le port est 80 ou 443), il n'y a aucune restriction quant à la valeurCidrIPSinon, le
CidrIPne peut pas être 0.0.0.0/0
Pour les demandes provenant de Service Catalog (produits Service Catalog) :
Outre la validation du type de changement de type CFN Ingest Create ou Stack Update CT, le port
management_portscontenant le protocole est uniquementip_protocolsaccessible via :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"] }