特定のフォルダへの RW に対する IAM ユーザー ポリシー

特定のフォルダへの RW に対する IAM ユーザー ポリシー

CloudBerry Drive ツールを試して、S3 バケットをネットワーク ドライブとして接続しています。バケットとその中に 2 つのフォルダーがあり、バケット名は environment、2 つのフォルダーは dev と prod と想定しています。これを使用するユーザーは 3 セットあります (Admin、Dev、Prod)。Admin には、両方のフォルダーへの R/W 権限が必要です。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 フォルダへの R/W ができるようになるはずですが、できません。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 フォルダへの R/W ができるようになるはずですが、それができません。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. これらはすべて、S3 用の CloudBerry Drive を使用して実行されます。

注: 特定のユーザー フォルダーへの書き込み権限を付与する方法を示すポリシーなど、Google でいろいろ調べて、ほとんどすべてを試しました。 ここに画像の説明を入力してください

答え1

回答が遅れて申し訳ありません。ただし、私のスクリプトでは、条件を次のように変更します。

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

このエラーを指摘してくれたceejayozに感謝します。

関連情報