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