授权参数
COPY 命令需要授权才能访问其他 AWS 资源(包括 Amazon S3、Amazon EMR、Amazon DynamoDB 和 Amazon EC2)中的数据。您通过引用附加到集群的 AWS Identity and Access Management (IAM) 角色来提供授权(基于角色的访问控制)。您可以在 Amazon S3 上加密您的加载数据。
以下主题将提供有关身份验证选项的更多详细信息和示例:
使用以下参数之一为 COPY 命令提供授权:
-
IAM_ROLE parameter
-
CREDENTIALS 子句
- IAM_ROLE { default | 'arn:aws:iam::
<AWS 账户-id>
:role/<role-name>
' } -
使用默认关键字让 Amazon Redshift 使用设置为默认值并在 COPY 命令运行时与集群关联的 IAM 角色。
使用 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 会自动为每个会话创建临时用户凭证。有关更多信息,请参阅 基于角色的访问控制。
以下显示 SESSION_TOKEN 参数与 ACCESS_KEY_ID 和 SECRET_ACCESS_KEY 参数配合使用时的语法。
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 配合使用。
注意
要获得更高的灵活性,我们建议使用 IAM_ROLE 参数,而不是 CREDENTIALS 参数。
(可选)如果使用了 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>
'