AWS CodeDeploy
ユーザーガイド (API バージョン 2014-10-06)

CodeDeploy リソースへのアクセス許可の管理の概要

すべての AWS リソースは AWS アカウントによって所有され、リソースの作成またはアクセスは、アクセス権限のポリシーによって管理されます。アカウント管理者は、アクセス許可ポリシーを IAM アイデンティティ (ユーザー、グループ、ロール) にアタッチできます。一部のサービス (AWS Lambda や Amazon ECS など) もリソースにアクセス許可ポリシーをアタッチすることができます。

注記

アカウント管理者 (または管理者ユーザー) は、管理者権限を持つユーザーです。詳細については、IAM ユーザーガイド の「IAM のベストプラクティス」を参照してください。

アクセス権限を付与する場合、アクセス権限を取得するユーザー、取得するアクセス権限の対象となるリソース、およびそれらのリソースに対して許可される特定のアクションを決定します。

CodeDeploy リソースおよびオペレーション

CodeDeploy では、プライマリリソースは deployment group です。ポリシーで、ポリシーの適用先のリソースを識別するには、Amazon リソースネーム (ARN) を使用します。CodeDeploy は、アプリケーション、デプロイ設定、インスタンスなど、deployment groups で使用できる他のリソースをサポートします。これらはサブリソースと呼ばれます。これらのリソースとサブリソースには、一意の Amazon リソースネーム (ARN) が関連付けられています。ARN の詳細については、アマゾン ウェブ サービス全般のリファレンスの「Amazon リソースネーム (ARN) と AWSAWS サービスの名前空間」を参照してください。

リソースタイプ ARN 形式
デプロイグループ

arn:aws:codedeploy:region:account-id:deploymentgroup/deployment-group-name

アプリケーション

arn:aws:codedeploy:region:account-id:application/application-name

デプロイ設定

arn:aws:codedeploy:region:account-id:deploymentconfig/deployment-configuration-name

インスタンス

arn:aws:codedeploy:region:account-id:instance/instance-ID

すべての CodeDeploy リソース

arn:aws:codedeploy:*

特定リージョンの特定アカウントが所有するすべての CodeDeploy リソース

arn:aws:codedeploy:region:account-id:*

注記

AWS のほとんどのサービスでは、ARN 内のコロン (:) またはスラッシュ (/) は同じ文字として扱われます。ただし、CodeDeploy では、リソースパターンおよびルールで完全一致が使用されます。イベントパターンの作成時に正しい ARN 文字を使用して、リソース内の ARN 構文とそれらの文字が一致する必要があります。

たとえば、以下のように ARN を使用して、ステートメント内で特定のデプロイグループ (myDeploymentGroup) を指定できます。

"Resource": "arn:aws:codedeploy:us-west-2:123456789012:deploymentgroup/myDeploymentGroup"

以下のようにワイルドカード文字 (*) を使用して、特定のアカウントに属するすべての deployment groups を指定することもできます。

"Resource": "arn:aws:codedeploy:us-west-2:123456789012:deploymentgroup/*"

すべてのリソースを指定する場合、または特定の API アクションが ARN をサポートしていない場合は、以下の要領で、Resource エレメント内でワイルドカード文字 (*) を使用します。

"Resource": "*"

一部の CodeDeploy API アクションは複数のリソースを受け入れます (例: BatchGetDeploymentGroups)。単一のステートメントに複数のリソースを指定するには、以下のようにコンマで ARN を区切ります。

"Resource": ["arn1", "arn2"]

CodeDeploy には、CodeDeploy リソースを操作するための一連のオペレーションが用意されています。使用可能なオペレーションのリストについては、「CodeDeploy のアクセス権限のリファレンス」を参照してください。

リソース所有権について

