Amazon Redshift
データベース開発者ガイド

認証パラメータ

COPY コマンドには、Amazon S3、Amazon EMR、Amazon DynamoDB、Amazon EC2 を含む別の AWS リソースのデータにアクセスするための承認が必要になります。クラスターにアタッチされた AWS Identity and Access Management (IAM) ロールを参照にして (ロールベースのアクセスコントロール)、または、IAM ユーザー用のアクセス認証情報を提供して (キーに基づくアクセスコントロール) アクセス権限を提供できます。セキュリティと柔軟性を強化するために、IAM ロールベースのアクセスコントロールを使用することをお勧めします。また、COPY では一時認証情報を使用してロードデータへのアクセスを制限できます。Amazon S3 にあるロードデータを暗号化することもできます。

以下のトピックでは、認証オプションの詳細と例をさらに示します。

以下のいずれかを使用して COPY コマンドに認証を提供します。

IAM_ROLE 'iam-role-arn'

クラスターが認証と認可に使用する IAM ロールの Amazon リソースネーム (ARN)。IAM_ROLE を指定すると、ACCESS_KEY_ID および SECRET_ACCESS_KEY、SESSION_TOKEN、または CREDENTIALS は使用できません。

以下に、IAM_ROLE パラメータの構文を示します。

IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name>'

詳細については、「ロールベースアクセスコントロール」を参照してください。

ACCESS_KEY_ID 'access-key-id ' SECRET_ACCESS_KEY 'secret-access-key'

データが含まれている AWS リソースにアクセスする権限を付与された IAM ユーザーのアクセスキー ID とシークレットアクセスキー。ACCESS_KEY_ID と SECRET_ACCESS_KEY は一緒に使用する必要があります。オプションで、一時的アクセス認証情報を提供し、SESSION_TOKEN パラメータを指定できます。

いかに、ACCESS_KEY_ID および SECRET_ACCESS_KEY パラメータの構文を示します。

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

詳細については、「キーベースのアクセスコントロール」を参照してください。

ACCESS_KEY_ID と SECRET_ACCESS_KEY を指定すると、IAM_ROLE または CREDENTIALS は使用できません。

注記

アクセス認証情報をプレーンテキストで提供するのではなく、IAM_ROLE パラメータを指定してロールベースの認証を使用することを強くお勧めします。詳細については、「ロールベースアクセスコントロール」を参照してください。

SESSION_TOKEN 'temporary-token'

一時的アクセス認証情報で使用するセッショントークン。SESSION_TOKEN を指定した場合、ACCESS_KEY_ID と SECRET_ACCESS_KEY も使用して一時的アクセスキー認証情報を指定する必要があります。SESSION_TOKEN を指定した場合、IAM_ROLE または CREDENTIALS は使用できません。詳細については、「IAM ユーザーガイド」の「一時的セキュリティ認証情報」を参照してください。

注記

一時的セキュリティ認証情報を作成するのではなく、ロールベースの認証を使用することを強くお勧めします。IAM ロールを使用して承認すると、Amazon Redshift が自動的に各セッション用の一時的ユーザー認証情報を作成します。詳細については、「ロールベースアクセスコントロール」を参照してください。

以下に、ACCESS_KEY_ID と SECRET_ACCESS_KEY パラメータを使用した SESSION_TOKEN パラメータの構文を示します。

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

SESSION_TOKEN を指定した場合、CREDENTIALS または IAM_ROLE は使用できません。

[WITH] CREDENTIALS [AS] 'credentials-args'

クラスターが、データファイルまたはマニフェストファイルを含む他の AWS リソースにアクセスするときに使用する方法を示す句です。CREDENTIALS パラメータは、IAM_ROLE または ACCESS_KEY_ID と SECRET_ACCESS_KEY との併用はできません。

注記

柔軟性を強化するために、CREDENTIALS パラメータの代わりに「IAM_ROLE」または「ACCESS_KEY_ID および SECRET_ACCESS_KEY」を使用することをお勧めします。

必要に応じて ENCRYPTED パラメータを使用する場合は、credentials-args 文字列が、暗号化キーを提供します。

credentials-args 文字列では大文字と小文字が区別され、空白を含めることはできません。

キーワード WITH および AS はオプションで、無視されます。

ロールベースのアクセスコントロール または キーベースのアクセスコントロール のどちらかを指定できます。どちらの場合も、IAM ロールまたは IAM ユーザーは、特定の AWS リソースにアクセスするために必要なアクセス許可が必要です。詳細については、「COPY、UNLOAD、CREATE LIBRARY のための IAM のアクセス許可」を参照してください。

注記

AWS 認証情報および機密データを保護するには、ロールベースのアクセスコントロールを使用することを強くお勧めします。

ロールベースのアクセスコントロールを指定するには、次の形式で credentials-args 文字列を指定します。

'aws_iam_role=arn:aws:iam::<aws-account-id>:role/<role-name>'

キーに基づくアクセスコントロールを指定するには、次の形式で credentials-args を指定します。

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

一時トークン認証情報を使用するには、一時アクセスキー ID、一時秘密アクセスキー、および一時トークンを提供する必要があります。credentials-args 文字列は次の形式になります。

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

詳細については、「一時的セキュリティ認証情報」を参照してください。

ENCRYPTED パラメータを使用する場合、credentials-args 文字列は次の形式になります。ここで <master-key> はファイルの暗号化に使用されたマスターキーの値です。

CREDENTIALS '<credentials-args>;master_symmetric_key=<master-key>'

たとえば、次の COPY コマンドが、暗号化キーを含むロールベースのアクセスコントロールを使用するとします。

copy customer from 's3://mybucket/mydata' credentials 'aws_iam_role=arn:aws:iam::<account-id>:role/<role-name>;master_symmetric_key=<master-key>'

次の COPY コマンドは、暗号化キーを含むキーに基づくアクセスコントロールを示します。

copy customer from 's3://mybucket/mydata' credentials 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key>;master_symmetric_key=<master-key>'