での の AWS CodePipeline 仕組み IAM - AWS CodePipeline

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

での の AWS CodePipeline 仕組み IAM

IAM を使用して へのアクセスを管理する前に CodePipeline、 で使用できるIAM機能を理解しておく必要があります CodePipeline。 CodePipeline およびその他の AWS のサービス が と連携する方法の概要を確認するにはIAM、 IAM ユーザーガイドAWS のサービス 「 と連携するIAM」を参照してください。

CodePipeline ID ベースのポリシー

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

アクション

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

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

このアクションは、関連付けられたオペレーションを実行するための権限を付与するポリシーで使用されます。

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

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

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

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

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

"Action": "codepipeline:Get*"

CodePipeline アクションのリストについては、 IAM ユーザーガイド「 で定義されるアクション AWS CodePipeline」を参照してください。

リソース

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

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

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

"Resource": "*"

CodePipeline リソースとオペレーション

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

リソースタイプ ARN 形式

パイプライン

arn:aws:codepipeline:region:account:pipeline-name

ステージ

arn:aws:codepipeline:region:account:pipeline-name/stage-name

アクション

arn:aws:codepipeline:region:account:pipeline-name/stage-name/action-name

カスタムアクション arn:aws:codepipeline:region:account:actiontype:owner/category/provider/version

すべての CodePipeline リソース

arn:aws:codepipeline:*

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

arn:aws:codepipeline:region:account:*

注記

のほとんどのサービスは、コロン (:) またはフォワードスラッシュ (/) を の同じ文字として AWS 扱いますARNs。ただし、 はイベントパターンとルールに完全一致 CodePipeline を使用します。イベントパターンを作成するときは、一致させるパイプラインのARN構文と一致するように、必ず正しいARN文字を使用してください。

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

例えば、特定のパイプライン (myPipeline) ARNは、次のように ステートメントで使用します。

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

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

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

すべてのリソースを指定するか、特定のAPIアクションが をサポートしていない場合はARNs、次のように Resource要素で (*) ワイルドカード文字を使用します。

"Resource": "*"
注記

IAM ポリシーを作成するときは、最小権限の付与、つまりタスクの実行に必要なアクセス許可のみの付与に関する標準のセキュリティアドバイスに従ってください。API 通話が をサポートしている場合ARNs、リソースレベルのアクセス許可をサポートしているため、(*) ワイルドカード文字を使用する必要はありません。

一部の CodePipeline API呼び出しは、複数のリソース ( などGetPipeline) を受け入れます。1 つのステートメントで複数のリソースを指定するには、次のようにカンマARNsで区切ります。

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

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

条件キー

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

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

1 つのステートメントに複数の Condition 要素を指定する場合、または 1 つの Condition 要素に複数のキーを指定する場合、 AWS では AND 論理演算子を使用してそれらを評価します。1 つの条件キーに複数の値を指定すると、 は論理ORオペレーションを使用して条件 AWS を評価します。ステートメントの権限が付与される前にすべての条件が満たされる必要があります。

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

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

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

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

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

CodePipeline ID ベースのポリシーの例を表示するには、「」を参照してくださいAWS CodePipeline アイデンティティベースポリシーの例

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

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

CodePipeline リソースベースのポリシーの例を表示するには、AWS CodePipeline リソースベースのポリシーの例「」を参照してください。

CodePipeline タグに基づく認可

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

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

CodePipeline IAM ロール

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

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

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

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

サービスロール

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

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