S3 Bucket Policy, чтобы разрешить S3 доступ к текущему аутентифицированному пользователю в AWS Console? - PullRequest
0 голосов
/ 30 января 2020

У меня есть приложение, в котором я использую Cognito для аутентификации пользователей и даю временный доступ к консоли AWS, но этот пользователь может видеть все остальные сегменты, я хочу, чтобы этот пользователь просто мог видеть или получать доступ к сегментам, созданным ему.

В настоящее время я предоставил политику S3FullAccess пользователям Cognito. Кто-нибудь может подсказать, какую политику мне следует присоединить?

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

Это то, что я нашел

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "s3:ListAllMyBuckets",
            "s3:GetBucketLocation"
        ],
        "Resource": "*"
    },
    {
        "Effect": "Allow",
        "Action": "s3:ListBucket",
        "Resource": "arn:aws:s3:::bucket-name",
        "Condition": {
            "StringLike": {
                "s3:prefix": [
                    "",
                    "home/",
                    "home/${aws:userid}/*"
                ]
            }
        }
    },
    {
        "Effect": "Allow",
        "Action": "s3:*",
        "Resource": [
            "arn:aws:s3:::bucket-name/home/${aws:userid}",
            "arn:aws:s3:::bucket-name/home/${aws:userid}/*"
        ]
    }
]
      }

Но это список всех корзин, и единственная доступная корзина - это то, что вставлено в код выше, я хочу для нового пользователя, он ничего не должен показывать и, как он создает, он должен показать, что только

1 Ответ

1 голос
/ 30 января 2020

Это будет непросто, и вам нужно будет создать собственную политику и применить некоторые соглашения. У вас есть 3 варианта.

Но сначала, если каждому пользователю просто нужно свое собственное пространство S3, посмотрите на префикс S3 [здесь] (https://aws.amazon.com/blogs/mobile/understanding-amazon-cognito-authentication-part-3-roles-and-policies/). Также вы можете сделать это в корзине ресурсов S3. У меня есть шаблон для этого здесь, в gitlab

Теперь вернемся к ответу на ваш вопрос.

  • Вариант 1; Им нужно будет установить тег при создании корзины, где тег «владелец» равен их идентичности. Я удалил этот тег, потому что, несмотря на то, что он указан в политике IAM, я почти уверен, что он не работает с S3.

  • Вариант 2: префикс имени сегмента равен их идентификатору.

Затем вы можете использовать функцию переменных и тегов в Политика IAM. Читайте здесь

Обратите внимание, что пользователи coginto являются федеративными веб-удостоверениями, поэтому переменная aws: username недоступна для вас. Используйте переменную aws: userid, и значением будет идентификатор роли: имя-роли-вызывающего абонента, где идентификатор-роли - это уникальный идентификатор роли, а имя-роли-вызывающего - это параметр RoleSessionName, передаваемый в запрос AssumeRoleWithWebIdentity

  • Вариант 3: Использовать политику доступа IAM

Не могу найти ссылку на как на данный момент. Но с здесь - подробное описание.

В: Как я могу контролировать действия федеративного пользователя при входе в консоль? Когда вы запрашиваете временные учетные данные безопасности для вашего федеративного пользователя с помощью API-интерфейса AssumeRole, вы можете при желании включить в запрос политику доступа. Права федеративного пользователя - это пересечение разрешений, предоставленных политикой доступа, переданной вместе с запросом, и политикой доступа, связанной с предполагаемой ролью IAM. Политика доступа, переданная с запросом, не может повысить привилегии, связанные с предполагаемой ролью IAM. Когда вы запрашиваете временные учетные данные безопасности для вашего федеративного пользователя с помощью API GetFederationToken, вы должны предоставить политику контроля доступа вместе с этим запросом. Права федеративного пользователя - это пересечение разрешений, предоставленных политикой доступа, переданной вместе с запросом, и политикой доступа, прикрепленной к пользователю IAM, который использовался для выполнения запроса. Политика доступа, переданная с запросом, не может повысить привилегии, связанные с пользователем IAM, используемым для выполнения запроса. Эти разрешения федеративного пользователя применяются как к доступу API, так и к действиям, выполняемым в AWS Консоли управления.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...