Amazon web services IAM AWS S3限制到特定子文件夹
我使用AWS S3组件来存储文件 我有一个名为“mybucket”的bucket,其中包含以下文件夹:Amazon web services IAM AWS S3限制到特定子文件夹,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我使用AWS S3组件来存储文件 我有一个名为“mybucket”的bucket,其中包含以下文件夹: +---Mybucket \---toto1 \---toto2 +---toto3 | \--- subfolder | \---subsubfolder \---toto4 我有AWS控制台用户,他们只需要访问“toto3”文件夹 我试图限制对此文件夹的访问,但用户必须有权列出bucket的根目录。如果我赋予访问根文件夹的附加权限,用户可以浏览“toto1”和“toto2
+---Mybucket
\---toto1
\---toto2
+---toto3
| \--- subfolder
| \---subsubfolder
\---toto4
我有AWS控制台用户,他们只需要访问“toto3”文件夹
我试图限制对此文件夹的访问,但用户必须有权列出bucket的根目录。如果我赋予访问根文件夹的附加权限,用户可以浏览“toto1”和“toto2”文件夹,而我不需要
我想配置如下内容:
- 授权列出我的S3帐户的所有存储桶(ListAllBucket策略)
- 自动调整以列出bucket的根目录(如果用户看到目录名,我也可以)
- 拒绝访问与“toto3”不同的所有前缀存储桶
- 自动调整toto3文件夹中用户的每个操作
- 我不想写一个包容性规则
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:PutObject",
"s3:GetObject"
],
"Resource": ["arn:aws:s3:::mybucket/toto3/*"]
},
{
"Sid": "Stmt1457617383000",
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": ["arn:aws:s3:::mybucket"]
},
{
"Sid": "Stmt1457617230000",
"Effect": "Deny",
"Action": ["s3:*"],
"Condition": {
"StringNotLike": {
"s3:prefix": "toto3*"
}
},
"Resource": [
"arn:aws:s3:::mybucket/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": [
"*"
]
}
]
}
以下是一项适用于您的政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::mybucket/toto3/*"
]
},
{
"Sid": "Stmt1457617230000",
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Condition": {
"StringLike": {
"s3:prefix": [
"",
"toto3/"
]
}
},
"Resource": [
"arn:aws:s3:::mybucket*"
]
}
]
}
详情:
是控制台所必需的。它显示所有存储桶的列表listallybucket
路径中允许的任何操作toto3/
(检索对象列表)允许在bucket的根目录和ListBucket
路径中使用totot3/
AWS文档参考:我编辑了您的代码,使其具备以下功能,并且可以正常工作!谢谢
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::mybucket/toto3/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::mybucket",
"Condition": {
"StringLike": {
"s3:prefix": [
"",
"toto3/",
"toto3*"
]
}
}
}
]
}
我只需要授予外部供应商对文件夹下的子文件夹的访问权限,该文件夹位于bucket(!!!)下。大概是这样的: 存储桶/文件夹/子文件夹 我是如何做到这一点的:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
"s3:DeleteObject",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::bucket/*",
"arn:aws:s3:::bucket"
]
"Condition": {
"StringLike": {
"s3:prefix": [
"bucket/folder/subfolder/*",
"bucket/folder/subfolder/",
"bucket/folder/subfolder",
"folder/subfolder/*",
"folder/subfolder/",
"folder/subfolder",
]
}
}
}
]
}
是否可以限制以下规则,但允许特定文件夹访问?我不希望用户看到特定bucket中的目录名/文件夹名
自动调整以列出bucket的根目录(如果用户看到目录名称,我就可以了)也可以看到这一点,因此
“s3:prefix”:[“”]只允许在bucket的根目录级别列出
ListBucket`文件夹名称,但不列出其内容,除了路径以totot3/
开头?是这样吗?@W.M.不,这是不正确的,如果你使用ls--recursive,它会给你bucket中的整个文件列表,这显然不是你想要的隔离行为。这让你列出整个bucket中的所有文件,这是你想要的行为吗?