

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
<a name="ex-cfn-ingest-validator"></a>

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

## Convalida del formato
<a name="cfn-validator-templates"></a>

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"
]
```

## Convalida manuale di Managed Automation
<a name="cfn-validator-ex-man"></a>

Se il modello contiene le seguenti risorse, la convalida automatica fallisce e sarà necessaria 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, tranne 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
<a name="cfn-validator-examples-param"></a>

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

## Convalida degli attributi delle risorse
<a name="cfn-validator-examples-resource-atts"></a>

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](https://docs.aws.amazon.com/managedservices/latest/userguide/ams-reserved-prefixes) 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
<a name="cfn-validator-examples-resources"></a>

Nel modello possono essere specificate solo le risorse consentite; tali risorse sono descritte in. [Risorse supportate](cfn-ingest-supp-services.md)

Gli stack EC2 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
<a name="cfn-validator-examples-sg-ingress"></a>
+ 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 provenienti 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"]
      }
    ```