他の AWS リソースにアクセスするアクセス許可 - Amazon Redshift

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

他の AWS リソースにアクセスするアクセス許可

クラスターと Amazon S3、Amazon DynamoDB、Amazon EMR、Amazon EC2 などの他の AWS リソースの間でデータを移動するためには、クラスターには、リソースにアクセスし、必要なアクションを実行するためのアクセス許可が必要です。たとえば、Amazon S3 からデータをロードする場合、COPY はバケットへの LIST アクセスとバケットオブジェクトへの GET アクセスが必要です。最小限のアクセス権限については、「COPY、UNLOAD、CREATE LIBRARY のための IAM のアクセス許可」を参照してください。

リソースにアクセスする許可を取得するには、クラスターが認証される必要があります。次の認証方法のいずれかを選択できます。

  • ロールベースアクセスコントロール – ロールベースのアクセスコントロールの場合、クラスターが認証と認可に使用する AWS Identity and Access Management (IAM) ロールを指定します。AWS 認証情報および機密データを保護するには、ロールベースの認証を使用することを強くお勧めします。

  • キーベースのアクセスコントロール – キーに基づくアクセスコントロールの場合は、プレーンテキストとして IAM ユーザーの AWS アクセス認証情報 (アクセスキー ID およびシークレットアクセスキー) を指定します。

ロールベースアクセスコントロール

あり 役割ベースのアクセス制御、クラスタは一時的に IAM 役割を代行します。次に、ロールに付与された許可に基づいて、クラスターは必要な AWS のリソースにアクセスできます。

IAM ロールは、AWS でできることとできないことを決定するのが、アクセス権限ポリシーを伴う AWS ID であるという点で IAM ユーザーと似ています。ただし、1 人のユーザーに一意に関連付けられるのではなく、ロールは必要に応じてすべてのエンティティが引き受けることができます。また、ロールにはいずれの認証情報 (パスワードやアクセスキー) も関連付けられません。代わりに、ロールがクラスターに関連付けられた場合は、アクセスキーが動的に作成され、クラスターに提供されます。

AWS 認証情報を保護することに加えて、AWS のリソースおよび機密ユーザーデータへのアクセスに対してより安全で、きめの細かいコントロールを提供するロールベースのアクセスコントロールを使用することをお勧めします。

ロールベースの認証には次の利点があります。

  • AWS 標準の IAM ツールを使用して、IAM ロールを定義し、ロールを複数のクラスターと関連付けられます。ロールのためにアクセスポリシーを変更すると、変更はロールを使用するすべてのクラスターに自動的に適用されます。

  • 特定の AWS リソースおよびアクションにアクセスするために特定のクラスターとデータベースユーザーにアクセス許可を付与するきめ細かな IAM ポリシーを定義できます。

  • クラスターは、実行時に一時的なセッション認証情報を取得し、必要に応じて操作が完了するまで認証情報を更新します。キーに基づく一時的認証情報を使用する場合、完了する前に一時的認証情報の期限が切れると、操作は失敗します。

  • アクセスキー ID とシークレットアクセスキー ID は SQL コードには格納、送信されません。

ロールベースのアクセスコントロールを使用するには、Amazon Redshift サービスロールタイプを使用して IAM ロールを作成してから、クラスターにロールをアタッチする必要があります。ロールは、少なくとも COPY、UNLOAD、CREATE LIBRARY のための IAM のアクセス許可 に示されたアクセス権限が必要です。_を作成する手順は、 IAM クラスターにアタッチします。 を参照してください。 承認中 Amazon Redshift お客様の代わりに他のAWSサービスにアクセスするためAmazon Redshift Cluster Management Guide.

クラスターにロールを追加するか、Amazon Redshift マネジメントコンソール、CLI、または API を使用してクラスターに関連付けられるロールを表示できます。詳細については、以下を参照してください。 IAM役割のクラスタへの関連付けAmazon Redshift Cluster Management Guide.

IAM ロールを作成する場合、IAM はロールの Amazon リソースネーム (ARN) を返します。IAM ロールを指定するには、IAM_ROLE パラメータまたは CREDENTIALS パラメータでロールの ARN を指定します。

