步骤 3:创建有权调用 GetClusterCredentials 的 IAM 角色 - Amazon Redshift

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

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

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

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

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

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

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

      arn:aws:redshift:region:account-id:dbname:cluster-name/database-name
    • 如果您使用 DbGroups 选项,请使用以下格式包含对 Amazon Redshift dbgroup 资源调用 redshift:JoinGroup 操作的权限。将 regionaccount-idcluster-name 替换为您的 AWS 区域、账户和集群的相应值。对于 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 语法