Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

AWS Identity and Access Management で CloudFormation アクセスを制御する

フォーカスモード
AWS Identity and Access Management で CloudFormation アクセスを制御する - AWS CloudFormation

AWS Identity and Access Management (IAM) を使えば、IAM ユーザーを作成して、AWS アカウント の特定のリソースへの、各ユーザーのアクセスを制御することができます。IAM を使用すると、スタックテンプレートの表示、スタックの作成、スタックの削除など、ユーザーが CloudFormation で実行できるアクションを制御できます。

CloudFormation の特定のアクションに加えて、各ユーザーが利用できる AWS サービスおよびリソースを管理できます。この方法で、ユーザーが CloudFormation の使用時にアクセスできるリソースを管理できます。たとえば、Amazon EC2 インスタンスを作成できるユーザー、データベースインスタンスを終了できるユーザ、または VPC を更新できるユーザを指定できます。CloudFormation を使用してそれらのアクションを実行するときは、いつでも同じアクセス許可が適用されます。

CloudFormation にアクセスできるユーザーを制御するときは、次のセクションの情報を使用します。また、テンプレートでの IAM リソースの作成を承認する方法、EC2 インスタンスで実行中のアプリケーションに必要なアクセス許可を付与する方法、AWS 環境のセキュリティ強化のために一時的なセキュリティ認証情報を使用する方法についても説明します。

CloudFormation の IAM アイデンティティベースのポリシーの定義

CloudFormation へのアクセスを許可するには、必要な API アクションを呼び出すためのアクセス許可を、IAM アイデンティティ (ユーザーやロールなど) に付与する IAM ポリシーを作成し、これを割り当てる必要があります。

IAM アイデンティティベースポリシーでは、許可または拒否するアクションとリソース、またアクションを許可または拒否する条件を指定できます。CloudFormation は、特定のアクション、リソース、条件キーをサポートしています。

IAM を初めて使用する場合は、まず IAM JSON ポリシーの要素を理解します。詳細については、「IAM ユーザーガイド」の「IAM JSON ポリシー要素のリファレンス」を参照してください。IAM ポリシーの作成方法については、IAM ドキュメントの「はじめてのカスタマー管理ポリシーの作成とアタッチ」のチュートリアルを参照してください。

CloudFormation のポリシーアクション

IAM ポリシーステートメントの Action 要素では、CloudFormation で提供されている API アクションを指定できます。アクション名には、接頭辞として小文字の文字列 cloudformation: を含める必要があります。例えば、cloudformation:CreateStackcloudformation:CreateChangeSet、および cloudformation:UpdateStack のようになります。

単一のステートメントで複数のアクションを指定するには、次のようにカンマで区切ります。

"Action": [ "cloudformation:action1", "cloudformation:action2" ]

ワイルドカードを使用して複数のアクションを指定することもできます。例えば、Get という単語で始まるアクション名すべてを次のように指定できます。

"Action": "cloudformation:Get*"

cloudformation サービスプレフィックスに関連付けられたアクションの一覧については、「Service Authorization Reference」の「Actions, resources, and condition keys for AWS CloudFormation」および「Actions, resources, and condition keys for AWS Cloud Control API」を参照してください。

以下は、CloudFormation スタックを表示するためのアクセス許可を付与するアクセス許可ポリシーの例です。

