Amazon Redshift リソースに対するアクセス許可の管理の概要 - Amazon Redshift

Amazon Redshift リソースに対するアクセス許可の管理の概要

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

注記

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

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

Amazon Redshift のリソースとオペレーション

Amazon Redshift には、IAM アクセス許可ポリシーで使用するサービス固有のリソース、アクション、条件コンテキストキーが用意されています。

Amazon Redshift、Amazon Redshift Serverless、Amazon Redshift Data API、Amazon Redshift クエリエディタ v2 のアクセス許可

アクセスコントロール をセットアップするときに、IAM ID にアタッチできるアクセス権限ポリシー (ID ベースのポリシー) を記述します。詳細については「サービス認証リファレンスガイド」で以下のトピックを参照してください。

このサービス認証リファレンスには、IAM ポリシーで使用できる API オペレーションに関する情報が含まれています。また、アクセス許可を付与できる AWS リソースや、きめ細かなアクセスコントロールに含めることができる条件キーも含まれています。条件の詳細については、「詳細に設定されたアクセスコントロールのための IAM ポリシー条件の使用」を参照してください。

ポリシーの Action フィールドにアクションを、ポリシーの Resource フィールドにリソース値を、ポリシーの Condition フィールドに条件を指定します。Amazon Redshift のアクションを指定するには、API オペレーション名 (例: redshift:CreateCluster など) の前に redshift: プレフィックスを使用します。

リソース所有権について

リソース所有者 は、リソースを作成した AWS アカウントです。つまり、リソース所有者とは、リソースの作成リクエストを認証する プリンシパルエンティティ (ルートアカウント、IAM ユーザー、または IAM ロール) の AWS アカウントです。以下の例は、このしくみを示しています。

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

  • Amazon Redshift リソースを作成するためのアクセス許可を持つ AWS アカウントで IAM ロールを作成すると、ロールを引き受けることのできるユーザーなら誰でも Amazon Redshift リソースを作成できます。Amazon Redshift リソースは、ロールが属するお客様の AWS アカウントで所有されます。

  • AWS アカウントに IAM ユーザーを作成し、Amazon Redshift リソースを作成するアクセス許可をそのユーザーに付与すると、そのユーザーは Amazon Redshift リソースを作成できます。ただし Amazon Redshift リソースは、ユーザーが属するお客様の AWS アカウントで所有されます。ほとんどの場合、この方法はお勧めしません。代わりに IAM ロールを作成し、このロールにアクセス許可をアタッチしてユーザーに割り当てることをお勧めします。

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

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

注記

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

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

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

アクセス許可を割り当てるには、ポリシーを IAM ロールにアタッチし、このロールをユーザーまたはグループに割り当てます。次に示す例は、AWS アカウントで Amazon Redshift クラスターを作成、削除、変更、再起動するためのアクセス許可を含むポリシーを示しています。

{ "Version": "2012-10-17", "Statement": [ { "Sid":"AllowManageClusters", "Effect":"Allow", "Action": [ "redshift:CreateCluster", "redshift:DeleteCluster", "redshift:ModifyCluster", "redshift:RebootCluster" ], "Resource":"*" } ] }

Amazon Redshift で ID ベースのポリシーを使用する場合の詳細については、「Amazon Redshift でのアイデンティティベースのポリシー (IAM ポリシー) の使用」を参照してください。ユーザー、グループ、ロール、アクセス許可の詳細については、「IAM ユーザーガイド」の「ID (ユーザー、グループ、ロール)」を参照してください。

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

Simple Storage Service (Amazon S3) などの他のサービスでは、リソースベースの許可ポリシーもサポートされています。たとえば、ポリシーを S3 バケットにアタッチして、そのバケットに対するアクセス許可を管理できます。Amazon Redshift では、リソースベースのポリシーはサポートされていません。 

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

サービスは、Amazon Redshift リソースごとに (「Amazon Redshift のリソースとオペレーション」を参照)、一連の API オペレーションを定義します ([アクション]を参照)。これらの API オペレーションを実行するためのアクセス許可を付与するために、Amazon Redshift ではポリシーに一連のアクションを定義できます。1 つの API オペレーションの実行で、複数のアクションのアクセス権限が必要になる場合があります。

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

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

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

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

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

