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

步骤 3:创建有权调用 GetClusterCredentials 的 IAM 角色或用户

您的 SQL 客户端需要授权才能代表您调用 GetClusterCredentials 操作。要提供授权,可创建 IAM 用户或角色并附加授予必要权限的策略。

创建有权调用 GetClusterCredentials 的 IAM 角色

  1. 利用 IAM 服务,可创建 IAM 用户或角色。您也可以使用现有用户或角色。例如,如果您创建了一个用于身份提供商访问的 IAM 角色,则可向该角色附加必要的 IAM 策略。

  2. 附加有权调用 redshift:GetClusterCredentials 操作的权限策略。根据指定的可选参数,您还可在策略中允许或限制其他操作和资源:

    • 要允许您的 SQL 客户端检索 Redshift 群集资源的群集 ID、区域和端口,可包含调用 redshift:DescribeClusters 操作的权限。

    • 如果您使用 AutoCreate 选项,请包含使用 dbuser 资源调用 redshift:CreateClusterUser 的权限。以下 Amazon 资源名称 (ARN) 指定 Amazon Redshift dbuser。将 regionaccount-idcluster-name 分别替换为您的区域、账户和群集的值。对于 dbuser-name,指定将用于登录群集数据库的用户名。

      arn:aws:redshift:region:account-id:dbuser:cluster-name/dbuser-name
    • (可选) 添加 ARN,通过以下格式指定 Amazon Redshift dbname 资源。将 regionaccount-idcluster-name 分别替换为您的区域、账户和群集的值。对于 database-name,指定用户将登录的数据库的名称。

      arn:aws:redshift:region:account-id:dbname:cluster-name/database-name
    • 如果您使用 DbGroups 选项,请通过以下格式包含使用 Amazon Redshift dbgroup 资源调用 redshift:JoinGroup 操作的权限。将 regionaccount-idcluster-name 分别替换为您的区域、账户和群集的值。对于 dbgroup-name,指定用户在登录时将加入的用户组的名称。

      arn:aws:redshift:region:account-id:dbgroup:cluster-name/dbgroup-name

有关更多信息以及示例,请参阅 GetClusterCredentials 的资源策略

以下示例显示了允许 IAM 角色调用 GetClusterCredentials 操作的策略。该策略指定,对于名为 examplecluster 的群集上的名为 temp_creds_user 的数据库用户,Amazon Redshift dbuser 资源为其授予角色访问权限。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": "arn:aws:redshift:us-west-2:123456789012:dbuser:examplecluster/temp_creds_user" } }

您可使用通配符 (*) 替换完整或部分群集名称、用户名和数据库组名称。以下示例允许指定账户中的任何群集上所有以 temp_ 开头的用户名调用。

重要

以下示例中的语句指定通配符 (*) 作为资源的值,以便策略允许以指定字符开头的任何资源。在 IAM 策略使用通配符可能过于宽松。作为最佳实践,我们建议对您的业务应用程序使用最严格的可行策略。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": "arn:aws:redshift:us-west-2:123456789012:dbuser:*/temp_*" } }

以下示例显示了一个允许 IAM 角色调用 GetClusterCredentials 操作的策略,还具有选项,用于自动创建新用户并指定用户在登录时加入的组。"Resource": "*" 子句向角色授予对任何资源 (包括群集、数据库用户或用户组) 的访问权限。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "redshift:GetClusterCredentials", "redshift:CreateClusterUser", "redshift:JoinGroup" ], "Resource": "*" } }

有关更多信息,请参阅 Amazon Redshift ARN 语法