我有一个S3存储桶,我需要拒绝所有用户访问,并允许访问特定的IAM角色。
我遵循AWS提供的文档。我可以为用户做,但当我为角色做,这不起作用。有人可以帮忙吗?
我在S3存储桶策略中尝试了以下代码。它会导致所有用户的访问拒绝,包括lambda角色。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::relambda",
"arn:aws:s3:::relambda/*"
],
"Condition": {
"StringNotLike": {
"aws:roleId": [
"KDCNKWDCKQWCLQKC:*",
"5371235537537"
]
}
}
}
]
}
答案 0 :(得分:1)
Principal
中没有任何内容。
请参阅/使用以下政策。
IAM用户具有以AIDA开头的唯一ID,您可以将其用于此目的。要查找此唯一ID:
安装AWS CLI后,打开命令提示符或shell。 运行命令:aws iam get-user --user-name USER-NAME 在输出中,查找userId字符串,该字符串将以AIDAEXAMPLEID开头。 确定userId字符串后,可以将其放在“aws:userId”条件数组中,如以下示例所示。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::MyExampleBucket",
"arn:aws:s3:::MyExampleBucket/*"
],
"Condition": {
"StringNotLike": {
"aws:userId": [
"AROAEXAMPLEID:*",
"AIDAEXAMPLEID",
"111111111111"
]
}
}
}
]
}
答案 1 :(得分:0)
这应该拒绝对所有人的访问,除了使用NotPrincipal
键的角色。
{
"Id": "DenyRoleAccess",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyAllRole",
"Action": [
"s3:*"
],
"Effect": "Deny",
"Resource": [
"arn:aws:s3:::BUCKET-NAME",
"arn:aws:s3:::BUCKET-NAME/*"
],
"NotPrincipal": {
"AWS": [
"arn:aws:iam::AWS-ACCOUNT-ID:role/ROLE-NAME"
]
}
}
]
}
答案 2 :(得分:-1)
您的要求似乎是:
幸运的是,所有Amazon S3存储桶的默认设置是默认拒绝访问,因此会自动满足这一要求!
要允许访问特定角色,请使用 Bucket Policy ,如下所示:
Windows.UI.Color
您还可以使用其他设置将其限制为使用角色的特定EC2实例。