CloudFormation ingest stack: esempi di validatori CFN - Guida per gli sviluppatori di applicazioni AMS Advanced

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

CloudFormation ingest stack: esempi di validatori CFN

Questi esempi possono aiutarti a preparare il tuo modello per un'importazione di successo.

Convalida del formato

Verifica che il modello contenga una sezione «Risorse» e che tutte le risorse in essa definite abbiano un valore «Tipo».

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

Verifica che le chiavi principali del modello siano consentite. Le chiavi principali consentite sono:

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

La revisione manuale richiede la convalida

Se il modello contiene le seguenti risorse, la convalida automatica fallisce e avrai bisogno di una revisione manuale.

Le politiche mostrate sono aree ad alto rischio dal punto di vista della sicurezza. Ad esempio, una policy sui bucket S3 che consente a chiunque, ad eccezione di utenti o gruppi specifici, di creare oggetti o autorizzazioni di scrittura è estremamente pericolosa. Pertanto convalidiamo le politiche e le approviamo o neghiamo in base ai contenuti, e tali politiche non possono essere create automaticamente. Stiamo esaminando possibili approcci per risolvere questo problema.

Al momento non disponiamo di una convalida automatica delle seguenti risorse.

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

Convalida dei parametri

Convalidalo se a un parametro del modello non viene fornito un valore; deve avere un valore predefinito.

Convalida degli attributi delle risorse

Controllo degli attributi obbligatorio: determinati attributi devono esistere per determinati tipi di risorse.

  • "VPCOptions" deve esistere in AWS::OpenSearch::Domain

  • "CludsterSubnetGroupName" deve esistere in AWS::Redshift::Cluster

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

Controllo degli attributi non consentiti: alcuni attributi devono *non* esistere per determinati tipi di risorse.

  • "SecretString" non deve esistere in "» AWS::SecretsManager::Secret

  • "MongoDbSettings" non deve esistere in "AWS::DMS::Endpoint»

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

Controllo dei parametri SSM: per gli attributi nell'elenco seguente, i valori devono essere specificati tramite 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" ] },

Alcuni attributi devono rispettare determinati modelli; ad esempio, i nomi dei profili delle istanze IAM non devono iniziare con prefissi riservati AMS e il valore dell'attributo deve corrispondere all'espressione regolare specifica, come mostrato:

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

Convalida delle risorse

Nel modello possono essere specificate solo le risorse consentite; tali risorse sono descritte in. Risorse supportate

EC2 gli stack e i gruppi Auto Scaling ASGs () non sono consentiti nello stesso stack a causa delle limitazioni di applicazione delle patch.

Convalida delle regole di ingresso dei gruppi di sicurezza

  • Per le richieste che provengono dai tipi di modifica CFN Ingest Create o Stack Update CT:

    • Se (IpProtocolè tcp o 6) AND (Port è 80 o 443), non ci sono restrizioni sul valore CidrIP

    • Altrimenti, non CidrIP può essere 0.0.0.0/0

  • Per le richieste che provengono da Service Catalog (prodotti Service Catalog):

    • Oltre alla convalida del tipo di modifica CFN Ingest Create o Stack Update CT, è ip_protocols possibile accedere alla porta management_ports con il protocollo in ingresso solo tramite: 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"] }