资源在基于资源的政策中的重要性
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>
拒绝政策声明
我正在尝试了解 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>