Amazon web services 如何编写IAM策略以只提供一个目录的完全s3访问权限
我试图在一个s3存储桶上授予所有权限,但只授予一个文件夹。我正在尝试使用显式拒绝文件夹名是北京路径 buck123测试/中国/北京/。bucket名称是buck123 testAmazon web services 如何编写IAM策略以只提供一个目录的完全s3访问权限,amazon-web-services,amazon-s3,amazon-iam,Amazon Web Services,Amazon S3,Amazon Iam,我试图在一个s3存储桶上授予所有权限,但只授予一个文件夹。我正在尝试使用显式拒绝文件夹名是北京路径 buck123测试/中国/北京/。bucket名称是buck123 test { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1561641021576", "Action": [ "s3:ListBucket" ], "Effect":
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1561641021576",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::buck123-test"
},
{
"Sid": "Stmt1561639869054",
"Action": "s3:*",
"Effect": "Deny",
"Resource": "arn:aws:s3:::buck123-test/china/Beijing"
}
]
}
由于上述策略不起作用,我如何实现我的要求您的策略缺少
允许对bucket中的对象执行操作
那怎么办?(我自己没有测试,让我们报告一下这是否有效)
请注意,您需要这两种资源。ListBucket
和其他bucket级别的操作需要bucket name only资源。/*
资源对于对象级别的操作是必需的,例如Put
和Get
您的策略缺少允许对bucket中的对象执行操作
那怎么办?(我自己没有测试,让我们报告一下这是否有效)
请注意,您需要这两种资源。ListBucket
和其他bucket级别的操作需要bucket name only资源。/*
资源是对象级操作(如Put
和Get
等)所必需的修订答案,您缺少策略文档中的一些关键部分,请尝试此操作,因为它应该可以工作,但我尚未对此进行测试
如果您想允许用户访问GetObject、PutObject等,可以添加其他操作
{
"Id": "Policy1561648158487",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1561648106618",
"Action": "s3:*",
"Effect": "Deny",
"Resource": "arn:aws:s3:::buck123-test/china/Beijing/*",
"Principal": "*"
},
{
"Sid": "Stmt1561648156125",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::buck123-test/*",
"Principal": "*"
}
]
}
修改后的答案,您遗漏了政策文件中的一些关键部分,请尝试此方法,因为它应该会起作用,但我尚未测试此方法
如果您想允许用户访问GetObject、PutObject等,可以添加其他操作
{
"Id": "Policy1561648158487",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1561648106618",
"Action": "s3:*",
"Effect": "Deny",
"Resource": "arn:aws:s3:::buck123-test/china/Beijing/*",
"Principal": "*"
},
{
"Sid": "Stmt1561648156125",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::buck123-test/*",
"Principal": "*"
}
]
}
谢谢你的回复。但我试图明确拒绝访问北京文件夹。所以用户应该可以在bucket上做任何事情,但是不能访问Beijing Folderah,抱歉我误解了这一部分。我会更新答案谢谢你的回复。但我试图明确拒绝访问北京文件夹。所以用户应该可以在bucket上做任何事情,但是不能访问Beijing Folderah,抱歉我误解了这一部分。我会更新答案谢谢你的回答。我仍然可以列出北京文件夹中的对象。使用命令aws s3 ls buck123 test/china/Beijing/我也可以阻止此操作吗好的一点,我不认为您可以将ListBucket操作限制在bucket的一部分我和Sebastien的想法相同,您可能只想拒绝s3:*不起作用。。。ListBucket API类似于文件系统上的“ls”命令。如果可以读取目录,则可以看到其中的所有文件,并且不能隐藏某些文件。查看文件并不意味着客户可以访问文件内容。如果您想允许除某些文件之外的ListBucket,我建议使用两个Bucket。(但问问你自己:你想实现什么?授权ListBucket真的有必要吗?)谢谢你的回答。我仍然可以列出北京文件夹中的对象。使用命令aws s3 ls buck123 test/china/Beijing/我也可以阻止此操作吗好的一点,我不认为您可以将ListBucket操作限制在bucket的一部分我和Sebastien的想法相同,您可能只想拒绝s3:*不起作用。。。ListBucket API类似于文件系统上的“ls”命令。如果可以读取目录,则可以看到其中的所有文件,并且不能隐藏某些文件。查看文件并不意味着客户可以访问文件内容。如果您想允许除某些文件之外的ListBucket,我建议使用两个Bucket。(但问问你自己:你想实现什么?授权ListBucket真的有必要吗?)