たとえば、以下のロールがクラスターにアタッチされるとします。

"IamRoleArn": "arn:aws:iam::0123456789012:role/MyRedshiftRole"

次の COPY コマンドの例では、Amazon S3 への認証とアクセスのために前の例の IAM_ROLE パラメータと ARN を使用します。

copy customer from 's3://mybucket/mydata' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

次の COPY コマンドの例は、CREDENTIALS パラメータを使用して IAM ロールを指定しています。

copy customer from 's3://mybucket/mydata' credentials 'aws_iam_role=arn:aws:iam::0123456789012:role/MyRedshiftRole';

キーベースのアクセスコントロール

あり キーベースのアクセス制御アクセスキーIDと秘密アクセスキーを IAM データを含むAWSリソースへのアクセスが許可されているユーザー。ACCESS_KEY_ID and SECRET_ACCESS_KEY パラメータを一緒に使用するか、CREDENTIALS パラメータを使用できます。

ACCESS_KEY_IDおよびSECRET_ACCESS_KEYを使用して認証するには、<access-key-id> および <secret-access-key> 権限のあるユーザーのアクセスキーIDと完全なシークレットアクセスキーを、以下に示します。

ACCESS_KEY_ID '<access-key-id>' SECRET_ACCESS_KEY '<secret-access-key>';

CREDENTIALSパラメータを使用して認証するには、<access-key-id> および <secret-access-key> 権限のあるユーザーのアクセスキーIDと完全なシークレットアクセスキーを、以下に示します。

CREDENTIALS 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key>';
注記

プレーンテキストのアクセスキー IDと シークレットアクセスキーを指定する代わりに、認証のために IAM ロールを使用することを強くお勧めします。キーベースのアクセスコントロールを選択する場合は、AWS アカウント (ルート) 認証情報を使用しないでください。常に IAM ユーザーを作成し、そのユーザーのアクセスキー ID とシークレットアクセスキーを指定します。IAM ユーザーを作成する手順については、「AWS アカウント内での IAM ユーザーの作成」を参照してください。

IAM ユーザーは、少なくとも COPY、UNLOAD、CREATE LIBRARY のための IAM のアクセス許可 に示されたアクセス許可が必要です。

一時的な認証情報

キーに基づくアクセスコントロールを使用する場合、一時的なセキュリティ認証情報を使用して、データへのユーザーのアクセスを制限できます。ロールベースの認証は、自動的に一時的な認証情報を使用します。

注記

一時的な認証情報を作成してアクセスキー ID とシークレットアクセスキーをプレーンテキストで提供するのではなく、「role-based access control」を使用することを強くお勧めします。ロールベースのアクセスコントロールは、自動的に一時的な認証情報を使用します。

一時的セキュリティ認証情報はセキュリティを強化します。使用期限が短く、期限が切れた後は再利用できないためです。トークンを使用して生成されるアクセスキー ID とシークレットアクセスキーはトークンなしに使用できません。これらの一時的セキュリティ認証情報を持つユーザーは認証情報の有効期限内のみリソースにアクセスできます。

ユーザーにリソースへの一時的アクセスを許可するには AWS Security Token Service (AWS STS) API 操作を呼び出します。AWS STS API 操作は、セキュリティトークン、アクセスキー ID、およびシークレットアクセスキーから構成される一時的セキュリティ認証情報を返します。一時的セキュリティ認証情報は、リソースへの一時的アクセスを必要とするユーザーに発行します。これらのユーザーは既存の IAM ユーザーであるか、非 AWS ユーザーです。一時的セキュリティ認証情報の作成の詳細については、IAM ユーザーガイド の「一時的なセキュリティ認証情報の使用」を参照してください。

ACCESS_KEY_ID and SECRET_ACCESS_KEY パラメータとともに SESSION_TOKEN パラメータを使用するか、CREDENTIALS パラメータを使用できます。また、トークンと共に提供されているアクセスキー ID とシークレットアクセスキーを指定する必要があります。

ACCESS_KEY_ID、SECRET_ACCESS_KEY、およびSESSION_TOKENを使用して認証するには、<temporary-access-key-id>, <temporary-secret-access-key>&&, および <temporary-token> 次のようになります。

