AWS Data Pipeline の IAM ポリシー - AWS Data Pipeline

AWS Data Pipeline は、新規顧客には利用できなくなりました。の既存のお客様 AWS Data Pipeline は、通常どおりサービスを引き続き使用できます。詳細はこちら

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

AWS Data Pipeline の IAM ポリシー

デフォルトでは、IAM エンティティには AWS リソースを作成または変更するためのアクセス許可はありません。IAM エンティティがリソースを作成または変更、およびタスクを実行できるようにするには、IAM ポリシーを作成する必要があります。これによって、必要な特定のリソースおよび API アクションを使用するためのアクセス許可を IAM エンティティに付与し、その後、ポリシーをそのアクセス許可が必要な IAM エンティティにアタッチします。

ポリシーをユーザーまたはユーザーのグループにアタッチする場合、ポリシーによって特定リソースの特定タスクを実行するユーザーの権限が許可または拒否されます。IAM ポリシーの一般的な情報については、IAM ユーザーガイドのアクセス許可とポリシーを参照してください。カスタム IAM ポリシーの管理と作成の詳細については、IAM ポリシーの管理を参照してください。

ポリシー構文

IAM ポリシーは 1 つ以上のステートメントで構成される JSON ドキュメントです。各ステートメントは次のように構成されます。

{ "Statement":[{ "Effect":"effect", "Action":"action", "Resource":"*", "Condition":{ "condition":{ "key":"value" } } } ] }

ポリシーステートメントは以下の要素によって構成されます。

  • [Effect]:effect は、AllowまたはDenyにすることができます。デフォルトでは、IAM エンティティはリソースおよび API アクションを使用するアクセス許可がないため、リクエストはすべて拒否されます。明示的な許可はデフォルトに上書きされます。明示的な拒否はすべての許可に優先します。

  • [Action]: action は、アクセス許可を付与または拒否する対象とする、特定の API アクションです。AWS Data Pipeline のアクションのリストについては、AWS Data Pipeline API リファレンスアクションを参照してください。

  • [Resource] (リソース): アクションによって影響を及ぼされるリソースです。ここで唯一の有効な値は "*" です。

  • [Condition] (条件): condition はオプションです。ポリシーの発効条件を指定するために使用します。

    AWS Data Pipeline は、AWS 全体のコンテキストキー (「条件に利用可能なキー」を参照) に加え、以下のサービス固有のキーを実装します。

タグを使用したパイプラインへのアクセスの制御

パイプラインのタグを参照する IAM ポリシーを作成できます。これにより、パイプラインのタグ付けを使用して以下の操作を行うことができます。

  • パイプラインへの読み取り専用アクセス権限の付与

  • パイプラインへの読み取り/書き込みアクセス権限の付与

  • パイプラインへのアクセスのブロック

たとえば、管理者が実稼働用と開発用の 2 つのパイプライン環境を使用しており、それぞれの環境に対して IAM グループを設定しているとします。管理者は、実稼働環境のパイプライン環境に対して、実稼働用 IAM グループのユーザーには読み取り/書き込みアクセス権限を付与し、開発者用 IAM グループのユーザーには読み取り専用アクセス権限を付与します。管理者は、開発環境のパイプライン環境に対して、実稼働用と開発用 IAM グループのユーザーには読み取り/書き込みアクセス権限を付与します。

このシナリオを達成するため、管理者は実稼働用パイプラインに "environment=production" というタグを付け、開発者用 IAM グループに次のポリシーをアタッチします。最初のステートメントでは、すべてのパイプラインに対する読み取り専用アクセスを付与しています。2 番目のステートメントでは、"environment=production" タグがないパイプラインへの読み取り/書き込みアクセスを付与しています。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "datapipeline:Describe*", "datapipeline:ListPipelines", "datapipeline:GetPipelineDefinition", "datapipeline:QueryObjects" ], "Resource": "*" }, { "Effect": "Allow", "Action": "datapipeline:*", "Resource": "*", "Condition": { "StringNotEquals": {"datapipeline:Tag/environment": "production"} } } ] }

さらに管理者は、実稼働の IAM グループに次のポリシーをアタッチします。このステートメントは、すべてのパイプラインに対するフルアクセスを付与しています。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "datapipeline:*", "Resource": "*" } ] }

その他の例については、「タグに基づいてユーザーに読み取り専用アクセスを付与する」と「タグに基づいてユーザーにフルアクセスを付与する」を参照してください。

ワーカーグループを使用したパイプラインへのアクセスの制御

参照ワーカーグループ名を作成する IAM ポリシーを作成できます。

たとえば、管理者が実稼働用と開発用の 2 つのパイプライン環境を使用しており、それぞれの環境に対して IAM グループを設定しているとします。3 台のデータベースサーバーがあり、それぞれ実稼働環境、実稼働準備環境、および開発者環境に対して Task Runner が設定されているものとします。管理者は、実稼働用 IAM グループのユーザーは実稼働用リソースにタスクをプッシュするパイプラインを作成でき、開発用 IAM グループのユーザーは実稼働準備用と開発者用の両方のリソースにタスクをプッシュするパイプラインを作成できるようにする必要があります。

このシナリオを達成するため、管理者は実稼働用認証情報を使用して実稼働用リソースに Task Runner をインストールし、workerGroup を "prodresource" に設定します。さらに、開発用認証情報を使用して開発用リソースに Task Runner をインストールし、workerGroup を "pre-production" と "development" に設定します。管理者は、開発者用 IAM グループに次のポリシーをアタッチして、"prodresource" リソースへのアクセスをブロックします。最初のステートメントでは、すべてのパイプラインに対する読み取り専用アクセスを付与しています。2 番目のステートメントは、ワーカーグループの名前に "dev" または "pre-prod" というプレフィックスが含まれていれば、パイプラインへの読み取り/書き込みアクセスを付与します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "datapipeline:Describe*", "datapipeline:ListPipelines", "datapipeline:GetPipelineDefinition", "datapipeline:QueryObjects" ], "Resource": "*" }, { "Action": "datapipeline:*", "Effect": "Allow", "Resource": "*", "Condition": { "StringLike": { "datapipeline:workerGroup": ["dev*","pre-prod*"] } } } ] }

さらに、管理者は、実稼働用 IAM グループに次のポリシーをアタッチして、"prodresource" リソースへのアクセス権限を付与します。最初のステートメントでは、すべてのパイプラインに対する読み取り専用アクセスを付与しています。2 番目のステートメントは、ワーカーグループの名前に "prod" というプレフィックスが含まれていれば、読み取り/書き込みアクセスを付与します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "datapipeline:Describe*", "datapipeline:ListPipelines", "datapipeline:GetPipelineDefinition", "datapipeline:QueryObjects" ], "Resource": "*" }, { "Effect": "Allow", "Action": "datapipeline:*", "Resource": "*", "Condition": { "StringLike": {"datapipeline:workerGroup": "prodresource*"} } } ] }