IAM ポリシーの構文と説明の詳細はこちら IAM ユーザーガイドAWS IAM ポリシーリファレンス

すべての Amazon Redshift API アクションとそれらが適用されるリソースの表については、「Amazon Redshift、Amazon Redshift Serverless、Amazon Redshift Data API、Amazon Redshift クエリエディタ v2 のアクセス許可」を参照してください。

ポリシーでの条件を指定する

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

アクセス権限ポリシーが適用される条件を指定するには、IAM アクセス権限ポリシーに Condition 要素を含めます。たとえば、redshift:CreateCluster アクションを使用してクラスターを作成することをユーザーに許可するポリシーを作成します。その後、特定のリージョンでのクラスターの作成のみにそのアクションを制限する Condition 要素を追加できます。詳細については、「詳細に設定されたアクセスコントロールのための IAM ポリシー条件の使用」を参照してください。すべての条件キー値とそれらが適用される Amazon Redshift アクションとリソースを示すリストについては、「Amazon Redshift、Amazon Redshift Serverless、Amazon Redshift Data API、Amazon Redshift クエリエディタ v2 のアクセス許可」を参照してください。

詳細に設定されたアクセスコントロールのための IAM ポリシー条件の使用

Amazon Redshift では、条件キーを使用し、リソースのタグに基づいてリソースへのアクセスを制限できます。Amazon Redshift の一般的な条件キーは以下のとおりです。

条件キー 説明

aws:RequestTag

リソースの作成時にはタグのキー (名前)と値を含める必要があります。詳細については、「IAM ユーザーガイド」の「aws:RequestTag」を参照してください。

aws:ResourceTag

特定のタグのキーと値に基づいてリソースへのユーザーアクセスを制限します。詳細については、「IAM ユーザーガイド」の「aws:ResourceTag」を参照してください。

aws:TagKeys

このキーを使用して、リクエスト内のタグキーとポリシーで指定したキーを比較します。詳細については、「IAM ユーザーガイド」の「aws:TagKeys」を参照してください。

タグの詳細については、「タグ付けの概要」を参照してください。

redshift:RequestTagredshift:ResourceTag 条件キーをサポートする API アクションのリストについては、「Amazon Redshift、Amazon Redshift Serverless、Amazon Redshift Data API、Amazon Redshift クエリエディタ v2 のアクセス許可」を参照してください。

次の条件キーは Amazon Redshift の GetClusterCredentials アクションで使用できます。

条件キー 説明

redshift:DurationSeconds

期間に対して指定できる秒数を制限します。

redshift:DbName

指定できるデータベース名を制限します。

redshift:DbUser

指定できるデータベースユーザー名を制限します。

例 1: aws:ResourceTag 条件キーを使用してアクセスを制限する

次の IAM ポリシーを使用すると、us-west-2 リージョンで特定の AWS アカウントの Amazon Redshift クラスターにタグ (名前が environment、値が test)が含まれている場合に限り、クラスターを変更することをユーザーに許可できます。

{ "Version": "2012-10-17", "Statement": { "Sid": "AllowModifyTestCluster", "Effect": "Allow", "Action": "redshift:ModifyCluster", "Resource": "arn:aws:redshift:us-west-2:123456789012:cluster:*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "test" } } } }

例 2: aws:RequestTag 条件キーを使用してアクセスを制限する

次の IAM ポリシーを使用すると、クラスターを作成するコマンドにタグ (名前が usage 、値が production)が含まれている場合に限り、Amazon Redshift クラスターを作成することが許可されます。aws:TagKeysForAllValues 修飾子との条件は、costcenter キーと usage キーのみを要求で指定できることを指定します。

{ "Version": "2012-10-17", "Statement": { "Sid": "AllowCreateProductionCluster", "Effect": "Allow", "Action": [ "redshift:CreateCluster", "redshift:CreateTags" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/usage": "production" }, "ForAllValues:StringEquals": { "aws:TagKeys": [ "costcenter", "usage" ] } } } }