amazon-s3 - 如何指定 AWS S3 存储桶策略
问题描述
我的目标是创建对特定 S3 存储桶只有 API 访问权限和一组允许操作的技术用户。
我使用了“策略生成器”并复制/粘贴了存储桶的 ARN。我还复制/粘贴了用户的 ARN(IAM 控制台用户配置文件)。为了使测试更简单,我授予对所有操作的访问权限 ("s3:*)
在用户创建期间,我没有授予任何权利。我只检查了“使用访问密钥”并下载了 credentials.csv 文件。
测试场景如下:
- 我在文件 ~/.aws/credentials 中有 [default] 配置文件和我自己的凭据
- 我运行代码来获取存储桶信息。工作正常。
- 我在不同的配置文件 [svc_account] 下将技术用户的凭据添加到 ~/.aws/credentials
- 我激活了技术用户 [svc_account] 的个人资料
- 当我重新运行与我的凭据一起使用的相同命令时,出现错误“访问被拒绝”
这是我应用于存储桶的策略:
{
"Id": "Policy4321",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt12345",
"Action": "s3:*",
"Effect": "Allow",
"Resource": "arn:aws:s3:::my-bucket-name",
"Principal": {
"AWS": [
"arn:aws:iam::111111111111:user/svc_acc"
]
}
}
]
}
我的方法有什么问题?
解决方案
您的方法很好,但您的政策不正确。
此策略仅适用于存储桶本身,而不适用于其持有的对象。因此,根据您调用的命令,您可能会收到“拒绝访问”。将 /* 添加到您的存储桶 ARN 以将其应用于对象。
“资源”:“arn:aws:s3:::my-bucket-name/*”
但是,在这种情况下,我会使用 IAM 策略,因为它绑定到用户。您还可以通过检查用户附加的策略轻松检查用户可以访问的内容。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": ["arn:aws:s3:::my-bucket-name/*"]
}
]
}
推荐阅读
- postgresql - 如何在 postgres 函数中创建临时表
- javascript - 如何修复手风琴在 Shopify 视差主题中与页脚重叠?
- sql - Windows Server2016 上的 SQL Server Management Studio 17.9 安装失败
- android - TensorFlow 对象检测在 Xamarin Android 上失败并出现重塑问题
- javascript - 在网站上实现动态列表的最有效方法
- java - 嵌套的while循环不会要求再次正确运行程序
- php - 使用 Ckeditor 编辑数据库中保存的数据
- python - 使用没有 ValueError 的 tkinter 模块时如何导入函数
- java - 如何将textview中的2个单词左对齐和右对齐
- java - 如何将两个子actor的总和结果返回给父级并打印出来