Gestione delle AWS SAM autorizzazioni con meccanismi AWS CloudFormation - AWS Serverless Application Model

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Gestione delle AWS SAM autorizzazioni con meccanismi AWS CloudFormation

Per controllare l'accesso alle AWS risorse, il AWS Serverless Application Model (AWS SAM) può utilizzare gli stessi AWS CloudFormation meccanismi di. Per ulteriori informazioni, vedere Controlling access with AWS Identity and Access Management nella Guida AWS CloudFormation per l'utente.

Esistono tre opzioni principali per concedere all'utente l'autorizzazione a gestire applicazioni serverless. Ciascuna opzione offre agli utenti diversi livelli di controllo degli accessi.

  • Concedi le autorizzazioni di amministratore.

  • Allega le politiche AWS gestite necessarie.

  • Concedi autorizzazioni specifiche AWS Identity and Access Management (IAM).

A seconda dell'opzione scelta, gli utenti possono gestire solo applicazioni serverless contenenti AWS risorse a cui hanno l'autorizzazione di accesso.

Le sezioni seguenti descrivono ciascuna opzione in modo più dettagliato.

Concedi le autorizzazioni di amministratore

Se concedi le autorizzazioni di amministratore a un utente, quest'ultimo può gestire applicazioni serverless che contengono qualsiasi combinazione di risorse. AWS Questa è l'opzione più semplice, ma concede anche agli utenti il set di autorizzazioni più ampio, che quindi consente loro di eseguire azioni con il massimo impatto.

Per ulteriori informazioni sulla concessione delle autorizzazioni di amministratore a un utente, consulta Creazione del primo utente e gruppo IAM amministratore nella Guida per l'utente. IAM

Allega le politiche gestite necessarie AWS

È possibile concedere agli utenti un sottoinsieme di autorizzazioni utilizzando policy AWS gestite, anziché concedere autorizzazioni amministrative complete. Se utilizzi questa opzione, assicurati che il set di policy AWS gestite copra tutte le azioni e le risorse necessarie per le applicazioni serverless gestite dagli utenti.

Ad esempio, le seguenti politiche AWS gestite sono sufficienti per distribuire l'applicazione Hello World di esempio:

  • AWSCloudFormationFullAccess

  • IAMFullAccess

  • AWSLambda_FullAccess

  • Un amministratore mazonAPIGateway

  • Amazon S3 FullAccess

  • Amazon EC2ContainerRegistryFullAccess

Per informazioni su come allegare politiche a un IAM utente, consulta Modifica delle autorizzazioni per un IAM utente nella Guida per l'IAMutente.

Concedi autorizzazioni specifiche IAM

Per il livello più granulare di controllo degli accessi, puoi concedere IAM autorizzazioni specifiche agli utenti utilizzando le istruzioni relative alle policy. Se utilizzi questa opzione, assicurati che l'informativa sulla politica includa tutte le azioni e le risorse necessarie per le applicazioni serverless gestite dagli utenti.

La migliore pratica con questa opzione consiste nel negare agli utenti l'autorizzazione a creare ruoli, inclusi i ruoli di esecuzione Lambda, in modo che non possano concedersi autorizzazioni avanzate. Pertanto, l'amministratore deve prima creare un ruolo di esecuzione Lambda che verrà specificato nelle applicazioni serverless gestite dagli utenti. Per informazioni sulla creazione di ruoli di esecuzione Lambda, vedi Creazione di un ruolo di esecuzione nella IAM console.

Per l'applicazione Hello World di esempio AWSLambdaBasicExecutionRoleè sufficiente eseguire l'applicazione. Dopo aver creato un ruolo di esecuzione Lambda, modifica il file AWS SAM modello dell'applicazione Hello World di esempio per aggiungere la seguente proprietà alla AWS::Serverless::Function risorsa:

Role: lambda-execution-role-arn

Con l'applicazione Hello World modificata, la seguente dichiarazione politica concede agli utenti autorizzazioni sufficienti per distribuire, aggiornare ed eliminare l'applicazione:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudFormationTemplate", "Effect": "Allow", "Action": [ "cloudformation:CreateChangeSet" ], "Resource": [ "arn:aws:cloudformation:*:aws:transform/Serverless-2016-10-31" ] }, { "Sid": "CloudFormationStack", "Effect": "Allow", "Action": [ "cloudformation:CreateChangeSet", "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:DescribeChangeSet", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStacks", "cloudformation:ExecuteChangeSet", "cloudformation:GetTemplateSummary", "cloudformation:ListStackResources", "cloudformation:UpdateStack" ], "Resource": [ "arn:aws:cloudformation:*:111122223333:stack/*" ] }, { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::*/*" ] }, { "Sid": "ECRRepository", "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:CompleteLayerUpload", "ecr:CreateRepository", "ecr:DeleteRepository", "ecr:DescribeImages", "ecr:DescribeRepositories", "ecr:GetDownloadUrlForLayer", "ecr:GetRepositoryPolicy", "ecr:InitiateLayerUpload", "ecr:ListImages", "ecr:PutImage", "ecr:SetRepositoryPolicy", "ecr:UploadLayerPart" ], "Resource": [ "arn:aws:ecr:*:111122223333:repository/*" ] }, { "Sid": "ECRAuthToken", "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken" ], "Resource": [ "*" ] }, { "Sid": "Lambda", "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:CreateFunction", "lambda:DeleteFunction", "lambda:GetFunction", "lambda:GetFunctionConfiguration", "lambda:ListTags", "lambda:RemovePermission", "lambda:TagResource", "lambda:UntagResource", "lambda:UpdateFunctionCode", "lambda:UpdateFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:*:111122223333:function:*" ] }, { "Sid": "IAM", "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:AttachRolePolicy", "iam:DeleteRole", "iam:DetachRolePolicy", "iam:GetRole", "iam:TagRole" ], "Resource": [ "arn:aws:iam::111122223333:role/*" ] }, { "Sid": "IAMPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "lambda.amazonaws.com" } } }, { "Sid": "APIGateway", "Effect": "Allow", "Action": [ "apigateway:DELETE", "apigateway:GET", "apigateway:PATCH", "apigateway:POST", "apigateway:PUT" ], "Resource": [ "arn:aws:apigateway:*::*" ] } ] }
Nota

L'informativa di esempio contenuta in questa sezione concede autorizzazioni sufficienti per distribuire, aggiornare ed eliminare l'applicazione Hello World di esempio. Se aggiungi altri tipi di risorse all'applicazione, devi aggiornare l'informativa sulla politica per includere quanto segue:

  1. Autorizzazione per l'applicazione a richiamare le azioni del servizio.

  2. Il responsabile del servizio, se necessario per le azioni del servizio.

Ad esempio, se si aggiunge un flusso di lavoro Step Functions, potrebbe essere necessario aggiungere le autorizzazioni per le azioni elencate qui e il responsabile del states.amazonaws.com servizio.

Per ulteriori informazioni sulle IAM politiche, vedere Gestione delle IAM politiche nella Guida per l'IAMutente.