AWS アカウントは、誰がリソースを作成したかにかかわらず、アカウントで作成されたリソースを所有します。具体的には、リソース所有者は、リソースの作成リクエストを認証するプリンシパルエンティティ (ルートアカウント、IAM ユーザー、または IAM ロール) の AWS アカウントです。以下の例では、このしくみを示しています。

  • AWS アカウントのルートアカウントの認証情報を使用してルールを作成する場合、AWS アカウントは CodeDeploy リソースの所有者です。

  • AWS アカウントに IAM ユーザーを作成し、そのユーザーに CodeDeploy リソースを作成するアクセス許可を付与する場合、そのユーザーは CodeDeploy リソースを作成できます。ただし、ユーザーが属する AWS アカウントは CodeDeploy リソースを所有しているとします。

  • CodeDeploy リソースを作成するためのアクセス許可を持つ AWS アカウントに IAM ロールを作成する場合は、ロールを引き受けることのできるいずれのユーザーも CodeDeploy リソースを作成できます。ロールが属する AWS アカウントは CodeDeploy リソースを所有しているとします。

リソースへのアクセスの管理

アクセスポリシーでは、誰が何にアクセスできるかを記述します。以下のセクションで、アクセス権限のポリシーを作成するために使用可能なオプションについて説明します。

注記

このセクションでは、CodeDeploy のコンテキストでの IAM の使用について説明します。これは、IAM サービスに関する詳細情報を取得できません。完全な IAM ドキュメントについては、IAM ユーザーガイドの「IAM とは?」を参照してください。IAM ポリシー構文の詳細および説明については、IAM ユーザーガイドの「AWS IAM ポリシーリファレンス」を参照してください。

IAM アイデンティティにアタッチされたポリシーはアイデンティティベースのポリシー (IAM ポリシー) と呼ばれ、リソースにアタッチされたポリシーはリソースベースのポリシーと呼ばれます。CodeDeploy では、アイデンティティベースのポリシー (IAM ポリシー) のみがサポートされています。

アイデンティティベースのポリシー (IAM ポリシー)

ポリシーを IAM アイデンティティにアタッチできます。たとえば、次の操作を実行できます。

  • アカウントのユーザーまたはグループにアクセス権限ポリシーをアタッチする – CodeDeploy コンソールのアプリケーションやデプロイグループなどの CodeDeploy リソースを表示するアクセス権限をユーザーに付与するには、ユーザーまたはユーザーが所属するグループに対してアクセス権限ポリシーをアタッチできます。

     

  • アクセス権限ポリシーをロールにアタッチする (クロスアカウントのアクセス権限を付与する) – アイデンティティベースのアクセス権限ポリシーを IAM ロールにアタッチして、クロスアカウントのアクセス権限を付与することができます。たとえば、アカウント A の管理者は、次のように別の AWS アカウント (たとえば、アカウント B) または AWS サービスにクロスアカウントアクセス許可を付与するロールを作成できます。

     

    1. アカウント A の管理者は、IAM ロールを作成して、アカウント A のリソースに権限を付与するロールに権限ポリシーをアタッチします。

       

    2. アカウント A の管理者は、アカウント B をそのロールを引き受けるプリンシパルとして識別するロールに、信頼ポリシーをアタッチします。

       

    3. アカウント B の管理者は、アカウント B のユーザーにロールを引き受ける権限を委任できるようになります。これにより、アカウント B のユーザーはアカウント A のリソースの作成とアクセスができます。ロールを引き受ける権限を AWS のサービスに付与すると、信頼ポリシー内のプリンシパルも AWS のサービスのプリンシパルとなることができます。

       

    IAM を使用してアクセス権限を委任する詳しい方法については、「アクセス管理」 (IAM ユーザーガイド) を参照してください。

CodeDeploy で、アイデンティティベースのポリシーは、デプロイプロセスに関連するさまざまなリソースに対するアクセス権限を管理するために使用されます。次のすべてのリソースタイプへのアクセスをコントロールできます。

  • アプリケーションおよびアプリケーションリビジョン

  • デプロイ

  • デプロイ設定

  • インスタンスとオンプレミスインスタンス

