Amazon Redshift
クラスター管理ガイド (API バージョン 2012-12-01)

Amazon Redshift リソースへのアクセス権限の管理の概要

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

注記

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

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

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

Amazon Redshift のプライマリリソースはクラスターです。Amazon Redshift は、スナップショット、パラメータグループ、イベントサブスクリプションなどのプライマリリソースとともに使用できるその他のリソースをサポートします。これらはサブリソースと呼ばれます。

これらのリソースとサブリソースには、次の表に示すとおり、一意の Amazon リソースネーム (ARN) が関連付けられています。

リソースタイプ ARN 形式
クラスター arn:aws:redshift:region:account-id:cluster:cluster-name
クラスターデータベース arn:aws:redshift:region:account-id:dbname:cluster-name/database-name
クラスターデータベースユーザー arn:aws:redshift:region:account-id:dbuser:cluster-name/database-user-name
クラスターデータベースユーザーグループ arn:aws:redshift:region:account-id:dbgroup:cluster-name/database-group-name
クラスターパラメータグループ arn:aws:redshift:region:account-id:parametergroup:parameter-group-name
クラスターセキュリティグループ arn:aws:redshift:region:account-id:securitygroup:security-group-name
CIDR/IP アドレス arn:aws:redshift:region:account-id:securitygroupingress:security-group-name/cidrip/IP-range
EC2 セキュリティグループ arn:aws:redshift:region:account-id:securitygroupingress:security-group-name/ec2securitygroup/owner/EC2-security-group-id
イベントサブスクリプション arn:aws:redshift:region:account-id:eventsubscription:event-subscription-name
ハードウェアセキュリティモジュール (HSM) のクライアント証明書 arn:aws:redshift:region:account-id:hsmclientcertificate:HSM-client-certificate-id
HSM の設定 arn:aws:redshift:region:account-id:hsmconfiguration:HSM-configuration-id
パラメータグループ arn:aws:redshift:region:account-id:parametergroup:parameter-group-name
スナップショット arn:aws:redshift:region:account-id:snapshot:cluster-name/snapshot-name
スナップショットコピー権限 arn:aws:redshift:region:account-id:snapshotcopygrant:snapshot-copy-grant-name
サブネットグループ arn:aws:redshift:region:account-id:subnetgroup:subnet-group-name

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

リソース所有権について

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

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

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

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

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

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

注記

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

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

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

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

  • アカウントのユーザーまたはグループにアクセス権限ポリシーをアタッチする – アカウント管理者は特定のユーザーに関連付けられるアクセス権限ポリシーを使用できます。そうしたポリシーによって、そのユーザーがクラスターなどの Amazon Redshift リソースを作成するためのアクセス権限が付与されます。

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

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

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

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

    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 でアイデンティティベースのポリシーを使用する詳細については、「Amazon Redshift のアイデンティティベースのポリシー (IAM ポリシー) の使用」を参照してください。ユーザー、グループ、ロール、アクセス権限の詳細については、『IAM ユーザーガイド』の「アイデンティティ (ユーザー、グループ、ロール)」を参照してください。

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

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

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

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

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

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

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

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

  • プリンシパル – アイデンティティベースのポリシー (IAM ポリシー) で、ポリシーがアタッチされているユーザーが黙示的なプリンシパルとなります。リソースベースのポリシーでは、リソースに対するアクセス権限 (リソースベースのポリシーにのみ適用) が付与されるエンティティ (ユーザー、アカウント、サービスなど) を指定します。Amazon Redshift はリソースベースのポリシーをサポートしていません。

IAM ポリシーの構文と記述の詳細については、IAM ユーザーガイド の「AWS IAM ポリシーの参照」を参照してください。

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

ポリシーでの条件の指定

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

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

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

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

条件キー 説明

redshift:RequestTag

リソースの作成時にはタグのキー (名前) と値を含める必要があります。redshift:RequestTag 条件キーは、リソースを作成する Amazon Redshift の API アクションにのみ適用されます。

redshift:ResourceTag

特定のタグのキーと値に基づいてリソースへのユーザーアクセスを制限します。

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

redshift:RequestTag および redshift:ResourceTag 条件キーをサポートする API アクションのリストについては、「Amazon Redshift API のアクセス権限リファレンス」を参照してください。

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

条件キー 説明

redshift:DurationSeconds

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

redshift:DbName

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

redshift:DbUser

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

例 1: redshift: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":{"redshift:ResourceTag/environment":"test"} } }

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

次の IAM ポリシーを使用すると、クラスターを作成するコマンドにタグ (名前が usage、値が production) が含まれている場合に限り、Amazon Redshift クラスターを作成することが許可されます。

{ "Version": "2012-10-17", "Statement": { "Sid":"AllowCreateProductionCluster", "Effect": "Allow", "Action": "redshift:CreateCluster", "Resource": "*" "Condition":{"StringEquals":{"redshift:RequestTag/usage":"production"} } }