示例 3:除非存在特定标签,否则拒绝流访问
使用 aws:TagKeys 条件键,除非请求中包含所需的标签键,否则您可以拒绝为流添加标签。
使用 Amazon CLI
-
将客户管理型策略添加到具有 DynamoDB 访问权限的角色中,如以下示例所示。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "dynamodb:TagResource" ], "Resource": "arn:aws:dynamodb:*:*:table/*/stream/*", "Condition": { "Null": { "aws:TagKeys": "false" }, "ForAllValues:StringNotEquals": { "aws:TagKeys": "CostCenter" } } } ] } -
代入该角色,并尝试使用不是
CostCenter的标签键为流添加标签。aws dynamodb tag-resource \ --resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable/stream/2024-01-01T00:00:00.000 \ --tags Key=Department,Value=Engineering
带和不带 Streams ABAC 时的行为
- 不带 Streams ABAC
-
如果您未为您的 Amazon Web Services 账户启用 Streams ABAC,则 DynamoDB 不会在请求中将标签键发送到 IAM。
Null条件可确保在请求中没有标签键时,条件的计算结果为 false。由于拒绝策略不匹配,因此tag-resource命令成功完成。 - 带 Streams ABAC
-
如果为您的 Amazon Web Services 账户启用了 Streams ABAC,则标签键
Department将根据拒绝策略中存在的基于条件的标签键CostCenter进行评估。由于StringNotEquals运算符的原因,标签键Department与拒绝策略中存在的标签键不匹配。因此,TagResource操作失败并返回AccessDeniedException。