Come faccio a concedere le autorizzazioni IAM a una funzione Lambda utilizzando un modello AWS SAM?

4 minuti di lettura
0

Voglio concedere le autorizzazioni alle funzioni AWS Lambda nel mio Modello di applicazione serverless AWS (AWS SAM). Come faccio a definire un ruolo di esecuzione Lambda con autorizzazioni limitate in un modello AWS SAM?

Breve descrizione

Per definire un ruolo di esecuzione Lambda in un modello AWS SAM, puoi utilizzare le seguenti proprietà delle risorse AWS::Serverless::Function:

  • Policies: consentono di creare un nuovo ruolo di esecuzione utilizzando policy predefinite da applicare alla funzione Lambda.
  • Role: consente di definire un ruolo AWS Identity and Access Management (IAM) da utilizzare come ruolo di esecuzione per la funzione.
  • PermissionsBoundary: consente di impostare un limite delle autorizzazioni IAM per il ruolo di esecuzione creato.

Nota: le proprietà Policies e Role non possono essere utilizzate insieme. La proprietà Role è utile quando il ruolo di esecuzione richiede autorizzazioni troppo specifiche per utilizzare criteri predefiniti.

Risoluzione

Specifica le policy per un nuovo ruolo di esecuzione Lambda

In Policies inserisci una combinazione dei seguenti elementi:

Nota: i modelli di policy AWS SAM sono limitati a risorse AWS specifiche. Consulta la pagina Tabella dei modelli di policy per avere un elenco dei modelli di policy e le autorizzazioni che queste forniscono alle tue funzioni Lambda.

Di seguito sono riportati alcuni esempi di modelli AWS SAM YAML con Policy definite:

Esempio di modello AWS SAM YAML con una policy gestita da AWS denominata

AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31' b
Resources:
  MyFunction:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: index.handler
      Runtime: nodejs8.10
      CodeUri: 's3://my-bucket/function.zip'
      Policies:
      # Give the Lambda service access to poll your DynamoDB Stream
      - AmazonDynamoDBFullAccess

Esempio di modello AWS SAM YAML con un modello di policy AWS SAM (SQSPollerPolicy) definita

MyFunction:
  Type: 'AWS::Serverless::Function'
  Properties:
    CodeUri: ${codeuri}
    Handler: hello.handler
    Runtime: python2.7
    Policies:
      - SQSPollerPolicy:
          QueueName:
            !GetAtt MyQueue.QueueName

Esempio di modello AWS SAM YAML con un documento di policy inline definita

AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Resources:
  MyFunction:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: index.handler
      Runtime: nodejs8.10
      CodeUri: 's3://my-bucket/function.zip'
      Policies:
      - Statement:
        - Sid: SSMDescribeParametersPolicy
          Effect: Allow
          Action:
          - ssm:DescribeParameters
          Resource: '*'
        - Sid: SSMGetParameterPolicy
          Effect: Allow
          Action:
          - ssm:GetParameters
          - ssm:GetParameter
          Resource: '*'

(Facoltativo) Specifica un limite delle autorizzazioni IAM

Per impostare le autorizzazioni massime consentite per il ruolo di esecuzione della funzione Lambda, utilizza un limite delle autorizzazioni IAM.

Per impostare un limite delle autorizzazioni IAM, esegui questo comando nel tuo modello AWS SAM YAML:

Specifica il nome della risorsa Amazon (ARN) di un limite delle autorizzazioni

Per la proprietà PermissionsBoundary, inserisci l'ARN di un limite delle autorizzazioni. Ad esempio:

Properties:
  PermissionsBoundary: arn:aws:iam::123456789012:policy/LambdaBoundaries

Nota: puoi definire PermissionsBoundary solo se stai creando un nuovo ruolo con il tuo modello AWS SAM. Per un Ruolo esistente specificato non sarà invece possibile impostare un limite delle autorizzazioni.

Specifica un ruolo di esecuzione Lambda

Per la proprietà Role inserisci una delle seguenti informazioni:

Nota: se non specifichi un Ruolo nel modello AWS SAM, verrà creato un ruolo di esecuzione al momento della distribuzione dell'applicazione. Questo ruolo includerà tutte le Policy che avrai definito.

Esempio di modello AWS SAM YAML con proprietà Role definita

AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Resources:
  MyFunction:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: index.handler
      Runtime: nodejs8.10
      CodeUri: 's3://my-bucket/function.zip'
      Role: arn:aws:iam::111111111111:role/SAMPolicy

Impacchetta e distribuisci la tua applicazione

1.    Nell'interfaccia della linea di comando AWS SAM (AWS SAM CLI), esegui il comando ](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-build.html)sam build[ per creare e impacchettare la tua applicazione.
Nota: se ricevi errori durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.

2.    Esegui il comando sam deploy per distribuire il tuo pacchetto applicativo AWS SAM.

Per ulteriori informazioni, consulta gli articoli relativi alla creazione e alla distribuzione delle applicazioni serverless.


Informazioni correlate

Nozioni di base su AWS SAM

AWS Serverless Application Model (AWS SAM) (repository GitHub AWS SAM)

Policy templates (repository GitHub AWS SAM)

Policy gestite e policy inline

Convalida dei file modello AWS SAM

AWS UFFICIALE
AWS UFFICIALEAggiornata 3 anni fa