凭证和访问权限
要使用另一 AWS 资源(如 Amazon S3、Amazon DynamoDB、Amazon EMR 或 Amazon EC2)加载或卸载数据,Amazon Redshift 必须有权访问该资源和有权执行访问数据所需的操作。例如,要从 Amazon S3 加载数据,COPY 必须具有对桶的 LIST 访问权限以及对桶对象的 GET 访问权限。
要获取访问资源的授权,Amazon Redshift 必须经过身份验证。您可以选择基于角色的访问控制或基于密钥的访问控制。本节概述了这两种方法。有关完整的详细信息和示例,请参阅访问其他 AWS 资源的权限。
基于角色的访问控制
利用基于角色的访问控制,Amazon Redshift 将代表您临时代入 AWS Identity and Access Management(IAM)角色。然后,基于对角色的授权,Amazon Redshift 可以访问所需的 AWS 资源。
我们建议使用基于角色的访问控制,因为除了保护您的 AWS 凭证之外,它还将提供对 AWS 资源和敏感用户数据的更安全、精细的访问控制。
要使用基于角色的访问控制,您必须先使用 Amazon Redshift 服务角色类型创建 IAM 角色,然后将此角色附加到您的数据仓库。此角色至少必须具有 COPY、UNLOAD 和 CREATE LIBRARY 的 IAM 权限中列出的权限。有关创建 IAM 角色并将其附加到集群的步骤,请参阅《Amazon Redshift 管理指南》中的创建 IAM 角色以允许您的 Amazon Redshift 集群访问 AWS 服务。
通过使用 Amazon Redshift 管理控制台、CLI 或 API,您可将角色添加到集群或查看与集群关联的角色。有关更多信息,请参阅《Amazon Redshift 管理指南》中的使用 IAM 角色授权 COPY 和 UNLOAD 操作。
当您创建 IAM 角色时,IAM 将返回该角色的 Amazon 资源名称(ARN)。要使用 IAM 角色运行 COPY 命令,请使用 IAM_ROLE 参数或 CREDENTIALS 参数提供角色 ARN。
以下 COPY 命令示例使用角色 MyRedshiftRole
的 IAM_ROLE 参数进行身份验证。
COPY customer FROM 's3://amzn-s3-demo-bucket/mydata' IAM_ROLE 'arn:aws:iam::12345678901:role/MyRedshiftRole';
AWS 用户必须至少具有COPY、UNLOAD 和 CREATE LIBRARY 的 IAM 权限中列出的权限。
基于密钥的访问控制
利用基于密钥的访问控制,您可以为获得授权可访问包含数据的 AWS 资源的用户提供访问密钥 ID 和秘密访问密钥。
注意
我们强烈建议使用 IAM 角色进行身份验证而不是提供纯文本访问密钥 ID 和秘密访问密钥。如果您选择基于密钥的访问控制,则不要使用 AWS 账户(根)凭证。应始终创建 IAM 用户并提供该用户的访问密钥 ID 和秘密访问密钥。有关创建 IAM 用户的步骤,请参阅在您的 AWS 账户中创建 IAM 用户。