步骤 3:创建有权调用 GetClusterCredentials 的 IAM 角色
您的 SQL 客户端需要授权才能代表您调用 GetClusterCredentials
操作。要提供该授权,可以创建用户或角色并附加用于授予必要权限的策略。
创建有权调用 GetClusterCredentials 的 IAM 角色
-
利用 IAM 服务,创建用户或角色。您也可以使用现有用户或角色。例如,如果您创建了一个用于身份提供者访问的 IAM 角色,则可向该角色附加必要的 IAM 策略。
-
附加有权调用
redshift:GetClusterCredentials
操作的权限策略。根据指定的可选参数,您还可在策略中允许或限制其他操作和资源:-
要允许您的 SQL 客户端检索 Redshift 集群资源的集群 ID、AWS 区域和端口,可包含调用
redshift:DescribeClusters
操作的权限。 -
如果您使用
AutoCreate
选项,请包含对redshift:CreateClusterUser
资源调用dbuser
的权限。以下 Amazon 资源名称(ARN)指定 Amazon Redshiftdbuser
。将
、region
和account-id
替换为您的 AWS 区域、账户和集群的相应值。对于cluster-name
,指定用于登录到集群数据库的用户名。dbuser-name
arn:aws:redshift:
region
:account-id
:dbuser:cluster-name
/dbuser-name
-
(可选)添加一个 ARN,以使用以下格式指定 Amazon Redshift
dbname
资源。将
、region
和account-id
替换为您的 AWS 区域、账户和集群的相应值。对于cluster-name
,指定用户将登录到的数据库的名称。database-name
arn:aws:redshift:
region
:account-id
:dbname:cluster-name
/database-name
-
如果您使用
DbGroups
选项,请使用以下格式包含对 Amazon Redshiftdbgroup
资源调用redshift:JoinGroup
操作的权限。将
、region
和account-id
替换为您的 AWS 区域、账户和集群的相应值。对于cluster-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 语法。