Shw*_*har 6 amazon-web-services amazon-iam amazon-policy
我正在尝试创建一个 IAM 策略,该策略允许用户完全访问 dynamodb,但需要注意的是表必须具有Stage带有值的标签Dev。基本上您可以创建一个表,但您应该在其上添加Stage带有值的标签Dev。您只能查看/更新等标签为Stage=Dev.
AWS 文档提到了一种使用Global Context Keys轻松做到这一点的方法:aws:ResourceTag
但是当我使用可视化编辑器时,我在上下文键列表中找不到键。如果我手动编辑 JSON 并添加相同的内容,则会收到警告condition key is not supported
这是我的政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "OnlyDynamoDBWithTagValueDev",
"Effect": "Allow",
"Action": "dynamodb:*",
"Resource": "arn:aws:dynamodb:*:accountnumber:table/*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/Stage": "Dev"
}
}
}
]}
Run Code Online (Sandbox Code Playgroud)
我在这里可能做错了什么?
我认为你没有做错任何事。AWS 文档只是不正确且具有误导性。aws:ResourceTag不是此处所述的全局条件键。
全局条件键是带有 aws: 前缀的条件键。AWS 服务可以提供包含服务前缀的特定于服务的密钥。例如,IAM 条件键包括 iam: 前缀。
根据文档,任何带有 aws: 前缀的条件都是全局条件。但是,如果您查看其他服务的条件,例如 IOT,您将看到带有aws:前缀的服务特定条件,这与文档冲突。
而 ECR 将ecr:ResourceTag和aws:ResourceTag条件都列为特定于服务的条件。
另一方面,EC2 只有ec2:ResourceTag. RDS 具有rds:db-tag相同的目的。但是,DynamoDb 没有用于此目的的特定于服务的标签。
简而言之,aws:ResourceTag 不是全局条件键。某些服务使用 aws: 前缀创建特定于服务的标签,即使它们不应该这样做以符合 AWS 命名约定。
我建议您为开发资源创建一个单独的帐户。如果您不能这样做,您可以尝试更改策略中的逻辑作为解决方法,例如代替标记条件,在您的策略中应用命名约定,例如任何以 dev_ 开头的表。
| 归档时间: |
|
| 查看次数: |
1023 次 |
| 最近记录: |