允许访问存储桶是否自动意味着可以访问内部的所有内容?

问题描述

对于允许访问存储桶及其内部所有内容的策略,是否需要选中对象旁边的“任何”框(或者只是允许访问存储桶就意味着对其进行访问内容)?

enter image description here

有两个原因,我问我),以便该策略可以访问存储桶中的对象,还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