翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
CloudFormation 取り込みスタック: CFN 検証の例
これらの例は、取り込みを成功させるためにテンプレートを準備するのに役立ちます。
形式検証
テンプレートに「リソース」セクションが含まれ、テンプレートの下に定義されているすべてのリソースに「タイプ」値があることを確認します。
{ "AWSTemplateFormatVersion": "2010-09-09", "Description" : "Create a SNS topic", "Resources": { "SnsTopic": { "Type": "AWS::SNS::Topic" } } }
テンプレートのルートキーが許可されていることを確認します。許可されるルートキーは次のとおりです。
[ "AWSTemplateFormatVersion", "Description", "Mappings", "Parameters", "Conditions", "Resources", "Rules", "Outputs", "Metadata" ]
手動レビューで必要な検証
テンプレートに次のリソースが含まれている場合、自動検証は失敗し、手動によるレビューが必要になります。
表示されるポリシーは、セキュリティの観点から見ると高リスク領域です。たとえば、特定のユーザーまたはグループ以外のユーザーがオブジェクトを作成したり、アクセス許可を書き込んだりすることを許可する S3 バケットポリシーは非常に危険です。そのため、ポリシーを検証し、内容に基づいて承認または拒否します。これらのポリシーは自動作成できません。この問題に対応するための可能なアプローチを調査しています。
現在、以下のリソースに関する自動検証はありません。
[ "S3::BucketPolicy", "SNS::TopicPolicy", "SQS::QueuePolicy" ]
パラメータ検証
テンプレートパラメータに値が指定されていない場合は、デフォルト値を指定する必要があります。
リソース属性の検証
必須属性チェック: 特定のリソースタイプには、特定の属性が存在している必要があります。
VPCOptions」は に存在する必要があります
AWS::OpenSearch::DomainCludsterSubnetGroupName」は に存在する必要があります
AWS::Redshift::Cluster
{ "AWS::OpenSearch::Domain": [ "VPCOptions" ], "AWS::Redshift::Cluster": [ "ClusterSubnetGroupName" ] }
許可されていない属性チェック: 特定の属性は、特定のリソースタイプに *存在してはいけません*。
「SecretString」は「AWS::SecretsManager::Secret」に存在しません
「MongoDbSettings」は「AWS::DMS::Endpoint」に存在してはいけません
{ "AWS::SecretsManager::Secret": [ "SecretString" ], "AWS::DMS::Endpoint": [ "MongoDbSettings" ] }
SSM パラメータチェック: 次のリストの属性の場合、値は Secrets Manager または Systems Manager パラメータストア (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" ] },
一部の属性は特定のパターンに準拠する必要があります。たとえば、IAM インスタンスプロファイル名は AMS 予約プレフィックスで始まることはできません。属性値は、次に示すように特定の正規表現と一致する必要があります。
{ "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).+" ] } }
リソースの検証
テンプレートでは、許可リストに登録されたリソースのみを指定できます。これらのリソースについては、「」を参照してくださいサポートされているリソース。
パッチ適用の制限により、EC2 スタックと Auto Scaling グループ (ASGs) は同じスタックで許可されません。
セキュリティグループの進入ルールの検証
CFN Ingest Create または Stack Update CT 変更タイプからのリクエストの場合:
(
IpProtocolが tcp または 6) かつ (ポートが 80 または 443) の場合、CidrIP値に制限はありません。それ以外の場合、 を 0.0.0.0/0 に
CidrIPすることはできません。
Service Catalog (Service Catalog 製品) からのリクエストの場合:
CFN Ingest Create または Stack Update CT の変更タイプ検証に加えて、 のプロトコル
management_portsを持つ のポートには、 経由でip_protocolsのみアクセスできます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"] }