amazon-web-services - 允许每个用户只列出 s3 中的一些文件夹
问题描述
我正在为我的客户上传一个新的 S3 存储桶。我只想让每个客户只看到他们自己的文件夹,这样每个客户就无法知道我正在和谁一起工作。
我可以将其设置为每个客户端都无法列出或查看任何其他客户端文件夹中的对象,但目前每个客户端都可以列出存储桶中的所有文件夹。
理想情况下,我希望存储桶的顶层包含多个文件夹,例如client-1-folder
,client-2-folder
等等。然后当有人以身份登录时client-1
,他们只能看到client-1-folder
甚至看不到该client-2
文件夹存在(所以他们不知道我在与客户合作 2)。
这可以通过 IAM 权限实现吗?
我当前的 IAM 政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "id1",
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:ListAllMyBuckets"
],
"Resource": "arn:aws:s3:::*"
},
{
"Sid": "id2",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::client-bucket",
"Condition": {
"StringEquals": {
"s3:prefix": [
"",
"client-1-folder/"
],
"s3:delimiter": [
"/"
]
}
}
}
]
}
解决方案
为什么不为不同的客户创建不同的 s3 存储桶?为每个客户创建一个专用存储桶。然后您为每个客户创建的用户,创建允许客户只看到他/她的 s3 存储桶的策略。
推荐阅读
- sql - 角色和特权有什么区别
- amazon-web-services - 开发简单的云数据处理系统
- regex - 正则表达式自动匹配和输出产品名称
- javascript - 如何用图像制作进度条
- java - 如何将JTable中的数据保存到数据库?
- python - pip freeze 不显示包版本
- python - 如何在 Kivy 中删除动态添加的 BoxLayout
- android-fragments - 如何在 TabLayout 中找到由 RecyclerView 打开的对话框的上下文?
- avro - Avro 文件从 Snowflake 表加载和读取
- javascript - 在Vue js中将复选框选择的值分组到数组中