メニュー
Amazon Redshift
管理ガイド (API Version 2012年12月1日)

ユーザーに代わって 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 ロールを作成するには、以下の手順を実行します。

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

  1. IAM コンソールを開きます。

  2. ナビゲーションペインで [Roles (ロール) ] を選択します。

  3. [Create New Role] を選択します。

  4. [Role Name] で、ロールの名前 (RedshiftCopyUnload など) を入力します。[Next Step] を選択します。

  5. [AWS Service Roles] を選択し、[Amazon Redshift] までスクロールします。[Select] を選択します。

  6. [Attach Policy] ページで、対象となる AWS のサービスにアクセスするために Amazon Redshift クラスターが必要とするアクセス許可を与えるポリシーを選択します。例えば、Amazon S3 からデータをロードする場合、AmazonS3ReadOnlyAccess ポリシーを選択できます。Amazon S3 にデータをアンロードする場合も、AmazonS3FullAccess ポリシーを選択できます

  7. [Next Step] を選択します。

  8. 情報を確認してから、[Create Role] を選択します。

  9. 新しいロールは、そのロールを使用するクラスターのすべてのユーザーが利用できます。特定のクラスターの特定のユーザーのみ、または特定のリージョンのクラスターのみにアクセスを制限するには、ロールの信頼関係を編集します。詳細については、「IAM ロールへのアクセスの制限」を参照してください。

  10. ロールとクラスターを関連付けます。クラスターの作成時に IAM ロールをクラスターに関連付けるか、既存クラスターにロールを追加できます。詳細については、「IAM ロールをクラスターに関連付ける」を参照してください。

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

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

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

IAM ロールへのアクセス権を持つ特定のデータベースユーザーを特定する

  1. Amazon Redshift クラスターでデータベースユーザーの Amazon リソースネーム (ARN) を特定します。データベースユーザーの ARN は次の形式になります。arn:aws:redshift:region:account-id:dbuser:cluster-name/user-name

  2. IAM コンソール (https://console.aws.amazon.com) を開きます。

  3. ナビゲーションペインで [Roles (ロール) ] を選択します。

  4. 特定の Amazon Redshift データベースユーザーに制限する IAM ロールを選択します。

  5. [Trust Relationships] タブを選択し、[Edit Trust Relationship] を選択します。ユーザーに代わって Amazon Redshift が他の AWS のサービスにアクセスすることを許可する新しい IAM ロールは、次のような信頼関係を持ちます。

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  6. 指定した値に sts:ExternalId フィールドを制限する信頼関係のセクションの sts:AssumeRole アクションに条件を追加します。ロールへのアクセスを許可する各データベースユーザーの ARN を含めます。

    例えば、次の信頼関係では、us-west-2 リージョンの my-cluster クラスターで user1user2 データベースユーザーのみがこの IAM ロールを使用するアクセス許可を持つよう指定されます。

    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. [Update Trust Policy] を選択します。

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

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

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

IAM ロールの許可されたリージョンを特定する

  1. IAM コンソール (https://console.aws.amazon.com) を開きます。

  2. ナビゲーションペインで [Roles (ロール) ] を選択します。

  3. 特定のリージョンで変更するロールを選択します。

  4. [Trust Relationships] タブを選択し、[Edit Trust Relationship] を選択します。ユーザーに代わって Amazon Redshift が他の AWS のサービスにアクセスすることを許可する新しい IAM ロールは、次のような信頼関係を持ちます。

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  5. ロールの使用を許可する特定のリージョンのリストで、PrincipalService リストを変更します。Service リストの各リージョンは、次の形式である必要があります。redshift.region.amazonaws.com

    例えば、次の編集された信頼関係では、us-east-1us-west-2 リージョンでのみ IAM ロールの使用が許可されます。

    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. [Update Trust Policy] を選択します

関連トピック