

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# CloudFormation Ingest-Stack: Beispiele für CFN-Validatoren
<a name="ex-cfn-ingest-validator"></a>

Diese Beispiele können Ihnen helfen, Ihre Vorlage für eine erfolgreiche Aufnahme vorzubereiten.

## Validierung des Formats
<a name="cfn-validator-templates"></a>

Stellen Sie sicher, dass die Vorlage einen Abschnitt „Ressourcen“ enthält und dass alle darunter definierten Ressourcen den Wert „Typ“ haben.

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

Stellen Sie sicher, dass die Stammschlüssel der Vorlage zulässig sind. Zulässige Stammschlüssel sind:

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

## Manuelle Validierung durch verwaltete Automatisierung
<a name="cfn-validator-ex-man"></a>

Wenn die Vorlage die folgenden Ressourcen enthält, schlägt die automatische Validierung fehl und Sie müssen manuell überprüft werden.

Die aufgeführten Richtlinien stellen aus Sicherheitsgründen Bereiche mit hohem Risiko dar. Eine S3-Bucket-Richtlinie, die es jedem außer bestimmten Benutzern oder Gruppen ermöglicht, Objekte zu erstellen oder Schreibberechtigungen zu erteilen, ist beispielsweise extrem gefährlich. Daher validieren wir die Richtlinien und genehmigen oder verweigern sie auf der Grundlage des Inhalts, und diese Richtlinien können nicht automatisch erstellt werden. Wir untersuchen mögliche Lösungsansätze für dieses Problem.

Derzeit verfügen wir nicht über eine automatisierte Validierung der folgenden Ressourcen.

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

## Parametervalidierung
<a name="cfn-validator-examples-param"></a>

Überprüfen Sie, ob für einen Vorlagenparameter ein Standardwert angegeben wurde, wenn für ihn kein Wert angegeben wurde.

## Validierung von Ressourcenattributen
<a name="cfn-validator-examples-resource-atts"></a>

Erforderliche Attributprüfung: Bestimmte Attribute müssen für bestimmte Ressourcentypen existieren.
+ "VPCOptions" muss existieren in `AWS::OpenSearch::Domain`
+ "CludsterSubnetGroupName" muss existieren in `AWS::Redshift::Cluster`

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

Überprüfung unzulässiger Attribute: Bestimmte Attribute darfen\*nicht\* für bestimmte Ressourcentypen existieren.
+ "SecretString" darf nicht existieren in "“ AWS::SecretsManager::Secret
+ "MongoDbSettings" darf nicht in "AWS::DMS::Endpoint“ existieren

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

SSM-Parameterprüfung: Für Attribute in der folgenden Liste müssen Werte über Secrets Manager oder Systems Manager Parameter Store (Secure String Parameter) angegeben werden:

```
{
  "RDS::DBInstance": [
    "MasterUserPassword",   
    "TdeCredentialPassword"  
  ],  
  "RDS::DBCluster": [
    "MasterUserPassword"  
  ],  
  "ElastiCache::ReplicationGroup": [
    "AuthToken"  
  ],  
  "DMS::Certificate": [
    "CertificatePem",    
    "CertificateWallet" 
  ],  
  "DMS::Endpoint": [
    "Password"  
  ],
  "CodePipeline::Webhook": {
    "AuthenticationConfiguration": [
        "SecretToken"  
    ]
  },
  "DocDB::DBCluster": [
    "MasterUserPassword"
  ]
},
```

Einige Attribute müssen bestimmten Mustern entsprechen. Beispielsweise dürfen Profilnamen von IAM-Instanzen nicht mit [reservierten AMS-Präfixen](https://docs.aws.amazon.com/managedservices/latest/userguide/ams-reserved-prefixes) beginnen, und der Attributwert muss der spezifischen Regex entsprechen, wie hier gezeigt:

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

## Validierung von Ressourcen
<a name="cfn-validator-examples-resources"></a>

In der Vorlage können nur Ressourcen angegeben werden, die auf der Zulassungsliste stehen. Diese Ressourcen werden unter beschrieben. [Unterstützte Ressourcen](cfn-ingest-supp-services.md)

EC2-Stacks und Auto Scaling Scaling-Gruppen (ASGs) sind aufgrund von Patching-Einschränkungen nicht im selben Stack zulässig.

## Überprüfung der Regeln für eingehenden Zugriff auf Sicherheitsgruppen
<a name="cfn-validator-examples-sg-ingress"></a>
+ Für Anfragen, die aus den CT-Änderungstypen CFN Ingest Create oder Stack Update CT stammen:
  + Wenn (`IpProtocol`ist tcp oder 6) UND (Port ist 80 oder 443), gibt es keine Einschränkungen in Bezug auf den Wert `CidrIP`
  + Andernfalls kann er `CidrIP` nicht 0.0.0.0/0 sein
+ Für Anfragen aus Service Catalog (Service Catalog-Produkte):
  + Zusätzlich zur Überprüfung des CT-Änderungstyps CFN Ingest Create oder Stack Update CT `ip_protocols` kann auf den Port `management_ports` mit dem eingegebenen Protokoll nur zugegriffen werden über: `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"]
      }
    ```