授权参数 - Amazon Redshift

授权参数

COPY 命令需要授权才能访问其他 AWS 资源(包括 Amazon S3、Amazon EMR、Amazon DynamoDB 和 Amazon EC2)中的数据。您通过引用附加到集群的 AWS Identity and Access Management (IAM) 角色来提供授权(基于角色的访问控制)。您可以在 Amazon S3 上加密您的加载数据。

以下主题将提供有关身份验证选项的更多详细信息和示例:

使用以下参数之一为 COPY 命令提供授权:

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 controlkey-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>'