メニュー
Amazon Redshift
管理ガイド (API Version 2012-12-01)

ユーザーに代わって Amazon Redshift が他の AWS のサービスにアクセスすることを許可する

一部の Amazon Redshift 機能では、ユーザーに代わって Amazon Redshift が他の AWS のサービスにアクセスする必要があります。例えば、COPY および UNLOAD コマンドでは、Amazon Simple Storage Service (Amazon S3) バケットを使用してデータを Amazon Redshift クラスターにロードまたはアンロードできます。Amazon Redshift クラスターがユーザーに代わってタスクを実行するには、クラスターにセキュリティ認証情報を指定する必要があります。セキュリティ認証情報は、AWS アクセスキーにするか、AWS Identity and Access Management (IAM) ロールを指定する望ましい方法を使用できます。

このセクションでは、他の AWS のサービスにアクセスするための適切なアクセス許可を持つ IAM ロールを作成する方法を説明します。Amazon Redshift コマンドの実行時に、ロールをクラスターに関連付けてから、そのロールの Amazon リソースネーム (ARN) を指定する必要があります。詳細については、「IAM ロールを使用して COPY および UNLOAD 操作を許可する」を参照してください。

Amazon Redshift クラスターが AWS のサービスにアクセスすることを許可する IAM ロールを作成する

ユーザーに代わって Amazon Redshift クラスターが他の AWS のサービスと通信することを許可する IAM ロールを作成するには、以下の手順を実行します。

To create an IAM role to allow Amazon Redshift to access AWS services

  1. Open the IAM Console.

  2. In the navigation pane, choose Roles.

  3. Choose Create New Role.

  4. For Role Name, type a name for your role, for example RedshiftCopyUnload. Choose Next Step.

  5. Choose AWS Service Roles, and then scroll to Amazon Redshift. Choose Select.

  6. On the Attach Policy page, choose a policy that grants the permissions that your Amazon Redshift cluster requires to access the target AWS service. For example, if you are loading data from Amazon S3 you can choose the AmazonS3ReadOnlyAccess policy. If you will also unload data to Amazon S3 you can choose the AmazonS3FullAccess policy

  7. Choose Next Step

  8. Review the information, and then choose Create Role.

  9. The new role is available to all users on clusters that use the role. To restrict access to only specific users on specific clusters, or to clusters in specific regions, edit the trust relationship for the role. For more information, see IAM ロールへのアクセスの制限.

  10. Associate the role with your cluster. You can associate an IAM role with a cluster when you create the cluster, or you add the role to an existing cluster. For more information, see IAM ロールをクラスターに関連付ける.

IAM ロールへのアクセスの制限

デフォルトでは、Amazon Redshift クラスターに使用できる IAM ロールはそのクラスターですべてのユーザーが利用できます。特定のクラスターの特定の Amazon Redshift データベースユーザーまたは特定のリージョンに IAM ロールを制限することもできます。

IAM ロールの使用を特定のデータベースユーザーのみに許可するには、次の手順に従います。

To identify specific database users with access to an IAM role

  1. Identify the Amazon Resource Name (ARN) for the database users in your Amazon Redshift cluster. The ARN for a database user is in the format: arn:aws:redshift:region:account-id:dbuser:cluster-name/user-name.

  2. Open the IAM Console at https://console.aws.amazon.com.

  3. In the navigation pane, choose Roles.

  4. Choose the IAM role that you want to restrict to specific Amazon Redshift database users.

  5. Choose the Trust Relationships tab, and then choose Edit Trust Relationship. A new IAM role that allows Amazon Redshift to access other AWS services on your behalf will have a trust relationship as follows:

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  6. Add a condition to the sts:AssumeRole action section of the trust relationship that limits the sts:ExternalId field to values that you specify. Include an ARN for each database user that you want to grant access to the role.

    For example, the following trust relationship specifies that only database users user1 and user2 on cluster my-cluster in region us-west-2 have permission to use this IAM role.

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "sts:ExternalId": [ "arn:aws:redshift:us-west-2:123456789012:dbuser:my-cluster/user1", "arn:aws:redshift:us-west-2:123456789012:dbuser:my-cluster/user2" ] } } }] }
  7. Choose Update Trust Policy.

AWS リージョンへの IAM ロールの制限

特定の AWS リージョンにのみアクセスできるように IAM ロールを制限できます。デフォルトでは、Amazon Redshift の IAM ロールは、1 つのリージョンに限定されません。

IAM ロールの使用をリージョンごとに制限するには、次の手順に従います。

To identify permitted regions for an IAM role

  1. Open the IAM Console at https://console.aws.amazon.com.

  2. In the navigation pane, choose Roles.

  3. Choose the role that you want to modify with specific regions.

  4. Choose the Trust Relationships tab and then choose Edit Trust Relationship. A new IAM role that allows Amazon Redshift to access other AWS services on your behalf will have a trust relationship as follows:

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  5. Modify the Service list for the Principal with the list of the specific regions that you want to permit use of the role for. Each region in the Service list must be in the following format: redshift.region.amazonaws.com.

    For example, the following edited trust relationship permits the use of the IAM role in the us-east-1 and us-west-2 regions only.

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "redshift.us-east-1.amazonaws.com", "redshift.us-west-2.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  6. Choose Update Trust Policy

関連トピック