我几乎没有JavaScript知识,所以我需要一些帮助。
我在AWS账户上创建了几个存储桶以及几个用户。我知道为拒绝特定用户访问存储桶而编写的正确语法,但是我需要拒绝对两个用户的访问。我不知道这样做的正确语法:(
我有以下两个用户:BarnU
和BarnZ
我拒绝访问一个用户的代码如下:
{
"Version": "2012-10-17",
"Id": "Policy1575527937316",
"Statement": [
{
"Sid": "Stmt1575527932225",
"Effect": "Deny",
"Principal": {
"AWS": "arn:aws:iam::755268545265:user/BarnU"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::poloserver/*"
}
]
}
如何将用户BarnZ
添加到此脚本中?
谢谢
答案 0 :(得分:1)
您可以简单地使用[ ]
表示法列出它们:
"AWS": [
"arn:aws:iam::755268545265:user/BarnU",
"arn:aws:iam::755268545265:user/BarnZ"
]
完整政策:
{
"Version": "2012-10-17",
"Id": "Policy1575527937316",
"Statement": [
{
"Sid": "Stmt1575527932225",
"Effect": "Deny",
"Principal": {
"AWS": [
"arn:aws:iam::755268545265:user/BarnU",
"arn:aws:iam::755268545265:user/BarnZ"
]
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::poloserver/*"
}
]
}
答案 1 :(得分:1)
为特定用户应用策略时,建议将策略与实际的IAM用户本身或IAM组相对。
此外,如果可能的话,最好避免使用Deny
策略,而应限制最初Allow
访问的策略。默认情况下,没有人可以访问Amazon S3中的任何内容。您必须具有一些策略来授予这两个用户访问S3的权限。如果可能的话,只需限制在这些Allow
策略中授予的访问权限,这样一开始就永远不会授予它们访问权限。
如果您遇到有人获得许可但希望覆盖该许可的情况,请使用Deny
。例如,可能授予某人访问所有Amazon S3存储桶的权限,但您不希望他们访问包含敏感数据的两个存储桶。在这种情况下,您可以使用Deny
策略覆盖Allow
。
为此,请将您问题中显示的策略针对特定的IAM用户,但省略Principal
部分,因为该策略将自动应用于IAM用户( s)已分配了策略。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
此外,请确保这些用户没有允许他们更改自己的策略的IAM权限,否则他们可以更改/删除该策略。