View a markdown version of this page

访问其他 Amazon 资源的权限 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

2026 年 6 月 30 日之后,Amazon Redshift 不再支持使用 Python UDF。我们将分阶段开始执行。有关 Python 生命周期终止和迁移选项详情的更多信息,请参阅 2025 年 6 月 30 日发布的博客文章。

访问其他 Amazon 资源的权限

要在您的集群和其他 Amazon 资源(如 Amazon S3 、Amazon DynamoDB、Amazon EMR 或 Amazon EC2)之间移动数据,您的集群必须具有访问相应资源和执行所需操作的权限。例如,要从 Amazon S3 加载数据,COPY 必须具有对桶的 LIST 访问权限以及对桶对象的 GET 访问权限。有关最低权限的更多信息,请参阅 COPY、UNLOAD 和 CREATE LIBRARY 的 IAM 权限。

要获取访问资源的授权,您的集群必须使用以下身份验证方法进行身份验证:

  • 基于角色的访问控制 – 对于基于角色的访问控制,您指定您的集群用于身份验证和授权的 Amazon Identity and Access Management (IAM) 角色。为了保护您的 Amazon 凭证和敏感数据,我们强烈建议使用基于角色的身份验证。

基于角色的访问控制

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

创建 IAM 角色类似于向用户授予权限,因为它是一个 Amazon 身份,具有确定该身份在 Amazon 中可执行和不可执行的操作的权限策略。但是,任何实体都可以根据需要代入某个角色,角色并不是唯一地与某个用户关联。此外,角色没有任何关联的凭证(密码或访问密钥)。相反,如果将角色与集群关联,则会动态创建访问密钥并将其提供给集群。

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

基于角色的身份验证具有以下优点:

  • 您可以使用 Amazon 标准 IAM 工具定义 IAM 角色并将该角色与多个集群关联。当您修改某个角色的访问策略时,更改将自动应用于使用该角色的所有集群。

  • 您可定义为特定集群和数据库用户授予对特定 Amazon 资源和操作的访问权限的精细 IAM 策略。

  • 您的集群将在运行时获取临时会话凭证并按需刷新凭证直到操作完成。

  • 您的访问密钥 ID 和秘密访问密钥 ID 不会在 SQL 代码中存储或传输。

要使用基于角色的访问控制,您必须先使用 Amazon Redshift 服务角色类型创建 IAM 角色,然后将此角色附加到您的集群。此角色至少必须具有 COPY、UNLOAD 和 CREATE LIBRARY 的 IAM 权限中列出的权限。有关创建 IAM 角色并将其附加到集群的步骤,请参阅《Amazon Redshift 管理指南》中的授权 Amazon Redshift 代表您访问其它 Amazon 服务。

通过使用 Amazon Redshift 管理控制台、CLI 或 API,您可将角色添加到集群或查看与集群关联的角色。有关更多信息,请参阅《Amazon Redshift 管理指南》中的将 IAM 角色与集群关联。

当您创建 IAM 角色时,IAM 将返回该角色的 Amazon 资源名称 (ARN)。要指定 IAM 角色,请利用 使用 IAM_ROLE 参数 参数提供角色 ARN。

例如,假设以下角色已附加到集群。

"IamRoleArn": "arn:aws:iam::0123456789012:role/MyRedshiftRole"

以下 COPY 命令示例使用 IAM_ROLE 参数,其 ARN 在上一示例中用于身份验证和访问 Amazon S3。

copy customer from 's3://amzn-s3-demo-bucket/mydata' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

此外,超级用户还可以向数据库用户和组授予 ASSUMEROLE 权限,以便为 COPY 操作提供对角色的访问权限。有关信息,请参阅GRANT。

临时安全凭证

如果您使用基于角色的访问权限控制,Amazon Redshift 会自动代表您使用临时安全凭证。临时安全证书可增强安全性,因为它们时效短,过期后无法重复使用。

如果您使用 IAM 角色进行授权,您的集群会临时担任该角色,并在运行时获取临时会话凭证。您的集群会根据需要刷新这些凭证,直到操作完成,因此您无需自己提供或管理它们。有关更多信息,请参阅 基于角色的访问控制。

COPY、UNLOAD 和 CREATE LIBRARY 的 IAM 权限

IAM_ROLE 参数引用的 IAM 角色必须至少具有以下权限:

  • 对于从 Amazon S3 执行的 COPY 的操作,这是指对 Amazon S3 桶执行 LIST 以及对正在加载的 Amazon S3 对象以及清单文件(如果已使用)执行 GET 的权限。

  • 对于从 Amazon S3、Amazon EMR 执行 COPY 的操作、以及从使用 JSON 格式数据的远程主机 (SSH) 执行 COPY 的操作,这是指对 Amazon S3 上的 JSONPaths 文件(如果已使用)执行 LIST 和 GET 的权限。

  • 对于从 DynamoDB 执行 COPY 的操作,这是指对所加载的 DynamoDB 表执行 SCAN 和 DESCRIBE 的权限。

  • 对于从 Amazon EMR 集群执行的 COPY 操作,这是指对 Amazon EMR 集群上的 ListInstances 操作的权限。

  • 对于向 Amazon S3 执行 UNLOAD 的操作,这是指正在将数据文件卸载到的 Amazon S3 桶的 GET、LIST 和 PUT 权限。

  • 对于从 Amazon S3 执行 CREATE LIBRARY 的操作,这是指对 Amazon S3 桶执行 LIST 以及对正在导入的 Amazon S3 对象执行 GET 的权限。

注意

如果您在运行 COPY、UNLOAD 或 CREATE LIBRARY 命令时收到错误消息 S3ServiceException: Access Denied,则您的集群对于 Amazon S3 没有适当的访问权限。

您可以通过向附加到集群的 IAM 角色、向用户或向用户所属的组附加 IAM 策略,来管理 IAM 权限。例如,AmazonS3ReadOnlyAccess 托管策略可授予对 Amazon S3 资源的 LIST 和 GET 权限。有关 IAM 策略的更多信息,请参阅《IAM 用户指南》中的管理 IAM 策略。