ACCESS_KEY_ID '<temporary-access-key-id>' SECRET_ACCESS_KEY '<temporary-secret-access-key>' SESSION_TOKEN '<temporary-token>';

CREDENTIALS を使用して認証するには、次のように token=<temporary-token> を認証情報文字列に含めます。

CREDENTIALS 'aws_access_key_id=<temporary-access-key-id>;aws_secret_access_key=<temporary-secret-access-key>;token=<temporary-token>';

次の例は、一時的セキュリティ認証情報を使用する COPY コマンドを示しています。

copy table-name from 's3://objectpath' access_key_id '<temporary-access-key-id>' secret_access_key '<temporary-secret-access-key> token '<temporary-token>';

次の例では、一時的認証情報とファイル暗号化を使用して LISTING テーブルをロードします。

copy listing from 's3://mybucket/data/listings_pipe.txt' access_key_id '<temporary-access-key-id>' secret_access_key '<temporary-secret-access-key> token '<temporary-token>' master_symmetric_key '<master-key>' encrypted;

次の例では、CREDENTIALS パラメータを一時的認証情報およびファイル暗号化とともに使用して LISTING テーブルをロードします。

copy listing from 's3://mybucket/data/listings_pipe.txt' credentials 'aws_access_key_id=<temporary-access-key-id>;<aws_secret_access_key=<temporary-secret-access-key>;token=<temporary-token>;master_symmetric_key=<master-key>' encrypted;
重要

一時的セキュリティ認証情報は、COPY および UNLOAD 操作の期間全体で有効にする必要があります。一時的セキュリティ認証情報の期限が操作中に切れた場合、コマンドは失敗し、処理はロールバックされます。たとえば、一時的セキュリティ認証情報の期限が 15 分後に切れるときに COPY 操作に 1 時間かかる場合、COPY 操作は完了前に失敗します。ロールベースのアクセスを使用する場合、一時的なセキュリティ認証情報は操作が完了するまで自動的に更新されます。

COPY、UNLOAD、CREATE LIBRARY のための IAM のアクセス許可

CREDENTIALS パラメータによって参照される IAM ロールまたは IAM ユーザーは、少なくとも、次のアクセス権限が必要です。

  • Amazon S3 から COPY を実行する場合は、Amazon S3 バケットを LIST するアクセス許可およびロードされる Amazon S3 オブジェクトおよびマニフェストファイル (使用する場合) を GET するアクセス許可。

  • Amazon S3、Amazon EMR、および JSON 形式のデータのリモートホスト (SSH) から COPY を実行する場合は、Amazon S3 の JSONPaths ファイル (使用する場合) に対して LIST および GET を実行するアクセス許可。

  • DynamoDB から COPY を実行する場合は、ロードされた DynamoDB テーブルに対して SCAN および DESCRIBE を実行するアクセス許可。

  • Amazon EMR クラスターから COPY を実行する場合は、Amazon EMR クラスターに対して ListInstances アクションを実行するアクセス許可。

  • Amazon S3 への UNLOAD の場合、データファイルのアンロード先 Amazon S3 バケットに対する GET、LIST、および PUT アクセス許可。

  • Amazon S3 からの CREATE LIBRARY の場合、Amazon S3 バケットを LIST し、インポートされている Amazon S3 オブジェクトを GET するアクセス許可。

注記

COPY、UNLOAD、CREATE LIBRARY コマンドの実行時に、エラーメッセージ S3ServiceException: Access Denied というエラーメッセージが返される場合、クラスターには Amazon S3 への適切なアクセス許可がありません。

IAM ポリシーを、クラスター、IAM ユーザー、または IAM ユーザーが属するグループにアタッチされた IAM ロールにアタッチすることにより、IAM アクセス権限を管理できます。たとえば、AmazonS3ReadOnlyAccess 管理ポリシーは、Amazon S3 リソースへの LIST および GET アクセス許可を付与します。詳細については、以下を参照してください。 IAM ポリシーについては、を参照してください。 管理 IAM 方針IAM ユーザーガイド.