IAM 用户策略对特定文件夹进行读写

IAM 用户策略对特定文件夹进行读写

我正在尝试使用 CloudBerry Drive 工具将 S3 存储桶附加为我的网络驱动器。我有一个存储桶和其中的 2 个文件夹,假设存储桶名称为 environment,2 个文件夹为 dev 和 prod。我有 3 组用户将使用它 - Admin、Dev 和 Prod。Admin - 必须对这两个文件夹都具有读/写权限。Dev - 应该只对 dev 文件夹具有写访问权限 Prod - 应该对 dev 文件夹具有读访问权限,对 prod 文件夹具有写访问权限。

但是我对 IAM 权限感到困惑。管理员使用 S3 完全访问权限工作正常。但其他 2 个帐户工作不正常。

开发

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "s3:PutObject",
            "s3:DeleteObjectVersion",
            "s3:RestoreObject",
            "s3:PutObjectVersionTagging",
            "s3:PutObjectTagging",
            "s3:DeleteObject"
        ],
        "Resource": "arn:aws:s3:::environment/dev/*"
    }
  ]
}

有了它,我应该能够读写 dev 文件夹,而我却无法做到这一点。使用 CloudBerry Drive,我可以复制粘贴文件,但无法上传到 S3。此外,S3 中的文件在此处列出(这是必需的),但无法访问(附加错误)。

产品

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "s3:DeleteObjectTagging",
            "s3:DeleteObjectVersion",
            "s3:GetObjectVersionTagging",
            "s3:ReplicateTags",
            "s3:RestoreObject",
            "s3:PutObjectVersionTagging",
            "s3:DeleteObjectVersionTagging",
            "s3:ListMultipartUploadParts",
            "s3:ReplicateObject",
            "s3:GetObjectVersionTorrent",
            "s3:PutObject",
            "s3:GetObjectAcl",
            "s3:GetObject",
            "s3:ObjectOwnerOverrideToBucketOwner",
            "s3:GetObjectTorrent",
            "s3:AbortMultipartUpload",
            "s3:GetObjectVersionAcl",
            "s3:GetObjectTagging",
            "s3:PutObjectTagging",
            "s3:GetObjectVersionForReplication",
            "s3:DeleteObject",
            "s3:ReplicateDelete",
            "s3:GetObjectVersion"
        ],
        "Resource": "arn:aws:s3:::environment/Prod"
    }
  ]
}

有了它,我应该能够读取/写入 prod 文件夹,而我却无法做到这一点。使用 CloudBerry Drive,我可以复制粘贴文件,但无法上传到 S3。

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "s3:GetObjectVersionTorrent",
            "s3:GetObjectAcl",
            "s3:GetObject",
            "s3:GetObjectTorrent",
            "s3:GetObjectVersionTagging",
            "s3:GetObjectVersionAcl",
            "s3:GetObjectTagging",
            "s3:GetObjectVersionForReplication",
            "s3:GetObjectVersion",
            "s3:ListMultipartUploadParts"
        ],
        "Resource": [
            "arn:aws:s3:::environment"
        ],
        "Condition": {
            "StringLike": {
                "s3:prefix": [
                    "dev/*"
                ]
            }
        }
    }
  ]
}

S3 中的文件在此处列出(这是必需的)但无法访问(附加错误)。

希望我清楚我的要求:1. dev 用户仅对 dev 文件夹具有 R/W 访问权限 2. prod 用户对 prod 文件夹具有 R/W 访问权限并对 dev 文件夹具有 R 访问权限 3. 所有这些都是使用 CloudBerry Drive for S3 完成的。

注意:我在 Google 上搜索了很多方法并尝试了几乎所有方法,包括一些展示如何为特定用户文件夹提供写权限的策略。 在此处输入图片描述

答案1

抱歉,答案写得晚了:但是在我的脚本中,可以通过以下方式更改条件:

"Condition":{"StringLike":{"s3:prefix":["home/David/*"]}}

感谢 ceejayoz 指出我这个错误。

相关内容