创建一个授予我对一个 S3 存储桶的完全控制权的组

创建一个授予我对一个 S3 存储桶的完全控制权的组

我想创建一个具有自定义组的用户,该组只允许我访问一个 S3 存储桶,但我这样做遇到了困难。

我现在看到这个屏幕:

在此处输入图片描述

我已经允许 S3 操作。现在我想将其限制为特定存储桶。我单击“资源”文本,得到以下内容:

在此处输入图片描述

我单击了两者的“添加 ARN”,得到以下信息:

在此处输入图片描述

我使用“whatever”作为存储桶的“存储桶名称”,使用“whatever”作为对象的“存储桶名称”(同时将“对象名称”留空),然后当我尝试使用新建组中新建的帐户访问 S3 时,我发现我无法从存储桶上传或下载文件,否则会出现 403 Forbidden 错误。如果我使用“所有资源”而不是“特定”,它可以工作,但我只希望此用户可以访问一个特定的存储桶。

有任何想法吗?

答案1

看起来您*在对象声明中缺少通配符。

在声明 bucket 时bucket-name/*应该用bucket-name/对象

尝试添加通配符

对于结果条目:

尝试添加通配符

答案2

您尚未分享实际的政策,只是向导的屏幕截图。如果您需要政策方面的帮助,请编辑您的帖子以将其包含在内。

网上有很多资源可以帮助解决这个问题,例如这篇 AWS 博客文章, 和本文档

我有这个策略,它允许对单个存储桶进行只读访问。我将策略附加到一个组,并将需要该策略的用户添加到该组。如果您需要不同的权限,只需将它们添加到 json 中即可。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Sid": "Stmt1498596902003",
            "Effect": "Allow",
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:GetObjectVersionAcl",
                "s3:ListAllMyBuckets",
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads",
                "s3:ListBucketVersions",
                "s3:ListMultipartUploadParts"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-name",
                "arn:aws:s3:::bucket-name/*"
            ]
        }
    ]
}

相关内容