Могу ли я скрыть пользовательские папки от других пользователей Amazon S3 IAM? - PullRequest
0 голосов
/ 26 марта 2020

Я создаю настройку для пользователей, чтобы загружать файлы в корзину S3. Пользователи будут входить через Cyberduck S3 для доступа к своим корзинам.

Это базовый c способ размещения файлов:

  • bucket / user1 / fileX
  • bucket / user1 / fileY
  • bucket / user2 / fileX
  • bucket / user2 / fileY

Когда пользователь просматривает файлы для загрузки, я бы хотел, чтобы они не могли видеть, какие другие пользователи имеют доступ к корзине. User1 не должен видеть папку user2. Возможно ли это?

Текущая политика:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowUserToSeeBucketListInTheConsole",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::*"
            ]
        },
        {
            "Sid": "AllowRootAndHomeListingOfCompanyBucket",
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::bucketname"
            ],
            "Condition": {
                "StringEquals": {
                    "s3:prefix": [
                        ""
                    ]
                }
            }
        },
        {
            "Sid": "AllowListingOfUserFolder",
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::bucketname"
            ],
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "${aws:username}/*"
                    ]
                }
            }
        },
        {
            "Sid": "AllowAllS3ActionsInUserFolder",
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::bucketname/${aws:username}/*"
            ]
        }
    ]
}

1 Ответ

0 голосов
/ 27 марта 2020

В моем случае лучшим подходом было удалить доступ к листингу в первых утверждениях:

    {
        "Sid": "AllowUserToSeeBucketListInTheConsole",
        "Action": [
            "s3:ListAllMyBuckets",
            "s3:GetBucketLocation"
        ],
        "Effect": "Allow",
        "Resource": [
            "arn:aws:s3:::*"
        ]
    },
    {
        "Sid": "AllowRootAndHomeListingOfCompanyBucket",
        "Action": [
            "s3:ListBucket"
        ],
        "Effect": "Allow",
        "Resource": [
            "arn:aws:s3:::bucketname"
        ],
        "Condition": {
            "StringEquals": {
                "s3:prefix": [
                    ""
                ]
            }
        }
    },

После этого я получаю доступ пользователей к своей папке в Cyberduck. Чтобы получить доступ к папке, создайте закладку, а не входите напрямую. У параметров закладки было больше параметров.

...