Amazon web services 有没有可能有一个;允许;效果覆盖a";否认;?
我有一个S3存储桶,其结构如下:Amazon web services 有没有可能有一个;允许;效果覆盖a";否认;?,amazon-web-services,amazon-s3,amazon-policy,Amazon Web Services,Amazon S3,Amazon Policy,我有一个S3存储桶,其结构如下: top_level_name sub_level_1 sub_level_2 sub_level_3 我想全面拒绝顶级\u name上的所有操作(以排除本来可以访问此bucket的IAM策略),并有选择地允许特定用户访问其各自的子级。最初,我认为该政策可能类似于: { "Version": "2012-10-17", "Statement": [ { "Sid": "DenyTopLevel"
top_level_name
sub_level_1
sub_level_2
sub_level_3
我想全面拒绝顶级\u name
上的所有操作(以排除本来可以访问此bucket的IAM策略),并有选择地允许特定用户访问其各自的子级
。最初,我认为该政策可能类似于:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyTopLevel",
"Action": [
"s3:*"
],
"Effect": "Deny",
"Resource": "arn:aws:s3:::test-bucket/top_level_name/*",
"Principal": "*"
},
{
"Sid": "AllowSubLevel1",
"Action": [
"s3:PutObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::test-bucket/top_level_name/sub_level_1/*",
"Principal": {
"AWS": [
"arn:aws:iam::12345:user/my_user_account"
]
}
}
]
}
在执行过程中,看起来Allow无法取代Deny。有什么方法可以重写我的bucket策略来实现此模式吗?否。
拒绝
始终覆盖允许
但是,如果您只需删除第一个Deny
部分,就可以满足您的用例要求。这是因为默认情况下,用户没有权限。因此,除非策略明确允许,否则他们无权在顶层中PutObject
策略的第二部分授予较低级别的权限,这正是您所需要的
如果您有其他授予顶级访问权限的策略(例如通过
*
策略),那么您需要重新考虑您的其他策略(例如,将此桶从他们的允许
授予中排除)。谢谢@John,这很有意义。如果我有一个特别敏感的bucket,它的特权应该是“optin”(类似于示例),那么有没有最佳实践?听起来我要么必须管理IAM级别上使用的每个策略,要么可能将bucket拆分为其自己的受保护AWS帐户?是的,为敏感数据(如人力资源或工资单)创建单独的AWS帐户,然后限制访问该帐户中资源的人员是很常见的。