#amazon-web-services #aws-lambda #aws-api-gateway #aws-sam
#amazon-веб-сервисы #aws-lambda #aws-api-gateway #aws-sam
Вопрос:
Я пытаюсь создать API Gateway, который вызывает лямбда-функцию с помощью SAM. Я хочу ограничить доступ к API таким образом, чтобы только определенные учетные записи / пользователи IAM могли получать доступ к API. Как мне это сделать? Я не смог найти правильный способ привязать политику доступа к ресурсам к конечной точке API в SAM.
Комментарии:
1. Я думаю, что вы хотите, чтобы в вашем
AWS::Serverless::Function
ресурсе вы хотели назначитьRole
пользователя IAM с соответствующими разрешениями. github.com/awslabs/serverless-application-model/blob/master /…
Ответ №1:
Вы можете указать в своем шаблоне SAM ресурс AWS::Serverless::Api, который настроен с помощью объекта Auth, который, в свою очередь, должен иметь AWS_IAM
as DefaultAuthorizer
. Другими словами, что-то вроде:
Resources:
ApiWithIamAuth:
Type: AWS::Serverless::Api
Properties:
StageName: Prod
Auth:
DefaultAuthorizer: AWS_IAM
Далее вам нужно создать политику для ваших пользователей, чтобы они могли вызывать API. Управление доступом для вызова API предоставляет ссылку, примеры политики IAM для разрешений на выполнение API содержит два примера
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"execute-api:Invoke"
],
"Resource": [
"arn:aws:execute-api:us-east-1:*:a123456789/test/POST/mydemoresource/*"
]
}
]
}
и, наконец, Создайте и прикрепите политику к пользователю IAM, перечислены шаги, выполняемые вручную, чтобы связать политику с пользователем IAM, ролью IAM или группой IAM.
Ответ №2:
Как правило, вы можете ограничить доступ к своим API с помощью ролей IAM.
Однако SAM поддерживает только ограниченное число типов ресурсов, поэтому вместо этого вам придется использовать тип политики IAM CloudFormation.
Поскольку SAM — это всего лишь высокоуровневая абстракция CloudFormation, нет проблем использовать собственные типы ресурсов CloudFormation в вашем шаблоне SAM: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/appendix-appendix-sam-templates-and-cf-templates.html