AWS CodePipeline で IAM を使用する方法 - AWS CodePipeline

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS CodePipeline で IAM を使用する方法

IAM を使用して CodePipeline へのアクセスを管理する前に、CodePipeline で使用できる IAM 機能について理解しておく必要があります。CodePipeline と他ののハイレベルのビューを取得するにはAWSサービスは IAM と連携します。詳細については、AWSIAM と連携するサービスIAM ユーザーガイド

CodePipeline ID ベースのポリシー

IAM ID ベースのポリシーでは、許可または拒否するアクションとリソース、またアクションを許可または拒否する条件を指定できます。CodePipeline では、特定のアクション、リソース、および条件キーをサポートしています。JSON ポリシーで使用するすべての要素については、IAM ユーザーガイドIAM JSON ポリシーの要素のリファレンスを参照してください。

Actions

管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。

JSON ポリシーの Action 要素は、ポリシー内のアクセスを許可または拒否するために使用できるアクションを記述します。ポリシーアクションの名前は通常、関連する AWS API オペレーションと同じです。一致する API オペレーションを持たないアクセス許可のみのアクションなど、いくつかの例外があります。また、ポリシーに複数のアクションが必要なオペレーションもあります。これらの追加アクションは、依存アクションと呼ばれます。

このアクションは、関連付けられた操作を実行するための許可を付与するポリシーで使用されます。

CodePipeline のポリシーアクションは、アクションの前にプレフィックスを使用します。codepipeline:

たとえば、アカウント内の既存のパイプラインを表示するアクセス許可を他のユーザーに付与するには、ユーザーのポリシーに codepipeline:GetPipeline アクションを含めます。ポリシーステートメントには、Action または NotAction エレメントを含める必要があります。CodePipeline は、このサービスで実行できるタスクを記述する独自のアクションのセットを定義します。

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

