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

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

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 アカウントです。

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

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

注記

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

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

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

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

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

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

サービスは、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 ポリシーの構文と記述の詳細については、の「AWS IAM ポリシーのリファレンス」を参照してくださいIAM ユーザーガイド

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

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

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

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

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

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

条件キー 説明

aws:RequestTag

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

aws:ResourceTag

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

aws:TagKeys

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

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

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

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

条件キー 説明

redshift:DurationSeconds

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

redshift:DbName

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

redshift:DbUser

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

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

次の IAM ポリシーを使用すると、Amazon Redshift リージョンで特定の AWS アカウントの us-west-2 クラスターにタグ (名前が 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 条件キーを使用してアクセスを制限する

Amazon Redshift クラスターを作成するコマンドに という名前のタグusageと のタグ値が含まれている場合にのみ、ユーザーが クラスターを作成するには、次の IAM ポリシーを使用しますproductionaws:TagKeys および ForAllValues 修飾子を含む 条件は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" ] } } } }