资源在基于资源的政策中的重要性

Significance of resource in Resource Based Policy

我正在尝试了解 IAM 中基于资源的策略。

我了解:它附加到 s3、KMS、机密管理器等资源。

我的问题是 Resource 在基于资源的策略中有什么意义。

例如 AWS secrets manager(https://aws.amazon.com/premiumsupport/knowledge-center/secrets-manager-resource-policy/)

的权限策略
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "secretsmanager:*",
      "Principal": {"AWS": "arn:aws:iam::123456789999:user/Mary"},
      "Resource": "*"
    }
  ]
}

这里的 Resource 是 * 或者资源可以是 secrets manager 的 ARN。 (在这种情况下是否允许任何其他值?)对于 S3,我可以想到根桶或其他前缀。

所以我的问题是 Resource 在这里的用例是什么?如果我读错了请告诉我。

提前致谢。

查看 User Guide,您可以看到:

Resource: which secrets they can access. See Secrets Manager resources.

The wildcard character (*) has different meaning depending on what you attach the policy to:

  • In a policy attached to a secret, * means the policy applies to this secret.
  • In a policy attached to an identity, * means the policy applies to all resources, including secrets, in the account.

因此,在将它附加到秘密的情况下,它实际上没有与 * 不同的含义,但是当您将它附加到身份时,它会变得更有用。然后可以给不同的身份赋予不同的secrets不同的操作权限。

Resource 是策略引用的资源。它允许对策略进行更细粒度的控制。

举个例子- 您托管多个 DynamoDB table,每个都有多个索引。您想要授予组 A 中的用户访问某些 table 及其索引的权限。

您想授予 B 组中的用户访问单个 table,但 none 个索引的权限。

并且您想授予 C 组中的用户访问单个 table 及其所有 3 个索引的权限。

当您在组 A 的策略中指定 resource"resource": ["arn::<table-a-arn>/","arn::<table-b-arn>/","arn::<table-b-arn>/index/gsi1"]

B 组的资源策略"resource": "arn::<table-c-arn>/"

C组"resource": ["arn::<table-a-arn>/","arn::<table-a-arn>/index/*"]

明确拒绝的另一个用例。显式拒绝总是覆盖隐式允许。如果您在一个帐户中授予对 EC2 的完全访问权限,该策略具有 "resource": * 的 EC2 权限,但您希望限制您应用该策略的实体对单个实例的访问,您还可以添加一个使用 "resource": <some-super-private-instance>

拒绝政策声明