amazon-web-services - S3 拒绝管理员访问
问题描述
对于一个 AWS S3 存储桶,我想拒绝除一个特定 IAM 角色之外的所有人访问。我创建了一个基于角色的策略来允许访问并且有效。但其他 IAM 用户也可以访问对象,我想阻止这种情况。我尝试添加这样的存储桶策略,它拒绝除此主体之外的所有人,然后允许此主体。但是此策略会阻止包括该角色在内的所有人访问。
我试图阻止的其他 IAM 用户附加到内置的 AdminstratorAccess 策略。
{
"Version": "2012-10-17",
"Id": "PolicySecretBucket",
"Statement": [
{
"Sid": "StmtDenyAll",
"Effect": "Deny",
"NotPrincipal": {
"AWS": "arn:aws:iam::********:role/service-role/my-role"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-bucket/*"
},
{
"Sid": "StmtAllowLambdaBot",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::********:role/service-role/my-role"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
解决方案
我会这样做:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::MyExampleBucket",
"arn:aws:s3:::MyExampleBucket/*"
],
"Condition": {
"StringNotLike": {
"aws:userId": [
"AROAEXAMPLEID:*",
"ACCOUNT NUMBER"
]
}
}
}
]
}
这就是它的工作原理。
- 用户将有一个允许
s3.*
操作的 IAM 策略 - 我们将使用存储桶
MyExampleBucket
策略拒绝任何用户 id 的存储桶的所有 s3 操作,但角色的用户 id(以及根帐户的用户 id,如果角色被删除)
获取角色的用户 ID:
aws iam get-role --role-name ROLE-NAME
最后,为什么你的不起作用:https ://serverfault.com/a/988136
推荐阅读
- javascript - 如何管理点击事件以显示/隐藏 React 中的某些元素?
- python - Python 字典在字典中获取了我的无效输入
- node.js - Nodejs的“监听器”参数必须是函数类型
- charts - 如何删除 Bar Chartjs 中的左侧数值?
- express - Vue @change 应该更新数据库
- c# - 按类型和日期 LINQ 仅获取四个对象
- r - R数据转换成面板数据
- python - 我一直在使用 python tkinter 创建一个示例计算器,但它还没有达到我满意的水平
- json - 为自定义类型声明 UnmarshalJSON 的正确方法是什么?
- pymongo - 使用 collection.find 时的“$text 查询所需的文本索引”