Как добавить политику для доступа к секрету с помощью лямбда-функции AWS SAM

#amazon-web-services

#amazon-веб-сервисы

Вопрос:

Я пытаюсь предоставить разрешение доступа secret manager к моей лямбда-функции в шаблоне SAM, но выдает ошибку, что заявление о политике искажено.

      Policies:
      - Statement:
      - Sid: AWSSecretsManagerGetSecretValuePolicy
        Effect: Allow
        Action: secretsmanager:GetSecretValue
        Resource: <arn >
 

Может ли кто-нибудь сообщить мне правильный способ добавления политики в мою лямбда-функцию.
Я использую шаблон SAM (тип: AWS :: Serverless:: Function)

Ответ №1:

Эта политика принимает только ARN секрета, поэтому секретное имя не будет работать. https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-policy-template-list.html#secrets-manager-get-secret-value-policy

Для меня работает ниже.

 Resources:  
MyFunction:
Type: AWS::Serverless::Function
Properties:
  CodeUri: MyProject/
  Handler: app
  Policies:
    - AWSSecretsManagerGetSecretValuePolicy:
        SecretArn: 'arn:aws:secretsmanager:####'
 

или передать его в качестве параметра

     - AWSSecretsManagerGetSecretValuePolicy:
        SecretArn: !Ref RdsSecretArn
 

Ответ №2:

Существуют шаблоны политик SAM, одним из которых является AWSSecretsManagerGetSecretValuePolicy, вы можете использовать их непосредственно в определении.

Или, если вы хотите управлять политиками самостоятельно.

     QueryFunction:
        Type: AWS::Serverless::Function
        Properties:
        Handler: lambda_handler.lambda
        Policies:
            - AmazonDynamoDBFullAccess
            - AWSLambdaVPCAccessExecutionRole
            - SSMParameterReadPolicy:
                ParameterName: parameter_name
            - Statement:
                - Effect: Allow
                Action:
                    - dynamodb:*
                Resource: 'resource_arn'
        Runtime: python3.7
 

Комментарии:

1. Я должен определить политику для доступа к секретному менеджеру, а не для параметра SSM.

2. @SandeepAgrawal для этого также есть политика в шаблонах, я обновил ответ

Ответ №3:

Попробуйте это :

     Policies:
      - Version: '2012-10-17'
        Statement:
          - Sid: AWSSecretsManagerGetSecretValuePolicy
            Effect: Allow
            Action: secretsmanager:GetSecretValue
            Resource: <arn >
 

Ответ №4:

Эта политика для лямбда-кода работает для меня (YAML)

 Policies:
  - AWSSecretsManagerGetSecretValuePolicy:
      SecretArn:
        Ref: THE_NAME_YOU_GAVE_YOUR_SECRET_RESOURCE