As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
CloudFormation pilha de ingestão: exemplos de validadores CFN
Esses exemplos podem ajudar você a preparar seu modelo para uma ingestão bem-sucedida.
Validação de formato
Verifique se o modelo contém uma seção “Recursos” e se todos os recursos definidos nele têm um valor de “Tipo”.
{ "AWSTemplateFormatVersion": "2010-09-09", "Description" : "Create a SNS topic", "Resources": { "SnsTopic": { "Type": "AWS::SNS::Topic" } } }
Valide se as chaves raiz do modelo são permitidas. As chaves raiz permitidas são:
[ "AWSTemplateFormatVersion", "Description", "Mappings", "Parameters", "Conditions", "Resources", "Rules", "Outputs", "Metadata" ]
Revisão manual necessária e validação
Se o modelo contiver os seguintes recursos, a validação automática falhará e você precisará de uma revisão manual.
As políticas mostradas são áreas de alto risco do ponto de vista da segurança. Por exemplo, uma política de bucket do S3 que permite que qualquer pessoa, exceto usuários ou grupos específicos, crie objetos ou escreva permissões é extremamente perigosa. Portanto, validamos as políticas e aprovamos ou negamos com base no conteúdo, e essas políticas não podem ser criadas automaticamente. Estamos investigando possíveis abordagens para resolver esse problema.
Atualmente, não temos validação automática dos seguintes recursos.
[ "S3::BucketPolicy", "SNS::TopicPolicy", "SQS::QueuePolicy" ]
Validação de parâmetros
Valide isso se um parâmetro do modelo não tiver um valor fornecido, ele deverá ter um valor padrão.
Validação de atributos de recursos
Verificação de atributos obrigatória: certos atributos devem existir para determinados tipos de recursos.
“VPCOptions" deve existir em
AWS::OpenSearch::Domain“CludsterSubnetGroupName" deve existir em
AWS::Redshift::Cluster
{ "AWS::OpenSearch::Domain": [ "VPCOptions" ], "AWS::Redshift::Cluster": [ "ClusterSubnetGroupName" ] }
Verificação de atributos não permitidos: certos atributos *não* devem existir para determinados tipos de recursos.
“SecretString" não deve existir em "AWS::SecretsManager::Secret”
“MongoDbSettings" não deve existir em "AWS::DMS::Endpoint”
{ "AWS::SecretsManager::Secret": [ "SecretString" ], "AWS::DMS::Endpoint": [ "MongoDbSettings" ] }
Verificação de parâmetros SSM: Para atributos na lista a seguir, os valores devem ser especificados por meio do Secrets Manager ou do 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" ] },
Alguns atributos devem estar em conformidade com determinados padrões; por exemplo, nomes de perfil de instância do IAM não devem começar com prefixos reservados do AMS, e o valor do atributo deve corresponder ao regex específico, conforme mostrado:
{ "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).+" ] } }
Validação de recursos
Somente os recursos da lista de permissões podem ser especificados no modelo; esses recursos estão descritos emRecursos compatíveis.
EC2 pilhas e grupos de Auto Scaling ASGs () não são permitidos na mesma pilha devido a limitações de patches.
Validação da regra de entrada do grupo de segurança
Para solicitações provenientes dos tipos de alteração CFN Ingest Create ou Stack Update CT:
Se (
IpProtocolé tcp ou 6) AND (a porta é 80 ou 443), não há restrições em relação ao valorCidrIPCaso contrário,
CidrIPnão pode ser 0.0.0.0/0
Para solicitações provenientes do Service Catalog (produtos do Service Catalog):
Além da validação do tipo de alteração do CFN Ingest Create ou Stack Update CT, a porta
management_portscom o protocolo de entrada sóip_protocolspode ser acessada 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"] }