認可パラメータ
COPY コマンドが、他の AWS リソース (Amazon S3、Amazon EMR、Amazon DynamoDB、Amazon EC2 など) のデータにアクセスするにためには承認が必要です。この承認は、クラスターにアタッチされた AWS Identity and Access Management (IAM) ロール (ロールベースのアクセスコントロール) を参照することで提供できます。Amazon S3 のロードデータを暗号化できます。
以下のトピックでは、認証オプションの詳細と例をさらに示します。
以下のいずれかを使用して COPY コマンドに認可を提供します。
-
IAM_ROLE パラメータ
- IAM_ROLE { default | 'arn:aws:iam::
<AWS アカウント-id>
:role/<role-name>
' } -
デフォルトキーワードを使用して、COPY コマンドの実行時にデフォルトとして設定され、クラスターに関連付けられた IAM ロールの使用を、Amazon Redshift に指示します。
クラスターが認証と認可に使用する IAM ロールの Amazon リソースネーム (ARN) を使用します。IAM_ROLE を指定すると、ACCESS_KEY_ID および SECRET_ACCESS_KEY、SESSION_TOKEN、または CREDENTIALS は使用できません。
以下に、IAM_ROLE パラメータの構文を示します。
IAM_ROLE { default | 'arn:aws:iam::
<AWS アカウント-id>
:role/<role-name>
' }詳細については、「ロールベースアクセスコントロール」を参照してください。
- ACCESS_KEY_ID 'access-key-id ' SECRET_ACCESS_KEY 'secret-access-key'
-
この認可方法は推奨されません。
注記
アクセス認証情報をプレーンテキストで提供するのではなく、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 パラメータを使用することをお勧めします。
必要に応じて ENCRYPTED パラメータを使用する場合は、credentials-args 文字列が、暗号化キーを提供します。
credentials-args 文字列では大文字と小文字が区別され、空白を含めることはできません。
キーワード WITH および AS はオプションで、無視されます。
role-based access control または key-based access control のどちらかを指定できます。どちらの場合も、IAM ロールまたはユーザーは、指定された AWS リソースにアクセスするために必要なアクセス許可が必要です。詳細については、「COPY、UNLOAD、CREATE LIBRARY のための IAM のアクセス許可」を参照してください。
注記
AWS 認証情報および機密データを保護するには、ロールベースのアクセスコントロールを使用することを強くお勧めします。
ロールベースのアクセスコントロールを指定するには、次の形式で credentials-args 文字列を指定します。
'aws_iam_role=arn:aws:iam::
<aws-account-id>
:role/<role-name>
'一時トークン認証情報を使用するには、一時アクセスキー 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 文字列は下記のような形式になります。ここで
<root-key>
はファイルの暗号化に使用されたルートキーの値です。CREDENTIALS '
<credentials-args>
;master_symmetric_key=<root-key>
'例えば、次の COPY コマンドが、暗号化キーを含むロールベースのアクセスコントロールを使用するとします。
copy customer from 's3://amzn-s3-demo-bucket/mydata' credentials 'aws_iam_role=arn:aws:iam::
<account-id>
:role/<role-name>
;master_symmetric_key=<root-key>
'次の COPY コマンドでは、暗号化キーを使用したロールベースのアクセスコントロールを出力します。
copy customer from 's3://amzn-s3-demo-bucket/mydata' credentials 'aws_iam_role=arn:aws:iam::
<aws-account-id>
:role/<role-name>
;master_symmetric_key=<root-key>
'