amazon-web-services - 在拒绝语句中将账户标识符指定为 NotPrincipal 时,AWS 账户委派不起作用
问题描述
我在这里问了一个非常相似的问题。我想在这个问题上增加更多的清晰度。
根据 AWS 文档,
NotPrincipal With Deny
当您在与“Effect”:“Deny”相同的策略语句中使用 NotPrincipal 时,策略语句中指定的操作将明确拒绝所有委托人,但指定的委托人除外。
和
当您使用 AWS 账户标识符作为策略中的委托人时,您将授权委托给该账户。
当帐户(根)ARN 包含在 Allow 语句的 Principal 元素中时,对帐户的委派有效。
相反,当帐户(根)ARN 包含在拒绝语句的 NotPrincipal 元素中时,对帐户的委派不起作用。
这让我想到 - 即使通过在 NotPrincipal 中排除 Account 根,Deny 也永远不能委托给 Account,即您仍然需要在策略的 NotPrincipal 元素中明确指定要从 Deny 中排除的各个 IAM 用户。此行为与只需要指定帐户(根)以进行进一步委派的 Allow 非常不同 - 无需明确指定哪些 IAM 用户应包含在 Allow 中。
问题:对帐户的授权是否仅适用于 Allow 语句?即,即使通过 NotPrincipal 元素排除了该帐户,假设对帐户的授权也不适用于 Deny 语句,这是否正确?
场景 1:允许仅使用帐户(根)ARN 的代表
下面的存储桶策略将让账户通过其 IAM 策略决定账户中的哪些 IAM 用户可以访问存储桶 - 委托有效。
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::1234567890:root"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::abhiawsbucket-accessdemo",
"arn:aws:s3:::abhiawsbucket-accessdemo/*"
]
场景 2:拒绝不仅使用帐户(根)ARN 进行委派
下面的存储桶策略不会让账户通过其 IAM 策略决定账户中的哪些 IAM 用户可以访问存储桶 - 委托不起作用。在 NotPrincipal 元素中指定帐户(根)ARN 不会委托。
"Effect": "Deny",
"NotPrincipal": {
"AWS": "arn:aws:iam::1234567890:root"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::abhiawsbucket-accessdemo",
"arn:aws:s3:::abhiawsbucket-accessdemo/*"
]
总而言之,我试图找出以下陈述是否正确
委托给帐户(根)可以通过 Principal 和 NotPrincipal 元素实现,但委托本身仅适用于Effect:Allow。即使在 NotPrincipal 中排除了 Account (Root) 时,Account (Root) 的委派也不适用于Effect:Deny 。
解决方案
推荐阅读
- amazon-web-services - iot:Certificate.Subject.SerialNumber used to restrict shadow access
- c# - How to do generic polymorphism on open types in C#?
- php - 如何仅获取 1 个参数而不从数组中重复
- powershell - 使用格式运算符的 Powershell 颜色格式
- ruby - Ruby 尝试从旧版本的 gem 加载
- c++ - 类中的静态 constexpr 初始化链
- database - SQLite查询以获得相似的句子
- android - firebase调整图像扩展完成后如何获取缩略图的下载网址
- android - 如何使用 android xamarin 从我的手机中恢复 IMEI
- python - 检查对象是否具有属性,而不依赖于 '__getattr__'