Доступ к переменной Cognito User ID в роли IAM, определенной для роли выполнения API Gateway? - PullRequest
0 голосов
/ 21 февраля 2019

С недавним выпуском API Gateway Cognito Custom Authorizers я пытаюсь использовать Cognito, API Gateway и S3 вместе для аутентифицированного контроля доступа без лямбда-символов .

Авторизация с помощью API-шлюза работает должным образом (с доверительными отношениями для роли выполнения API-шлюза, установленной правильно), но я не могу получить политику ресурсов для захвата вспомогательной переменной Cognito User ID для точного доступауправление ресурсами S3 на основе идентификатора пользователя.

Вот текущий поток, который я пытаюсь выполнить:

  1. Аутентификация с помощью Cognito и получение действительного токена
  2. Отправить токенк шлюзу API для получения доступа к корзине S3 (через тип интеграции службы AWS)
  3. точный доступ только к каталогу идентификатора пользователя
  4. возврат объекта S3 (на основе конечной точки API)

Вот моя текущая политика ресурсов для роли выполнения API-шлюза:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cognito-idp:*",
                "cognito-sync:*",
                "cognito-identity:*"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
            ],
            "Resource": [
                "arn:aws:s3:::mybucket/${cognito-identity.amazonaws.com:sub}/*"
            ]
        }
    ]
}

Все работает как надо, но эта переменная IAM (в политике, связанной с ролью выполнения API-шлюза) не выглядитчтобы быть правым.

Я наткнулся на эту статью StackOverflow и попытался использовать оба формата us-east-1:xxxx-xxxx-xxxx-xxxx и xxxx-xxxx-xxxx-xxxx, но оба дине похоже на работу.Я использую атрибут sub, найденный в информации о пользователе пула Cognito.Если я жестко закодирую папку в S3 в подпрограмме Cognito User ID Sub, она будет работать нормально.

Как заставить переменную Cognito работать в политике ролей выполнения API-шлюза?

Вот несколько других статей, которые я нашел, связанных с вопросом на форумах AWS:

Переменные Cognito IAM не работают для политик предполагаемой роли

Какую когнитивную информацию мы можем использовать в качестве переменных IAM?

1 Ответ

0 голосов
/ 21 февраля 2019

Это не тот саб, который ожидает переменная.Нет никакого способа использовать атрибуты пула пользователей Cognito в политике.Подпрограммой, которую вы хотите, является идентификатор идентификации Cognito, который является идентификатором пользователя в Cognito Identity (объединенном пуле идентификации).Вы можете получить этот идентификатор, используя метод get id.Я бы посоветовал вам сохранить этот идентификатор как переменную пользовательского атрибута в вашем пуле cognito, чтобы вам не приходилось продолжать делать вызов.Вы можете узнать больше об этом удостоверении личности здесь .

...