【问题标题】:AWS IAM and KMS policy 'muddlement'AWS IAM 和 KMS 政策“混乱”
【发布时间】:2021-11-14 23:01:32
【问题描述】:

我希望某些 AWS 政策专家能够帮助我解读这里发生的情况。

我一直在使用 AWS 中的 IAM 和资源策略。根据 AWS 自己的文档,除非所有策略中有任何明确拒绝,否则资源策略应优先于 IAM 策略。请参阅显示 AWS 策略评估逻辑的附加链接。如果资源策略是“允许”,则不应评估 IAM 策略。

Policy Evaluation Logic

我正在努力解决的挑战(使用 KMS 时)就是这个。我已定义如下所示的用户 IAM 策略:

{ 
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:DeleteAlias"
            ],
            "Resource": "*"
        }
    ]
}

其唯一目的是允许用户删除 KMS CMK 别名。而且,我创建了一个 KMS CMK(资源策略),如下所示:

{
    "Version": "2012-10-17",
    "Id": "key-consolepolicy-3",
    "Statement": [
        {
            "Sid": "Enable IAM User Permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::xxxxxxxxxxxx:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "Allow access for Key Administrators",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::xxxxxxxxxxxx:user/user1"
                ]
            },
            "Action": [
                "kms:Create*",
                "kms:Delete*"
            ],
            "Resource": "*"
        },
}

我遇到的问题是,尽管 KMS 资源策略说我可以“创建别名”,但 AWS 不允许我这样做,除非 IAM 策略也明确包含它。

我希望有人能够向我解释 AWS 的策略逻辑实际上是如何工作的,以及我是否可能做错了什么。

提前非常感谢!

【问题讨论】:

  • 这是跨账号吗?
  • 不,都在一个帐户中。
  • 那么 user1 是否附加了策略?
  • 是的。对不起,我没有说清楚。上面的 IAM 策略是 user1 的策略。
  • 您正在执行的确切 cli 调用是什么,您收到的确切错误消息是什么?

标签: amazon-web-services amazon-iam amazon-kms aws-policies


【解决方案1】:

我认为罪魁祸首可能是您在 IAM 和资源策略中都缺少 kms:DescribeKey。在Controlling access to Aliases document 中按要求列出。

  • kms:为 KMS 密钥创建别名。必须在密钥策略或从密钥策略委派的 IAM 策略中提供此权限。
{
  "Sid": "Key policy for 1234abcd-12ab-34cd-56ef-1234567890ab",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:user/KMSAdminUser"},
  "Action": [
    "kms:CreateAlias",
    "kms:DescribeKey"
  ],
  "Resource": "*"
}

【讨论】:

  • 谢谢。虽然没有工作。我在 IAM 和 KMS 策略中都添加了“kms:DescribeKey”,但没有效果。我仍然有以下问题:如果 KMS 策略允许我做某事,但 IAM 策略不允许,它会阻止我这样做。尽管 AWS 策略评估逻辑规定资源策略优先于 IAM 策略,但前提是在任何地方都没有任何明确的拒绝。
  • @Nick 这是因为密钥别名是唯一的,并且需要 IAM 策略中的特殊权限。仅密钥策略中的权限不足以管理密钥别名。
【解决方案2】:

这是因为 kms 别名操作是唯一的,并且需要 KMS 密钥和 IAM 策略权限。特别是 kms:CreateAlias must be allowed 在您的 user1 的密钥策略和 IAM 策略中:

这意味着 KMS 密钥策略仅适用于密钥,而不适用于别名。

【讨论】:

  • 谢谢马尔辛。这是非常有用的。这解释了我所看到的行为。
  • @pete 没问题。如果答案有帮助,我们将不胜感激。
猜你喜欢
  • 2020-05-24
  • 1970-01-01
  • 1970-01-01
  • 2018-01-23
  • 2018-08-04
  • 2020-01-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多