Укажите, какая учетная запись / пользователь может вызывать API, используя SAM и API Gateway - PullRequest
1 голос
/ 14 марта 2019

Я пытаюсь создать API-шлюз, который вызывает функцию Lambda, используя SAM. Я хочу ограничить доступ к API таким образом, чтобы только определенные учетные записи / пользователи IAM могли получить доступ к API. Как мне это сделать? Я не смог найти правильный способ присоединения политики доступа к ресурсам к конечной точке API в SAM.

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Вы можете указать ресурс AWS :: Serverless :: Api в шаблоне SAM, для которого настроен объект Auth , который в свою очередь должен иметь AWS_IAM как 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.

0 голосов
/ 24 марта 2019

Как правило, вы можете ограничить доступ к своим 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

...