如何解决如何将 AWS IAM 权限设置为“拒绝除 Y 之外的所有通配符 X”?
在管理其他人的 AWS 账户时,我尽量在合理的范围内给予用户尽可能开放的权限。
因此,我将“允许”授予“ec2:*”,但随后使用“拒绝 ec2:*Vpn*”或“拒绝 ec2:Create*”等拒绝语句限制它们执行危险操作
但是,假设我发现了一个我不想拒绝的操作,例如“ec2:DescribeVpnGateways”。我如何从我的“拒绝”声明中省略这一项和仅这一项?
注意:“拒绝 ec2:*Vpn*”算作显式拒绝,因此任何“拒绝 ec2:*Vpn*”和“允许 ec2: DescribeVpnGateways”同时将导致“拒绝”规则覆盖“允许”规则。
注意 2: IAM 策略中存在一个名为“”的元素。这允许您拒绝除指定的操作之外的所有操作。如果我使用“拒绝:NotAction:ec2:DescribeVpnGateways”语句,这将拒绝每一个 AWS 操作,除了“ec2:DescribeVpnGateways”,这比我们预期的更具破坏性。
注意 3:NotAction。如果我们可以并且只使用两个字段之间的交集,那就太酷了。
有没有办法解决这个问题?我是否需要重构我的 IAM 以仅预先授予我的用户批准的权限,而不是先授予他们所有权限,然后再拒绝?
解决方法
Per AWS documentation,显式 DENY
将总是覆盖显式 ALLOW
。无论 DENY
和 ALLOW
是在同一政策的不同语句中,还是在附加到同一用户/角色的不同政策中,都是如此。
更可取的方法是明确允许您希望他们能够执行的操作。否则,当 AWS 在未来实施新操作时,您的用户将能够执行这些操作(即使它们非常危险),因为它们不在您的 DENY
语句中。例如,假设 AWS 在某个时刻添加了一个 ec2:DeleteAllInstances
操作;由于您的声明没有明确拒绝此操作,并且您已允许 ec2:*
,因此您的用户将能够删除所有实例。
EC2 很困难,因为有吨 不同的操作,但明确说明应该允许哪些操作确实要安全得多。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。