对于允许访问存储桶及其内部所有内容的策略,是否需要选中对象旁边的“任何”框(或者只是允许访问存储桶就意味着访问其内容)?
我问的原因有两个 i) 以便该策略可以访问存储桶内的对象,但也 ii) 确认选中“任何”框不会授予对指定存储桶之外的对象的访问权限(它如果这样做可能会很糟糕并且没有实现) - 我认为它可能不会,但最好确定。
对于允许访问存储桶及其内部所有内容的策略,是否需要选中对象旁边的“任何”框(或者只是允许访问存储桶就意味着访问其内容)?
我问的原因有两个 i) 以便该策略可以访问存储桶内的对象,但也 ii) 确认选中“任何”框不会授予对指定存储桶之外的对象的访问权限(它如果这样做可能会很糟糕并且没有实现) - 我认为它可能不会,但最好确定。
不,对存储桶的访问(如策略资源所示arn:aws:s3:::mybucket
)不提供对该存储桶中对象的任何 API 访问。要访问对象,您需要允许对对象资源(如arn:aws:s3:::mybucket/*
.
您显示的 IAM 对话框很方便,可帮助您创建 JSON 策略。您可以随时单击 JSON 选项卡查看等效的 JSON 策略。
该对话框有 4 种资源类型:访问点、存储桶、作业、对象。它们彼此独立。在“桶”部分下选择特定的 S3 桶对“对象”部分没有任何影响。
因此,如果您mybucket
在存储桶和Any
对象下指明,您的策略将包含如下内容:
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::*/*",
"arn:aws:s3:::mybucket"
]
}
请特别注意,这允许s3:*
针对存储桶 ( arn:aws:s3:::mybucket
) 和所有存储桶 ( ) 中的所有对象的所有arn:aws:s3:::*/*
S3 操作 ( )。
如果您想允许对mybucket
存储桶和 中的所有对象执行操作,请在存储桶下方mybucket
指示,在对象mybucket
下方取消选择“任何”,并arn:aws:s3:::mybucket/*
在对象下方指示。您的 JSON 策略现在将如下所示:
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::mybucket/*",
"arn:aws:s3:::mybucket"
]
}