首页 > 解决方案 > Redshift GetClusterCredentials IAM 策略需要 DbName

问题描述

如何定义 IAM 策略以有效地要求 DbName?

我想要做的是只允许使用指定的、列入白名单的 DbName 调用 GetClusterCredentials。问题是 DbName 参数是可选的。我还指定了 DbUser 资源,以便我可以${redshift:DbUser}在 IAM 策略条件中引用。

标签: amazon-web-servicesamazon-redshiftamazon-iam

解决方案


GetClusterCredentials 支持的条件键之一是redshift:DbName,可用于根据数据库名称限制 IAM 策略。例如,如果 DbName 未设置为“test-db”,则以下策略语句应拒绝该操作。

{
  "Sid": "GetClusterCredsStatement",
  "Effect": "Allow",
  "Action": [
    "redshift:GetClusterCredentials"
  ],
  "Resource": [
    "arn:aws:redshift:us-west-2:123456789012:dbname:examplecluster/*"
  ],
  "Condition": {
    "StringEquals": {
      "redshift:DbName": "test-db"
    }
  }
}

推荐阅读