Gestione delle autorizzazioni conAWS CloudFormation meccanismi - 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 autorizzazioni conAWS CloudFormation meccanismi

Per controllare l'accesso alleAWS risorse,AWS Serverless Application Model (AWS SAM) può utilizzare gli stessi meccanismi diAWS CloudFormation. Per ulteriori informazioni, vedere Controllare l'accesso conAWS Identity and Access Management nella Guida per l'AWS CloudFormationutente.

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

  • Concedi le autorizzazioni di amministratore.

  • AWSCollega

  • Concedi autorizzazioni specificheAWS Identity and Access Management (IAM).

A seconda dell'opzione scelta, gli utenti possono gestire solo applicazioni serverless contenentiAWS risorse a cui dispongono dell'autorizzazione di accesso.

Nelle seguenti sezioni sono descritte le opzioni in modo più dettagliato.

Concedi le autorizzazioni di amministratore

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

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

Allega le politicheAWS gestite necessarie

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

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

  • AWSCloudFormationFullAccess

  • IO SONOFullAccess

  • AWSLambda_FullAccess

  • API AmazonGatewayAdministrator

  • Amazon S3FullAccess

  • Amazon C2ContainerRegistryFullAccess

Per ulteriori informazioni sull'inclusione di

Concedi autorizzazioni IAM specifiche

Per il livello più granulare di controllo degli accessi, puoi concedere autorizzazioni IAM specifiche agli utenti utilizzando le dichiarazioni politiche. Se utilizzi questa opzione, assicurati che la dichiarazione 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 di 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 dei ruoli di esecuzione Lambda, vedere Creazione di un ruolo di esecuzione nella console IAM.

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

Role: lambda-execution-role-arn

Con l'applicazione Hello World modificata, la seguente dichiarazione politica concede autorizzazioni sufficienti agli utenti 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'esempio di dichiarazione politica in questa sezione concede l'autorizzazione sufficiente per distribuire, aggiornare ed eliminare l'applicazione Hello World di esempio. Se aggiungi altri tipi di risorse alla tua applicazione, devi aggiornare la dichiarazione politica per includere quanto segue:

  1. Autorizzazione della tua 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 delstates.amazonaws.com servizio.

Per ulteriori informazioni sulle policy IAM, consulta Utilizzo delle policy IAM nella Guida per l'utente di IAM.