joa*_*kim 9 amazon-web-services amazon-iam
让我们假设一个基于用户的IAM 策略,即可以附加到用户、组或角色的IAM 策略。
假设一个可以完全访问 DynamoDB 表的程序:
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "dynamodb:*",
"Resource": "arn:aws:dynamodb:us-west-2:123456789:table/Books"
}
}
Run Code Online (Sandbox Code Playgroud)
基于此策略,任何以某种方式最终将策略附加到他们的用户(例如通过承担角色或直接)都可以获得对该 DynamoDB 表的完全访问权限。
问题 1:是否值得在另一端(即 DynamoDB 表)制定基于资源的策略来补充基于用户的策略?
例子:
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {"AWS": "arn:aws:iam::123456789012:user/bob"},
"Action": "dynamodb:*",
"Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books"
}
Run Code Online (Sandbox Code Playgroud)
这里的动机是,先前的策略可能最终会意外地附加到某人,而使用基于资源的策略将确保只有用户Bob将被授予这些权限。
问题 2:使用更严格的资源策略是否 只是更好?
问题3:一般情况下,是否有采摘之间任何的最佳做法/模式基于用户的VS基于资源的策略(即支持服务基于资源的政策是)?
Ekk*_*rdS 10
控制台 GUI 看起来很像,但 API 没有相应的操作。文档很清楚:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-overview.html#access-control-manage-access-resource-based
访问控制的挑战是长期维护它:
如果只需要寻找一个位置,那么上述所有 3 个任务都会容易得多。如果您想限制访问,请使用“效果”:“拒绝”。任何“意外分配”都会被审查发现。
答案 1b:当然这取决于用例(例如4眼原则可以要求它)。有些权限无法在 IAM 中设置(例如“Everyone”),必须在资源上设置。或者,如果您销毁/重新创建资源,基于资源的权限就会消失。
如果情况允许 IAM 和资源策略,它们具有相同的语法并且可以同样严格,至少在您的情况下是这样。假设所有其他条件相同,IAM 策略更容易管理。
不幸的是,除了“最低权限”之外,我不知道 AWS 发布了最佳实践。对于 AWS 之外的其他权限,我建议您采用可维护性方面的最佳实践。
归档时间: |
|
查看次数: |
3953 次 |
最近记录: |