Serverless Framework AWS Детальный контроль доступа - PullRequest
0 голосов
/ 16 декабря 2018

Я пытаюсь защитить мой AWS API так, чтобы доступ к строкам DynamoDB мог получить только соответствующий аутентифицированный пользователь Cognito, реализовав детальный контроль доступа в моей конфигурации Serverless Framework (serverless.yml)

См. Пример того, чтоЯ пытаюсь в Документации AWS

Я попытался преобразовать синтаксис Cloudformation в Serverless без успеха;когда я пытаюсь что-то вроде следующего выражения в своем заявлении о политике:

Condition:
  ForAllValues:StringEquals:
    dynamodb:LeadingKeys: ["${cognito-identity.amazonaws.com:sub}"]

, тогда я получаю ошибку:

Неверный синтаксис ссылки на переменную для cognito-identity.amazonaws.com: к югу.Вы можете ссылаться только на env vars, опции и файлы.Вы можете проверить наши документы для получения дополнительной информации.

Возможно ли это даже в Serverless?Или это только Cloudformation и SAM?

1 Ответ

0 голосов
/ 07 января 2019

Возможно в безсерверном режиме.На вашем месте я буду использовать AWS Lambda для проверки id_token, который отправляется пользователю.В этом случае сначала необходимо передать ключ в функцию AWS Lambda, используя Api Gateway или другие методы.Затем следуйте этому руководству , чтобы проверить токен.Код можно найти в: https://github.com/awslabs/aws-support-tools/tree/master/Cognito/decode-verify-jwt

После проверки вы можете добавить свой код здесь:

 ...... 
if claims['aud'] != app_client_id:
    print('Token was not issued for this audience')
    return False
# now we can use the claims

# add your code here #

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