Amazon Redshift
数据库开发人员指南 (API 版本 2012-12-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

凭证和访问权限

要使用其他 AWS 资源(如 Amazon S3、Amazon DynamoDB、Amazon EMR 或 Amazon EC2)加载或卸载数据,您的集群必须有权访问这些资源和执行访问数据所需的操作。例如,要从 Amazon S3 加载数据,COPY 必须具有对存储桶的 LIST 访问权限以及对存储桶对象的 GET 访问权限。

要获取访问资源的授权,您的集群必须经过身份验证。您可以选择基于角色的访问控制或基于密钥的访问控制。本节概述了这两种方法。有关完整的详细信息和示例,请参阅访问其他 AWS 资源的权限

基于角色的访问控制

利用基于角色的访问控制,您的集群将代表您临时代入 AWS Identity and Access Management (IAM) 角色。然后,基于对角色的授权,您的集群可访问所需的 AWS 资源。

我们建议使用基于角色的访问控制,因为除了保护您的 AWS 凭证之外,它还将提供对 AWS 资源和敏感用户数据的更安全、精细的访问控制。

要使用基于角色的访问控制,您必须先使用 Amazon Redshift 服务角色类型创建 IAM 角色,然后将此角色附加到您的集群。此角色至少必须具有 COPY、UNLOAD 和 CREATE LIBRARY 的 IAM 权限中列出的权限。有关创建 IAM 角色并将其附加到您的集群的步骤,请参阅 Amazon Redshift Cluster Management Guide 中的创建 IAM 角色以允许您的 Amazon Redshift 集群访问 AWS 服务

通过使用 Amazon Redshift 管理控制台、CLI 或 API,您可将角色添加到集群或查看与集群关联的角色。有关更多信息,请参阅 Amazon Redshift Cluster Management Guide 中的授权使用 IAM 角色的 COPY 和 UNLOAD 操作

当您创建 IAM 角色时,IAM 将返回该角色的 Amazon 资源名称 (ARN)。要使用 IAM 角色执行 COPY 命令,请使用 IAM_ROLE 参数或 CREDENTIALS 参数提供角色 ARN。

以下 COPY 命令示例使用角色 MyRedshiftRole 的 IAM_ROLE 参数进行身份验证。

copy customer from 's3://mybucket/mydata' iam_role 'arn:aws:iam::12345678901:role/MyRedshiftRole';

基于密钥的访问控制

利用基于密钥的访问控制,您将为获权访问包含数据的 AWS 资源的 IAM 用户提供访问密钥 ID 和秘密访问密钥。 

注意

我们强烈建议使用 IAM 角色进行身份验证而不是提供纯文本访问密钥 ID 和秘密访问密钥。如果您选择基于密钥的访问控制,则不要使用 AWS 账户(根)凭证。应始终创建 IAM 用户并提供该用户的访问密钥 ID 和秘密访问密钥。有关创建 IAM 用户的步骤,请参阅在您的 AWS 账户中创建 IAM 用户

要使用 IAM 用户凭证进行身份验证,请为 ACCESS_KEY_ID 和 SECRET_ACCESS_KEY 参数将 <access-key-id><secret-access-key 替换为授权用户的访问密钥 ID 和完整的秘密访问密钥,如下所示。

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

AWS IAM 用户必须至少具有COPY、UNLOAD 和 CREATE LIBRARY 的 IAM 权限中列出的权限。