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

Does allowing access to a bucket automatically imply access to everything inside?

对于允许访问存储桶及其中的所有内容的策略,是否需要选中对象旁边的 'Any' 框(或者只是允许访问存储桶意味着可以访问其内容)?

我问有两个原因 i) 以便策略可以访问存储桶内的对象,而且 ii) 确认选中 'Any' 框 不会 授予对指定存储桶 外部 对象的访问权限(如果它实现了并且没有实现可能会很糟糕) - 我认为它可能没有但最好可以肯定。

不,访问存储桶(如 arn:aws:s3:::mybucket 等策略资源所示)不提供对该存储桶中对象的任何 API 访问。要访问这些对象,您需要允许对 arn:aws:s3:::mybucket/*.

等对象资源执行 API 操作

您显示的 IAM 对话框非常方便,可帮助您创建 JSON 策略。您可以随时单击 JSON 选项卡查看等效的 JSON 策略。

该对话框有 4 种资源类型:访问点、存储桶、作业、对象。它们彼此独立。在 'bucket' 部分下选择特定的 S3 存储桶 不会 对 'object' 部分产生任何影响。

因此,如果您在 bucket 下指示 mybucket 并在 object 下指示 Any,您的政策将包含如下内容:

{
    "Sid": "VisualEditor1",
    "Effect": "Allow",
    "Action": "s3:*",
    "Resource": [
        "arn:aws:s3:::*/*",
        "arn:aws:s3:::mybucket"
    ]
}

请特别注意,这允许针对存储桶 (arn:aws:s3:::mybucket) 和 所有 [=35] 中的对象的所有 S3 操作 (s3:*) =]所有个桶(arn:aws:s3:::*/*)。

如果要允许对 mybucket 存储桶和 mybucket 中的所有对象执行操作,请在存储桶下指示 mybucket,取消选择对象下的 'Any' , 并在object下注明arn:aws:s3:::mybucket/*。您的 JSON 政策现在将如下所示:

{
    "Sid": "VisualEditor1",
    "Effect": "Allow",
    "Action": "s3:*",
    "Resource": [
        "arn:aws:s3:::mybucket/*",
        "arn:aws:s3:::mybucket"
    ]
}