CloudFormation pila de ingesta: ejemplos de validadores CFN - Guía para desarrolladores de aplicaciones avanzadas de AMS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

CloudFormation pila de ingesta: ejemplos de validadores CFN

Estos ejemplos pueden ayudarte a preparar tu plantilla para una ingesta exitosa.

Validación de formato

Compruebe que la plantilla contenga una sección de «Recursos» y que todos los recursos definidos en ella tengan un valor de «Tipo».

{ "AWSTemplateFormatVersion": "2010-09-09", "Description" : "Create a SNS topic", "Resources": { "SnsTopic": { "Type": "AWS::SNS::Topic" } } }

Valide que las claves raíz de la plantilla estén permitidas. Las claves raíz permitidas son:

[ "AWSTemplateFormatVersion", "Description", "Mappings", "Parameters", "Conditions", "Resources", "Rules", "Outputs", "Metadata" ]

La revisión manual requiere validación

Si la plantilla contiene los siguientes recursos, la validación automática fallará y necesitarás una revisión manual.

Las políticas que se muestran son áreas de alto riesgo desde el punto de vista de la seguridad. Por ejemplo, una política de compartimentos de S3 que permita a cualquier persona, excepto a usuarios o grupos específicos, crear objetos o escribir permisos es extremadamente peligrosa. Por lo tanto, validamos las políticas y las aprobamos o rechazamos en función del contenido, y esas políticas no se pueden crear automáticamente. Estamos investigando posibles enfoques para abordar este problema.

Actualmente, no contamos con una validación automática de los siguientes recursos.

[ "S3::BucketPolicy", "SNS::TopicPolicy", "SQS::QueuePolicy" ]

Validación de parámetros

Valide que si un parámetro de plantilla no tiene un valor proporcionado, debe tener un valor predeterminado.

Validación de atributos de recursos

Verificación de atributos obligatoria: deben existir ciertos atributos para ciertos tipos de recursos.

  • "VPCOptions" debe existir en AWS::OpenSearch::Domain

  • "CludsterSubnetGroupName" debe existir en AWS::Redshift::Cluster

{ "AWS::OpenSearch::Domain": [ "VPCOptions" ], "AWS::Redshift::Cluster": [ "ClusterSubnetGroupName" ] }

Verificación de atributos no permitidos: ciertos atributos *no* deben existir para ciertos tipos de recursos.

  • "SecretString" no debe existir en "» AWS::SecretsManager::Secret

  • "MongoDbSettings" no debe existir en "AWS::DMS::Endpoint»

{ "AWS::SecretsManager::Secret": [ "SecretString" ], "AWS::DMS::Endpoint": [ "MongoDbSettings" ] }

Comprobación de parámetros SSM: para los atributos de la siguiente lista, los valores deben especificarse mediante Secrets Manager o 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" ] },

Algunos atributos deben cumplir ciertos patrones; por ejemplo, los nombres de los perfiles de las instancias de IAM no deben empezar con prefijos reservados de AMS y el valor del atributo debe coincidir con la expresión regular específica, como se muestra:

{ "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).+" ] } }

Validación de recursos

En la plantilla solo se pueden especificar los recursos permitidos; esos recursos se describen en. Recursos admitidos

EC2 Las pilas y los grupos de Auto Scaling (ASGs) no están permitidos en la misma pila debido a las limitaciones de aplicación de parches.

Validación de las reglas de ingreso de grupos de seguridad

  • Para las solicitudes que provienen de los tipos de cambio CFN Ingest Create o Stack Update CT:

    • Si (IpProtocoles tcp o 6) AND (el puerto es 80 o 443), no hay restricciones en cuanto al valor CidrIP

    • De lo contrario, CidrIP no puede ser 0.0.0.0/0

  • Para las solicitudes que provienen de Service Catalog (productos de Service Catalog):

    • Además de la validación del tipo de cambio CFN Ingest Create o Stack Update CT, solo se ip_protocols puede acceder al puerto de entrada management_ports con el protocolo introducido a través de: 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"] }