例 1: スタックを表示するためのアクセス許可を付与するポリシーの例
{ "Version":"2012-10-17", "Statement":[{ "Effect":"Allow", "Action":[ "cloudformation:DescribeStacks", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStackResource", "cloudformation:DescribeStackResources" ], "Resource":"*" }] }

スタックを作成または削除するユーザーには、スタックテンプレートに基づく追加のアクセス許可が必要です。例えば、テンプレートに Amazon SQS キューが記述されている場合、次のポリシー例に示すように、ユーザーは CloudFormation アクションと Amazon SQS アクションの両方に対するアクセス許可を持っている必要があります。

例 2: スタックアクションの作成と表示、およびすべての Amazon SQS アクションを付与するサンプルポリシー
{ "Version":"2012-10-17", "Statement":[{ "Effect":"Allow", "Action":[ "sqs:*", "cloudformation:CreateStack", "cloudformation:DescribeStacks", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStackResources", "cloudformation:GetTemplate", "cloudformation:ValidateTemplate" ], "Resource":"*" }] }

CloudFormation のコンソール固有のアクション

CloudFormation のコンソールを使用するユーザーには、AWS Command Line Interface または CloudFormation API に必要なアクセス許可に加えて、追加の許可が必要です。これらの追加のアクセス許可は、Amazon S3 バケットへのテンプレートのアップロードや、AWS 固有のパラメータタイプのドロップダウンリストなど、コンソールに固有の機能をサポートしています。

次のすべてのアクションで、すべてのリソースに対するアクセス許可を付与します。その際、特定のスタックまたはバケットに制限しないようにしてください。

次のアクションは、CloudFormation コンソールでのみ使用されるため、API リファレンスには記載されていません。このアクションにより、ユーザーは Amazon S3 バケットにテンプレートをアップロードできるようになります。

  • cloudformation:CreateUploadBucket

ユーザーがテンプレートをアップロードするときは、次の Amazon S3 のアクセス許可も必要になります。

  • s3:PutObject

  • s3:ListBucket

  • s3:GetObject

  • s3:CreateBucket

AWS 固有のパラメータタイプを持つテンプレートで、パラメータ ドロップダウン リストの値を確認するには、ユーザーは、対応する記述 API コールを行うためのアクセス許可が必要です。例えば、これらのパラメータタイプをテンプレートで使用する場合は次のアクセス許可が必要です。

  • ec2:DescribeKeyPairsAWS::EC2::KeyPair::KeyName パラメータタイプに必要。

  • ec2:DescribeSecurityGroupsAWS::EC2::SecurityGroup::Id パラメータタイプに必要。

  • ec2:DescribeSubnetsAWS::EC2::Subnet::Id パラメータタイプに必要。

  • ec2:DescribeVpcsAWS::EC2::VPC::Id パラメータタイプに必要。

AWS 固有のパラメータタイプに関する詳細は、「CloudFormation が提供するパラメータタイプを使用して、実行時に既存のリソースを指定する」を参照してください。

CloudFormation のポリシーリソース

IAM ポリシーステートメントで、Resource 要素は、ステートメントがカバーするオブジェクトを指定します。CloudFormation では、各 IAM ポリシーステートメントは、ユーザーがAmazon リソースネーム(ARN)を使用して指定したリソースに適用されます。具体的 ARN 形式はリソースによって異なります。

CloudFormation リソースのタイプとその ARN のリストの一覧は、「Service Authorization Reference」の「Resource types defined by AWS CloudFormation」を参照してください。各リソースの ARN を使って指定できるアクションについては、「Actions defined by AWS CloudFormation」を参照してください。

次のポリシー例に示すように、特定のスタックのアクションを指定できます。ARN を指定するには、placeholder text をリソース固有の情報に置き換えます。

例 1: 指定したスタックに対するスタックアクションの削除と更新を拒否するサンプルポリシー
{ "Version":"2012-10-17", "Statement":[{ "Effect":"Deny", "Action":[ "cloudformation:DeleteStack", "cloudformation:UpdateStack" ], "Resource":"arn:aws:cloudformation:region:account-id:stack/MyProductionStack/*" }] }

上記のポリシーでは、スタック名の最後にワイルドカードを使用することで、フルスタック ID (arn:aws:cloudformation:region:account-id:stack/MyProductionStack/abc9dbf0-43c2-11e3-a6e8-50fa526be49c など) とスタック名 (MyProductionStack など) の両方に基づいて、スタックの削除と更新を拒否します。

変更セットの作成を AWS::Serverless トランスフォームに許可するには、次のポリシーに示すように、arn:aws:cloudformation:region:aws:transform/Serverless-2016-10-31 リソースレベルのアクセス許可を含めます。

例 2: 指定した変換に対して変更セットの作成アクションを許可するポリシーの例
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "cloudformation:CreateChangeSet" ], "Resource": "arn:aws:cloudformation:region:aws:transform/Serverless-2016-10-31" }] }

CloudFormation のポリシー条件キー

IAM ポリシーのステートメントでは、必要に応じて、ポリシーを有効にするタイミングを制御する条件を指定できます。たとえば、特定のテンプレート URL を指定したときにのみ がユーザーにスタックの作成を許可するように、ポリシーを定義できます。CloudFormation 固有の条件や AWS 全体に対する、ポリシーが有効でなくなるタイミングを指定する DateLessThan などの条件を定義できます。AWS 全体の条件のリストについては、「IAM ユーザーガイド」の「IAM policy elements reference」(IAM ポリシー要素リファレンス) を参照してください。

注記

aws:SourceIp AWS 全体の条件を使用しないでください。CloudFormation はリクエストの送信元 IP アドレスではなく、独自の IP アドレスを使用してリソースをプロビジョニングします。例えば、スタックを作成する際に、CloudFormation は、Amazon EC2 インスタンスを起動したり Amazon S3 バケットを作成したりするために、CreateStack コールや create-stack コマンドを実行した IP アドレスではなく、その IP アドレスからリクエストを行います。

次のリストは、CloudFormation 固有の条件要件について説明しています。これらの条件は、ユーザーがスタックを作成または更新する場合にのみ適用されます。

cloudformation:ChangeSetName

ポリシーに関連付ける CloudFormation 変更セットの名前。この条件を使用して、 ユーザーがどの変更セットを実行、または削除するかを制御します。

cloudformation:ImportResourceTypes

ポリシーに関連付ける、AWS::EC2::Instance などのテンプレートリソースタイプ。この条件を使用して、 ユーザーがスタックにリソースをインポートするときに、操作できるリソースタイプを指定します。この条件は、ユーザーが ResourcesToImport パラメータで宣言したリソースタイプに対して確認されます。このパラメータは、現在のところ AWS CLI および API リクエストでのみサポートされています。このパラメータを使用する場合は、インポートオペレーション中にユーザーが制御するリソースタイプをすべて指定する必要があります。ResourcesToImport パラメータについて詳しくは、「AWS CloudFormation API リファレンス」の「CreateChangeSet アクション」を参照してください。

可能な ResourcesToImport の一覧については、「リソースタイプのサポート」を参照してください。

3 つの部分からなるリソース命名規則を使用して、組織全体のすべてのリソースから個々のリソースタイプまで、ユーザーが操作できるリソースタイプを指定します。

organization::*

所定の組織のすべてのリソースタイプを指定します。

organization::service_name::*

所定の組織内で指定されたサービスのすべてのリソースタイプを指定します。

organization::service_name::resource_type

特定のリソースタイプを指定します。

例:

AWS::*

サポートされているすべての AWS リソースを指定します。

AWS::service_name::*

固有の AWS サービスでサポートされているすべてのリソースを指定します。

AWS::service_name::resource_type

AWS::EC2::Instance (すべての EC2 インスタンス) などの特定の AWS リソースタイプを指定します。

cloudformation:ResourceTypes

ポリシーに関連付ける AWS::EC2::Instance などのテンプレートリソース。この条件を使用して、 ユーザーがスタックを作成または更新したときに、操作できるリソースタイプを指定します。この条件は、ユーザーが ResourceTypes パラメータで宣言したリソースタイプに対して確認されます。このパラメータは、現在のところ AWS CLI および API リクエストでのみサポートされています。このパラメーターを使用する場合、ユーザーはそのテンプレートにあるすべてのリソースタイプを指定する必要があります。ResourceTypes パラメータについて詳しくは、「AWS CloudFormation API リファレンス」の「CreateStack アクション」を参照してください。

リソースタイプのリストについては、「AWS リソースおよびプロパティタイプのリファレンス」を参照してください。

3 つの部分からなるリソース命名規則を使用して、組織全体のすべてのリソースから個々のリソースタイプまで、ユーザーが操作できるリソースタイプを指定します。

organization::*

所定の組織のすべてのリソースタイプを指定します。

organization::service_name::*

所定の組織内で指定されたサービスのすべてのリソースタイプを指定します。

organization::service_name::resource_type

特定のリソースタイプを指定します。

例:

AWS::*

サポートされているすべての AWS リソースを指定します。

AWS::service_name::*

固有の AWS サービスでサポートされているすべてのリソースを指定します。

AWS::service_name::resource_type

AWS::EC2::Instance (すべての EC2 インスタンス) などの特定の AWS リソースタイプを指定します。

Alexa::ASK::*

Alexa スキルキットですべてのリソースタイプを指定します。

Alexa::ASK::Skill

個々の Alexa::ASK::Skill リソースタイプを指定します。

Custom::*

すべてのカスタムリソースを指定します。

詳細については、「カスタムリソースを使用してカスタムプロビジョニングロジックを作成する」を参照してください。

Custom::resource_type

特定のカスタムリソースタイプを指定します。

詳細については、「カスタムリソースを使用してカスタムプロビジョニングロジックを作成する」を参照してください。

cloudformation:RoleARN

ポリシーに関連付ける IAM サービスロールの Amazon リソースネーム (ARN)。この条件を使用して、 ユーザーがスタックまたは変更セットを操作するとき、どのサービスロールを使用できるかを制御します。

cloudformation:StackPolicyUrl

ポリシーに関連付ける Amazon S3 スタックポリシーの URL。 ユーザーがスタックの作成または更新アクション時にスタックに関連付けることができるスタックポリシーを制御するには、この条件を使用します。スタックポリシーの詳細については、「スタックのリソースが更新されないようにする」を参照してください。

注記

アップロードしたスタックポリシーを使用した場合にのみユーザーがスタックを作成または更新できるようにするには、それらのユーザーのために S3 バケットを読み取り専用に設定します。

cloudformation:TemplateUrl

ポリシーに関連付ける Amazon S3 テンプレートの URL。この条件を使用して、スタックを作成または更新したときに ユーザーが使用できるテンプレートを指定します。

注記

アップロードしたテンプレートを使用した場合にのみユーザーがスタックを作成または更新できるようにするには、それらのユーザーのために S3 バケットを読み取り専用に設定します。

注記

同じ名前の API パラメータには、次の CloudFormation 固有の条件が適用されます。

  • cloudformation:ChangeSetName

  • cloudformation:RoleARN

  • cloudformation:StackPolicyUrl

  • cloudformation:TemplateUrl

例えば、cloudformation:TemplateUrl は、CreateStackUpdateStack、および CreateChangeSet API の TemplateUrl パラメータにのみ適用されます。

アクセス制御に条件キーを使用するポリシーの例については、「CloudFormation の IAM アイデンティティベースのポリシーの例」を参照してください。

CloudFormation テンプレートでの IAM リソースの承認

スタックを作成する前に、CloudFormation によってテンプレートが検証されます。検証中、CloudFormation は作成する可能性のある IAM リソースについてテンプレートをチェックします。IAM リソース (フルアクセス権を持つユーザーなど) は、AWS アカウント の任意のリソースにアクセスして変更できます。したがって、拡大した権限で意図していないリソースを作成しないように、進める前に各 IAM に関連付けられた権限を確認することをお勧めします。実行されたことを確認するには、スタックを作成する前に、CloudFormation に指定された機能を付与して、テンプレートにそれらのリソースを含めることを承認する必要があります。

CloudFormation コンソール、AWS Command Line Interface (AWS CLI)、または API を使用して、CloudFormation テンプレートの機能を承認できます。

  • CloudFormation コンソールで、[スタックを作成] または [スタックを更新] ウィザードの [スタックオプションの設定] ページで [I acknowledge that this template may create IAM resources (このテンプレートが IAM リソースを作成する可能性を認識しています)] を選択します。

  • AWS CLI で、create-stack および update-stack コマンドを使用する場合は、--capabilities オプションに CAPABILITY_IAM または CAPABILITY_NAMED_IAM 値を指定します。テンプレートに IAM リソースがある場合、いずれかの機能を指定できます。テンプレートの IAM リソースにカスタム名がある場合、CAPABILITY_NAMED_IAM を指定する必要があります。

  • API で CreateStackUpdateStack アクションを使用する際には、Capabilities.member.1=CAPABILITY_IAM または Capabilities.member.1=CAPABILITY_NAMED_IAM を指定します。テンプレートに IAM リソースがある場合、いずれかの機能を指定できます。テンプレートの IAM リソースにカスタム名がある場合、CAPABILITY_NAMED_IAM を指定する必要があります。

重要

テンプレートにカスタム名の IAM リソースが含まれている場合、同じテンプレートを再利用する複数のスタックを作成しないでください。IAM リソースはアカウント内でグローバルに一意でなければなりません。同じテンプレートを使用して異なるリージョンで複数のスタックを作成する場合、それぞれのスタックは一意なリソースを持つのではなく、同じ IAM リソースを共有する可能性があります。スタック間でリソースを共有すると、回復不可能な意図しない結果をまねく可能性があります。たとえば、1 つのスタックの共有された IAM リソースを削除または更新すると、意図せずに他のスタックのリソースの変更することになります。

Amazon EC2 インスタンスで実行されるアプリケーションの認証情報の管理

Amazon EC2 インスタンスで実行されるアプリケーションで、Amazon S3 バケットや DynamoDB テーブルなどの AWS リソースにリクエストを送信する必要がある場合、そのアプリケーションでは AWS セキュリティ認証情報が必要になります。ただし、起動するすべてのインスタンスにおける長期的なセキュリティ認証情報を配信して埋め込むことは非常に難しく、潜在的なセキュリティリスクを伴います。IAM ユーザー認証情報のような長期認証情報を使用する代わりに、インスタンスが起動される際に Amazon EC2 インスタンスに関連付けられる IAM ロールを作成することをお勧めします。アプリケーションは Amazon EC2 インスタンスから一時的な認証情報を得ることができます。インスタンスに長期認証情報を埋め込む必要はありません。また、認証情報を管理しやすくするために、複数の Amazon EC2 インスタンスに対して 1 つのロールのみを指定できます。インスタンスごとに個別の認証情報を作成する必要はありません。

ロールでのインスタンスの起動方法を示すテンプレートスニペットについては、「IAM ロールのテンプレートの例」を参照してください。

注記

一時的なセキュリティ認証情報を使用するインスタンスにあるアプリケーションでは、CloudFormation アクションを呼び出すことができます。ただし、CloudFormation は他の多数の AWS サービスとやり取りするため、使用するすべてのサービスが一時的なセキュリティ認証情報をサポートすることを確認する必要があります。一時的なセキュリティ認証情報を受け入れるサービスのリストについては、IAM ユーザーガイドの「IAM と連携する AWS サービス」を参照してください。

一時的なアクセス権の付与 (フェデレーションアクセス)

場合によっては、AWS アカウント に対して AWS 認証情報のない一時的なアクセス権をユーザーに付与する必要があります。一時的なアクセス権を付与する場合は、長期認証情報を作成して削除するのではなく、AWS Security Token Service (AWS STS) を使用します。たとえば、IAM ロールを使用できます。1 つの IAM ロールから、多くの一時的なセキュリティ認証情報 (アクセスキー、シークレットアクセスキー、およびセキュリティトークンを含む) をプログラムで作成し、配信することができます。これらの認証情報の有効期限は限られているため、期限が切れた後は AWS アカウント へのアクセスに使用することはできません。また、個々のユーザーに異なるレベルのアクセス許可を付与するために、複数の IAM ロールを作成することもできます。IAM ロールは、連合 ID やシングルサインオンのようなシナリオに対して有用です。

フェデレーティッドアイデンティティは、複数のシステムで使用できる固有のアイデンティティです。確立されたオンプレミスアイデンティティシステム (LDAP または Active Directory など) を使用している企業ユーザーの場合、そのオンプレミスアイデンティティシステムを使用してすべての認証を処理できます。ユーザーが認証された後で、適切な IAM ユーザーまたは IAM ロールから一時的なセキュリティ認証情報を提供します。例えば、管理者が AWS アカウントへの完全アクセス権を持ち、デベロッパーが CloudFormation スタックでの作業のみのアクセス許可を持つ、管理者ロールおよび開発者ロールを作成できます。管理者は、認証された後で、管理者ロールから一時的なセキュリティ認証情報を取得することが認可されます。一方で、開発者は開発者ロールからのみ一時的なセキュリティ認証情報を取得できます。

また、AWS Management Console にフェデレーションユーザーアクセスを付与できます。ユーザーがオンプレミスアイデンティティシステムで認証された後で、AWS Management Console への直接アクセス権を付与する一時的な URL をプログラムによって作成できます。ユーザーは既に認証されているため (シングルサインオン)、その一時的な URL を使用するときには AWS にサインインする必要がありません。また、この URL はユーザーの一時的なセキュリティ認証情報から作成されるため、この認証情報で利用できるアクセス許可によって、AWS Management Console でユーザーに付与されるアクセス許可が決まります。

一時的なセキュリティ認証情報を生成するために複数のさまざまな AWS STS API を使用できます。使用する API の詳細については、「IAM ユーザーガイド」の「AWS STS 認証情報を比較する」を参照してください。

重要

GetFederationToken API から生成された一時的なセキュリティ認証情報を使用する場合は、IAM で作業することはできません。IAM での作業が必要な場合、代わりにロールからの一時的なセキュリティ認証情報を使用します。

CloudFormation は他の多数の AWS サービスとインタラクションします。CloudFormation で一時的なセキュリティ認証情報を使用する場合は、使用するすべてのサービスが一時的なセキュリティ認証情報をサポートすることを確認してください。一時的なセキュリティ認証情報を受け入れるサービスのリストについては、IAM ユーザーガイドの「IAM と連携する AWS サービス」を参照してください。

詳細については、「IAM ユーザーガイド」の次の関連リソースを参照してください。

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.