Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

授权参数

COPY 命令需要授权才能访问其他 AWS 资源(包括 Amazon S3、Amazon EMR、Amazon DynamoDB 和 Amazon EC2)中的数据。您可通过引用附加到您的群集的 http://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles.htmlAWS 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'

IAM 用户的访问密钥 ID 和秘密访问密钥,该用户已获授权,可访问包含数据的 AWS 资源。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 会自动为每个会话创建临时用户凭证。有关更多信息,请参阅 基于角色的访问控制

以下显示 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_ROLEACCESS_KEY_ID and SECRET_ACCESS_KEY 参数,而不是 CREDENTIALS 参数。

(可选) 如果使用了 ENCRYPTED 参数,credentials-args 字符串还将提供加密密钥。

credentials-args 字符串区分大小写且不得包含空格。

关键字 WITH 和 AS 是可选的,将被忽略。

您可指定 role-based access controlkey-based access control。在任一情况下,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>'