リソースベースのポリシーによって制御される機能は、次の表にあるように、リソースタイプによって異なります。

リソースタイプ

機能

すべて

リソースの詳細の閲覧および一覧表示

アプリケーション

デプロイ設定

デプロイグループ

リソースの作成

Delete resources

デプロイ

デプロイの作成

デプロイの停止

アプリケーションリビジョン

アプリケーションリビジョンの登録

アプリケーション

デプロイグループ

リソースの更新

オンプレミスインスタンス

インスタンスにタグを追加する

インスタンスからタグを削除する

インスタンスを登録する

インスタンスを登録解除する

お客様のアカウントのユーザーがアクセスを許可される呼び出しとリソースを制限する IAM ポリシーを作成し、IAM ユーザーにそれらのポリシーをアタッチできます。IAM ロールを作成する方法、および CodeDeploy の IAM ポリシーステートメントの例を調べる方法の詳細については、「CodeDeploy リソースへのアクセス許可の管理の概要」を参照してください。

リソースベースのポリシー

Amazon S3 などの他のサービスでは、リソースベースのアクセス権限ポリシーもサポートされています。たとえば、S3 バケットにポリシーをアタッチして、そのバケットへのアクセス権限を管理することができます。CodeDeploy はリソースベースのポリシーをサポートしていません。

ポリシー要素の指定 : アクション、効果、プリンシパル

サービスは、CodeDeploy リソースごとに一連の API オペレーションを定義します。こうした API オペレーションへのアクセス権限を付与するために、CodeDeploy は一連のアクションをポリシーに定義します。一部の API オペレーションは、API オペレーションを実行するために複数のアクションに対するアクセス許可を要求できます。リソースおよび API オペレーションに関する詳細については、「CodeDeploy リソースおよびオペレーション」および「CodeDeploy のアクセス権限のリファレンス」を参照してください。

以下は、基本的なポリシーの要素です。

  • リソース – Amazon リソースネーム (ARN) を使用して、ポリシーを適用するリソースを識別します。詳細については、「CodeDeploy リソースおよびオペレーション」を参照してください。

  • アクション – アクションのキーワードを使用して、許可または拒否するリソースオペレーションを識別します。たとえば、codedeploy:GetApplication 権限は、GetApplication オペレーションの実行をユーザーに許可します。

  • 効果 – ユーザーが特定のアクションをリクエストする際の効果 (許可または拒否) を指定します。リソースへのアクセスを明示的に許可していない場合、アクセスは暗黙的に拒否されます。また、明示的にリソースへのアクセスを拒否すると、別のポリシーによってアクセスが許可されている場合でも、ユーザーはそのリソースにアクセスできなくなります。

  • プリンシパル – アイデンティティベースのポリシー (IAM ポリシー) で、ポリシーがアタッチされているユーザーが黙示的なプリンシパルとなります。リソースベースのポリシーでは、権限 (リソースベースのポリシーにのみ適用) を受け取りたいユーザー、アカウント、サービス、またはその他のエンティティを指定します。

IAM ポリシーの構文と説明についての詳細については、『IAM ユーザーガイド』の「AWS IAM ポリシーのリファレンス」を参照してください。

すべての CodeDeploy API アクションとそれらが適用されるリソースの表については、「CodeDeploy のアクセス権限のリファレンス」を参照してください。

ポリシーでの条件の指定

アクセス権限を付与するとき、アクセスポリシー言語を使用して、ポリシーが有効になる必要がある条件を指定できます。たとえば、特定の日付の後にのみ適用されるポリシーが必要になる場合があります。ポリシー言語での条件の指定の詳細については、IAM ユーザーガイドの「条件」を参照してください。

条件を表すには、あらかじめ定義された条件キーを使用します。CodeDeploy に固有の条件キーはありません。ただし、必要に応じて使用できる AWS 全体の条件キーがあります。AWS 全体を対象とするすべてのキーのリストについては、IAM ユーザーガイド の「条件に利用可能なキー」を参照してください。