"Action": [ "codepipeline:action1", "codepipeline:action2"

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

"Action": "codepipeline:Get*"

CodePipeline アクションの一覧については、で定義されるアクションAWS CodePipelineIAM ユーザーガイド

Resources

管理者は AWS JSON ポリシーを使用して、誰が何にアクセスするかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。

Resource JSON ポリシーエレメントは、アクションが適用されるオブジェクトを指定します。ステートメントには、Resource または NotResource エレメントを含める必要があります。ベストプラクティスとして、リソースは Amazon リソースネーム (ARN) を使用して指定します。これは、リソースレベルのアクセス許可と呼ばれる特定のリソースタイプをサポートするアクションに対して実行できます。

操作のリスト化など、リソースレベルの許可をサポートしないアクションの場合は、ワイルドカード (*) を使用して、ステートメントがすべてのリソースに適用されることを示します。

"Resource": "*"

CodePipeline リソースおよび

CodePipeline では、プライマリリソースはパイプラインです。ポリシーで Amazon リソースネーム (ARN) を使用して、ポリシーを適用するリソースを識別します。CodePipeline は、ステージ、アクション、カスタムアクションなど、プライマリリソースで使用できるその他のリソースをサポートします。これらはサブリソースと呼ばれます。これらのリソースとサブリソースには、一意の Amazon リソースネーム (ARN) が関連付けられています。ARN の詳細については、アマゾン ウェブ サービス全般のリファレンス Amazon リソースネーム (ARN) と AWS のサービスの名前空間を参照してください。パイプラインに関連付けられたパイプラインの ARN を取得するには、設定コンソールで。詳細については、「パイプラインの ARN とサービスロール ARN (コンソール) を表示する」を参照してください。

リソースタイプ ARN 形式

パイプライン

arn: aws: コードパイプライン:リージョン:アカウント:パイプライン名

ステージ

arn: aws: コードパイプライン:リージョン:アカウント:パイプライン名/ステージ名

アクション

arn: aws: コードパイプライン:リージョン:アカウント:パイプライン名/ステージ名/アクション名

カスタムアクション arn: aws: コードパイプライン:リージョン:アカウント:アクションタイプ:owner/カテゴリ/provider/バージョン

CodePipeline リソース

arn: aws: コードパイプライン:*

指定されたリージョンの指定されたアカウントが所有するすべての CodePipeline リソース

arn: aws: コードパイプライン:リージョン:アカウント:*

注記

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

CodePipeline には、リソースレベルのアクセス許可をサポートする API コールがあります。リソースレベルのアクセス許可は、API コールでリソース ARN を指定できるかどうか、または API コールでワイルドカードを使用したすべてのリソースの呼び出しのみが可能かどうかを示します。「」を参照してください。CodePipeline アクセス許可リファレンスリソースレベルのアクセス許可の詳細な説明と、リソースレベルのアクセス許可をサポートする CodePipeline API コールの一覧については、「」を参照してください。

たとえば、以下の要領で ARN を使用して、ステートメント内の特定のパイプライン (myPipeline) を指定することができます。

"Resource": "arn:aws:codepipeline:us-east-2:111222333444:myPipeline"

また、以下の要領でワイルドカード文字 (*) を使用して、特定のアカウントに属するすべてのパイプラインを指定することもできます。

"Resource": "arn:aws:codepipeline:us-east-2:111222333444:*"

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

"Resource": "*"
注記

IAM ポリシーを作成するとき、最小限の特権を認めるという標準的なセキュリティアドバイスに従いましょう。そうすれば、タスクを実行するというリクエストのアクセス許可のみを認めることができます。API コールが ARN をサポートしている場合、リソースレベルのアクセス許可をサポートしていて、ワイルドカード文字 (*) を使用する必要はありません。

一部の CodePipeline API コールは、複数のリソース (例:GetPipeline). 単一のステートメントに複数のリソースを指定するには、以下のようにコンマで ARN を区切ります。

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

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

条件キー

管理者は AWS JSON ポリシーを使用して、誰が何にアクセスするかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。

Condition エレメント (または Condition ブロック) を使用すると、ステートメントが有効な条件を指定できます。Conditionエレメントはオプションです。イコールや以下などの条件演算子を使用する条件式を作成して、リクエスト内に値のあるポリシーの条件に一致させることができます。

1 つのステートメントに複数の Condition エレメントを指定する場合、または 1 つの Condition エレメントに複数のキーを指定する場合、AWS が論理 AND 演算を使用してそれらを評価します。単一の条件キーに複数の値を指定する場合、AWS が論理 OR 演算を使用して条件を評価します。ステートメントのアクセス許可が付与される前にすべての条件が満たされる必要があります。

条件を指定する際にプレースホルダー変数も使用できます。例えば、IAM ユーザー名でタグ付けされている場合のみ、リソースにアクセスする IAM ユーザーアクセス許可を付与できます。詳細については、IAM ユーザーガイドIAM ポリシーエレメント: 変数およびタグを参照してください。

AWS はグローバル条件キーとサービス固有の条件キーをサポートしています。すべての AWS グローバル条件キーを確認するには、IAM ユーザーガイドの「AWS グローバル条件コンテキストキー」を参照してください。

CodePipeline は独自の条件キーを定義し、一部のグローバル条件キーの使用をサポートしています。すべての AWS グローバル条件キーを確認するには、IAM ユーザーガイドのAWS グローバル条件コンテキストキー」を参照してください。

すべての Amazon EC2 アクションは、aws:RequestedRegion および ec2:Region 条件キーをサポートします。詳細については、「」を参照してください。例: 特定のリージョンへのアクセスの制限

CodePipeline 条件キーのリストを表示するには、の条件キーAWS CodePipelineIAM ユーザーガイド。どのアクションおよびリソースと条件キーを使用できるかについては、「AWS CodePipeline で定義されるアクション」を参照してください。

Examples

CodePipeline アイデンティティベースのポリシーの例を表示するには、AWS CodePipeline アイデンティティベースのポリシーの例

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

CodePipeline では、リソースベースのポリシーはサポートされていません。ただし、CodePipeline に関連する S3 サービスのリソースベースのポリシーの例が提供されています。

Examples

CodePipeline リソースベースのポリシーの例を表示するには、AWS CodePipeline リソースベースのポリシーの例,

CodePipeline タグに基づいた認証

CodePipeline リソースにタグをアタッチするか、CodePipeline へのリクエストでタグを渡すことができます。タグに基づいてアクセスを制御するには、codepipeline:ResourceTag/key-nameaws:RequestTag/key-name、または aws:TagKeys の条件キーを使用して、ポリシーの条件要素でタグ情報を提供します。CodePipeline リソースのタグ付けの詳細については、を参照してください。リソースのタグ付け

リソースのタグに基づいてリソースへのアクセスを制限するためのアイデンティティベースのポリシーの例を表示するには、「タグを使用した CodePipeline リソースへのアクセスのコントロール」を参照してください。

CodePipeline IAM ロール

AnIAM ロールはエンティティであり、AWS特定のアクセス許可を持つアカウント。

CodePipeline での一時的な認証情報の

一時的な認証情報を使用して、フェデレーションでサインイン、IAM ロールを引き受ける、またはクロスアカウントロールを引き受けることができます。一時的なセキュリティ認証情報を取得するには、 AWS STS AssumeRole または GetFederationToken などの API オペレーションを呼び出します。

CodePipeline は、一時的な認証情報の使用をサポートしています。

サービスロール

CodePipeline は、サービスがサービスロールはユーザーに代わって行います。このロールにより、サービスはユーザーに代わって他のサービスのリソースにアクセスし、アクションを実行できます。サービスロールは、IAM アカウントに表示され、サービスによって所有されます。つまり、IAM 管理者は、このロールのアクセス許可を変更できます。ただし、これを行うことにより、サービスの機能が損なわれる場合があります。

CodePipeline はサービスロールをサポートします