首页 > 解决方案 > 允许访问存储桶是否自动意味着访问其中的所有内容?

问题描述

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

在此处输入图像描述

我问的原因有两个 i) 以便该策略可以访问存储桶内的对象,但也 ii) 确认选中“任何”框不会授予对指定存储桶之外的对象的访问权限(它如果这样做可能会很糟糕并且没有实现) - 我认为它可能不会,但最好确定。

标签: amazon-web-servicesamazon-s3amazon-iamamazon-policy

解决方案


不,对存储桶的访问(如策略资源所示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"
    ]
}

推荐阅读