Controlla CloudFormation l'accesso con AWS Identity and Access Management - AWS CloudFormation

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à.

Controlla CloudFormation l'accesso con AWS Identity and Access Management

Con AWS Identity and Access Management (IAM), puoi creare utenti IAM e controllarne l'accesso a risorse specifiche del tuo Account AWS. Quando usi IAM, puoi controllare cosa possono fare gli utenti CloudFormation, ad esempio se possono visualizzare modelli di stack, creare stack o eliminare stack.

Oltre CloudFormation alle azioni specifiche, puoi gestire i AWS servizi e le risorse disponibili per ogni utente. In questo modo, puoi controllare a quali risorse gli utenti possono accedere quando le utilizzano CloudFormation. Ad esempio, puoi specificare quali utenti possono creare istanze Amazon, terminare EC2 istanze di database o effettuare aggiornamenti. VPCs Le stesse autorizzazioni si applicano ogni volta che eseguono CloudFormation tali azioni.

Utilizza le informazioni contenute nelle sezioni seguenti per controllare chi può accedere. CloudFormation Esploreremo anche come autorizzare la creazione di risorse IAM in modelli, fornire alle applicazioni in esecuzione su EC2 istanze le autorizzazioni necessarie e utilizzare credenziali di sicurezza temporanee per una maggiore sicurezza nell'ambiente. AWS

Definizione di policy basate sull'identità IAM per CloudFormation

Per consentirne l'accesso CloudFormation, devi creare e assegnare policy IAM che consentano alle tue identità IAM (come utenti o ruoli) di effettuare le azioni API di cui hanno bisogno.

Con le policy basate sull'identità IAM, puoi specificare azioni e risorse consentite o negate, nonché le condizioni in base alle quali le azioni sono consentite o negate. CloudFormationsupporta azioni, risorse e chiavi di condizione specifiche.

Se non conosci IAM, inizia a familiarizzare con gli elementi di una policy IAM JSON. Per ulteriori informazioni, consulta IAM JSON policy element reference nella Guida per l’utente IAM. Per scoprire come creare le policy IAM, completa il tutorial Create and attach your first customer managed policy nella documentazione IAM.

Azioni politiche per CloudFormation

Nell'Actionelemento della dichiarazione sulla politica IAM, puoi specificare qualsiasi azione API che CloudFormation offra. Devi far precedere la stringa cloudformation: in minuscolo al nome dell’azione. For example: cloudformation:CreateStack, cloudformation:CreateChangeSet e cloudformation:UpdateStack.

Per specificare più azioni in una sola istruzione, separa ciascuna di esse con una virgola, come mostrato di seguito:

"Action": [ "cloudformation:action1", "cloudformation:action2" ]

Puoi anche specificare più operazioni tramite caratteri jolly. Ad esempio, puoi specificare tutte le operazioni i cui nomi iniziano con la parola Get come segue:

"Action": "cloudformation:Get*"

Per visualizzare un elenco completo delle azioni associate al prefisso del servizio cloudformation, consulta Actions, resources, and condition keys for CloudFormation e Actions, resources, and condition keys for AWS Cloud Control API in Service Authorization Reference.

Esempi

Di seguito viene mostrato un esempio di una politica di autorizzazioni che concede le autorizzazioni per visualizzare gli stack. CloudFormation

Esempio 1. Una policy di esempio che consenta di visualizzare le autorizzazioni dello stack
JSON
{ "Version":"2012-10-17", "Statement":[{ "Effect":"Allow", "Action":[ "cloudformation:DescribeStacks", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStackResource", "cloudformation:DescribeStackResources" ], "Resource":"*" }] }

Gli utenti che creano o eliminano gli stack necessitano di autorizzazioni aggiuntive in base ai modelli di stack utilizzati. Ad esempio, se il modello descrive una coda Amazon SQS, gli utenti devono disporre delle autorizzazioni sia per le azioni di Amazon SQS che per quelle di Amazon CloudFormation SQS, come illustrato nella seguente policy di esempio.

Esempio 2. Un esempio di policy che consente di creare e visualizzare le operazioni relative allo stack e tutte le operazioni per Amazon SQS
JSON
{ "Version":"2012-10-17", "Statement":[{ "Effect":"Allow", "Action":[ "sqs:*", "cloudformation:CreateStack", "cloudformation:DescribeStacks", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStackResources", "cloudformation:GetTemplate", "cloudformation:ValidateTemplate" ], "Resource":"*" }] }

Azioni specifiche della console per CloudFormation

Gli utenti della CloudFormation console richiedono autorizzazioni aggiuntive oltre a quelle necessarie per la sala operatoria. AWS Command Line Interface CloudFormation APIs Queste autorizzazioni aggiuntive supportano funzionalità specifiche della console, come il caricamento di modelli su bucket Amazon S3 e gli elenchi a discesa per tipi di parametri specifici. AWS

Per tutte le azioni elencate qui di seguito, concedi le autorizzazioni a tutte le risorse e non limitarle a stack o bucket specifici.

L'azione seguente viene utilizzata solo dalla CloudFormation console e non è documentata nel riferimento all'API. L’operazione consente agli utenti di caricare i modelli nei bucket Amazon S3.

  • cloudformation:CreateUploadBucket

Quando gli utenti caricano i modelli, devono anche disporre delle seguenti autorizzazioni Amazon S3:

  • s3:PutObject

  • s3:ListBucket

  • s3:GetObject

  • s3:CreateBucket

Per visualizzare i valori negli elenchi a discesa dei parametri per i modelli con tipi di parametri AWS specifici, gli utenti devono disporre delle autorizzazioni per effettuare le chiamate API di descrizione corrispondenti. Ad esempio, le seguenti autorizzazioni sono necessarie quando questi tipi di parametri vengono utilizzati nel modello:

  • ec2:DescribeKeyPairs: obbligatorio per il tipo di parametro AWS::EC2::KeyPair::KeyName.

  • ec2:DescribeSecurityGroups: obbligatorio per il tipo di parametro AWS::EC2::SecurityGroup::Id.

  • ec2:DescribeSubnets: obbligatorio per il tipo di parametro AWS::EC2::Subnet::Id.

  • ec2:DescribeVpcs: obbligatorio per il tipo di parametro AWS::EC2::VPC::Id.

Per ulteriori informazioni sui tipi di parametri AWS specifici, consulta. Specifica delle risorse esistenti in fase di runtime con i tipi di parametri forniti da CloudFormation

Risorse politiche per CloudFormation

In una dichiarazione di policy IAM, l’elemento Resource specifica l’oggetto o gli oggetti coperti dall’istruzione. Infatti CloudFormation, ogni dichiarazione di policy IAM si applica alle risorse specificate utilizzando i rispettivi Amazon Resource Names (ARNs). Il formato ARN specifico dipende dalla risorsa.

Per un elenco completo dei tipi di CloudFormation risorse e dei relativi tipi ARNs, consulta Tipi di risorse definiti da CloudFormation nel Service Authorization Reference. Per informazioni sulle operazioni che puoi specificare l’ARN di ogni risorsa, consulta Actions defined by CloudFormation.

Puoi specificare le operazioni per uno stack specifico, come mostrato nella seguente policy di esempio. Quando fornisci un ARN, sostituisci placeholder text con le informazioni specifiche della tua risorsa.

Esempio 1. Un esempio di policy che nega l’eliminazione dello stack e aggiorna le operazioni per lo stack specifico
JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "cloudformation:DeleteStack", "cloudformation:UpdateStack" ], "Resource": "arn:aws:cloudformation:us-east-1:111122223333:stack/MyProductionStack/*" } ] }

La policy sopra riportata utilizza un carattere jolly alla fine del nome dello stack in modo da impedire l’eliminazione e l’aggiornamento per l’ID stack completo (ad esempio arn:aws:cloudformation:region:account-id:stack/MyProductionStack/abc9dbf0-43c2-11e3-a6e8-50fa526be49c) e il nome dello stack (ad esempio MyProductionStack).

Per consentire che le trasformazioni AWS::Serverless creino un set di modifiche, includi l’autorizzazione a livello di risorsa arn:aws:cloudformation:region:aws:transform/Serverless-2016-10-31, come indicato nella seguente policy.

Esempio 2. Un esempio di policy che consente di creare un set di modifiche per la trasformazione specifica
JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:CreateChangeSet" ], "Resource": "arn:aws:cloudformation:us-east-1:aws:transform/Serverless-2016-10-31" } ] }

Chiavi relative alle condizioni politiche per CloudFormation

In una dichiarazione della policy IAM, puoi specificare facoltativamente le condizioni che controllano la validità della policy. Ad esempio, puoi definire una policy che consenta agli utenti di creare uno stack solo quando specificano un determinato URL del modello. È possibile definire condizioni CloudFormation -specifiche e AWS-wide, ad esempioDateLessThan, che specificano quando una policy smette di avere effetto. Per ulteriori informazioni e un elenco di condizioni AWS-wide, consulta Condition in IAM Policy Elements di riferimento nella IAM User Guide.

Nota

Non utilizzare la condizione aws:SourceIp AWS-wide. CloudFormationeffettua il provisioning delle risorse utilizzando il proprio indirizzo IP, non l'indirizzo IP della richiesta di origine. Ad esempio, quando crei uno stack, CloudFormation effettua richieste dal suo indirizzo IP per avviare un' EC2 istanza Amazon o per creare un bucket Amazon S3, non dall'indirizzo IP della chiamata o CreateStack del comando. create-stack

L'elenco seguente descrive le condizioni specifiche. CloudFormation Queste condizioni si applicano solo quando gli utenti creano o aggiornano gli stack:

cloudformation:ChangeSetName

Un nome di set di CloudFormation modifiche che si desidera associare a una politica. Utilizza questa condizione per controllare quali set di modifiche gli utenti possono eseguire o eliminare.

cloudformation:ImportResourceTypes

I tipi di risorse del modello che desideri associare a una policy, ad esempio AWS::EC2::Instance. Utilizza questa condizione per controllare i tipi di risorse che gli utenti possono utilizzare quando importano risorse in uno stack. Questa condizione viene verificata rispetto ai tipi di risorse dichiarati dagli utenti nel ResourcesToImport parametro, che attualmente è supportato solo per AWS CLI le richieste API. Quando si utilizza questo parametro, è necessario specificare tutti i tipi di risorse che si desidera far controllare agli utenti durante le operazioni di importazione. Per ulteriori informazioni sul parametro ResourcesToImport, consulta l’azione CreateChangeSet in AWS CloudFormation API Reference.

Per un elenco di ResourcesToImport possibili, consulta Supporto del tipo di risorse.

Utilizza la convenzione di denominazione delle risorse in tre parti per specificare i tipi di risorse con cui gli utenti possono lavorare, da tutte le risorse di un’organizzazione fino a un singolo tipo di risorsa.

organization::*

Specifica tutti i tipi di risorse per una determinata organizzazione.

organization::service_name::*

Specifica tutti i tipi di risorse per il servizio specificato all’interno di una determinata organizzazione.

organization::service_name::resource_type

Specifica un determinato tipo di risorsa.

Ad esempio:

AWS::*

Specificate tutti i tipi di AWS risorse supportati.

AWS::service_name::*

Specifica tutte le risorse per un determinato servizio AWS .

AWS::service_name::resource_type

Specificate un tipo di AWS risorsa specifico, ad esempio AWS::EC2::Instance (tutte le EC2 istanze).

cloudformation:ResourceTypes

I tipi di risorse del modello, ad esempio AWS::EC2::Instance, che vuoi associare a una policy. Utilizza questa condizione per controllare i tipi di risorse che gli utenti possono utilizzare quando creano o aggiornano uno stack. La condizione viene verificata in base ai tipi di risorse che gli utenti dichiarano nel parametro ResourceTypes, attualmente supportato solo per la AWS CLI e richieste API. Quando si utilizza questo parametro, gli utenti devono specificare tutti i tipi di risorse disponibili nel modello. Per ulteriori informazioni sul parametro ResourceTypes, consulta l’azione CreateStack in AWS CloudFormation API Reference.

Per un elenco dei tipi di risorse, consulta CloudFormation Template Reference Guide.

Utilizza la convenzione di denominazione delle risorse in tre parti per specificare i tipi di risorse con cui gli utenti possono lavorare, da tutte le risorse di un’organizzazione fino a un singolo tipo di risorsa.

organization::*

Specifica tutti i tipi di risorse per una determinata organizzazione.

organization::service_name::*

Specifica tutti i tipi di risorse per il servizio specificato all’interno di una determinata organizzazione.

organization::service_name::resource_type

Specifica un determinato tipo di risorsa.

Ad esempio:

AWS::*

Specificare tutti i tipi di AWS risorse supportati.

AWS::service_name::*

Specifica tutte le risorse per un determinato servizio AWS .

AWS::service_name::resource_type

Specificate un tipo di AWS risorsa specifico, ad esempio AWS::EC2::Instance (tutte le EC2 istanze).

Alexa::ASK::*

Specifica tutti i tipi di risorse in Alexa Skill Kit.

Alexa::ASK::Skill

Specifica il singolo tipo di risorsa Alexa::ASK::Skill.

Custom::*

Specifica tutte le risorse personalizzate.

Per ulteriori informazioni, consulta Creare una logica di provisioning personalizzata con risorse personalizzate.

Custom::resource_type

Specificare un tipo specifico di risorsa personalizzata.

Per ulteriori informazioni, consulta Creare una logica di provisioning personalizzata con risorse personalizzate.

cloudformation:RoleARN

L’Amazon Resource Name (ARN) di un ruolo del servizio IAM da associare a una policy. Utilizza questa condizione per controllare quale ruolo del servizio può essere usato dagli utenti quando lavorano con gli stack o i set di modifiche.

cloudformation:StackPolicyUrl

L’URL della policy di uno stack Amazon S3 da associare a una policy. Utilizza questa condizione per controllare quali policy di stack gli utenti possono associare a uno stack durante la creazione o l’aggiornamento di un’operazione dello stack. Per ulteriori informazioni sulle policy degli stack, consulta Impedire gli aggiornamenti delle risorse stack.

Nota

Per essere certi che gli utenti possano creare o aggiornare gli stack con le policy di stack caricate, imposta il bucket S3 su sola lettura per tali utenti.

cloudformation:TemplateUrl

L’URL del modello Amazon S3 da associare a una policy. Utilizza questa condizione per controllare quali modelli gli utenti possono usare quando creano o aggiornano gli stack.

Nota

Per essere certi che gli utenti possano creare o aggiornare gli stack con i modelli caricati, imposta il bucket S3 su sola lettura per tali utenti.

Nota

Le seguenti condizioni CloudFormation specifiche si applicano ai parametri API con lo stesso nome:

  • cloudformation:ChangeSetName

  • cloudformation:RoleARN

  • cloudformation:StackPolicyUrl

  • cloudformation:TemplateUrl

Ad esempio, si applica cloudformation:TemplateUrl solo al TemplateUrl parametro for CreateStackUpdateStack, e CreateChangeSet APIs.

Per esempi di policy IAM che utilizzano le chiavi di condizione per controllare l’accesso, consulta Esempi di policy basate sull'identità IAM per CloudFormation.

Accettazione delle risorse IAM nei modelli CloudFormation

Prima di poter creare uno stack, CloudFormation convalida il modello. Durante la convalida, CloudFormation verifica nel modello la presenza di risorse IAM che potrebbe creare. Le risorse IAM, ad esempio un utente con accesso completo, possono accedere e modificare tutte le risorse nell' Account AWS. Pertanto, ti consigliamo di esaminare le autorizzazioni associate a ogni risorsa IAM prima di continuare, in modo da non creare inavvertitamente le risorse con autorizzazioni di escalation. Per assicurarti di averlo fatto, devi riconoscere che il modello contiene tali risorse e fornisce CloudFormation le funzionalità specificate prima di creare lo stack.

Puoi riconoscere le funzionalità dei CloudFormation modelli utilizzando la CloudFormation console, AWS Command Line Interface (AWS CLI) o l'API:

  • Nella CloudFormation console, nella pagina Configura le opzioni dello stack delle procedure guidate Create Stack o Update Stack, scegli Riconosco che questo modello può creare risorse IAM.

  • In AWS CLI, quando usi update-stacki comandi create-stackand, specifica il CAPABILITY_NAMED_IAM valore CAPABILITY_IAM o per l'opzione. --capabilities Se il modello comprende risorse IAM, è possibile specificare qualsiasi funzionalità. Se il modello comprende nomi personalizzati per le risorse IAM, occorre specificare CAPABILITY_NAMED_IAM.

  • Nell’API, quando utilizzi le azioni CreateStack e UpdateStack, specifica Capabilities.member.1=CAPABILITY_IAM o Capabilities.member.1=CAPABILITY_NAMED_IAM. Se il modello comprende risorse IAM, è possibile specificare qualsiasi funzionalità. Se il modello comprende nomi personalizzati per le risorse IAM, occorre specificare CAPABILITY_NAMED_IAM.

Importante

Se il modello contiene risorse IAM con nomi personalizzati, non occorre creare più stack che riutilizzino lo stesso modello. Le risorse IAM devono essere univoche a livello globale nell’account. Se utilizzi lo stesso modello per creare più stack in Regioni diverse, gli stack potrebbero condividere le stesse risorse IAM anziché avere ognuno una risorsa univoca. Le risorse condivise tra stack possono avere conseguenze indesiderate irreversibili. Ad esempio, se si eliminano o si aggiornano risorse IAM condivise all’interno di uno stack, si potrebbero involontariamente modificare le risorse di altri stack.

Gestione delle credenziali per le applicazioni in esecuzione su istanze Amazon EC2

Se hai un'applicazione che viene eseguita su un' EC2 istanza Amazon e devi effettuare richieste a AWS risorse come i bucket Amazon S3 o una tabella DynamoDB, l'applicazione richiede credenziali di sicurezza. AWS Tuttavia, la distribuzione e l’incorporamento delle credenziali di sicurezza a lungo termine in ogni istanza avviata è una sfida nonché un potenziale rischio per la sicurezza. Invece di utilizzare credenziali a lungo termine, come le credenziali utente IAM, ti consigliamo di creare un ruolo IAM associato a un' EC2 istanza Amazon all'avvio dell'istanza. Un'applicazione può quindi ottenere credenziali di sicurezza temporanee dall' EC2 istanza Amazon. Non è necessario incorporare le credenziali a lungo termine nell’istanza. Inoltre, per semplificare la gestione delle credenziali, puoi specificare un solo ruolo per più EC2 istanze Amazon; non devi creare credenziali uniche per ogni istanza.

Per un frammento di modello che mostra come avviare un’istanza con un ruolo, consulta Esempi di modello per i ruoli IAM.

Nota

Le applicazioni che si basano sulle istanze che utilizzano credenziali di sicurezza temporanee possono chiamare qualsiasi azione CloudFormation . Tuttavia, poiché CloudFormation interagisce con molti altri AWS servizi, devi verificare che tutti i servizi che desideri utilizzare supportino credenziali di sicurezza temporanee. Per un elenco di servizi che supportano le credenziali di sicurezza temporanee, consulta AWS services that work with IAM nella Guida per l’utente IAM.

Concedere un accesso temporaneo (accesso federato)

In alcuni casi, potresti voler concedere agli utenti senza AWS credenziali l'accesso temporaneo al tuo. Account AWS Invece di creare ed eliminare credenziali a lungo termine ogni volta che desideri concedere un accesso temporaneo, usa AWS Security Token Service ().AWS STS Ad esempio, puoi utilizzare i ruoli IAM. Da un ruolo IAM, è possibile creare e distribuire in modo programmatico molte credenziali di sicurezza temporanee (che includono una chiave di accesso, una chiave di accesso segreta e un token di sicurezza). Queste credenziali hanno una durata limitata, quindi non possono essere utilizzate per accedere alle tue credenziali Account AWS dopo la loro scadenza. Puoi anche creare più ruoli IAM per concedere ai singoli utenti livelli di autorizzazioni diversi. I ruoli IAM sono utili per scenari quali le identità federate e i Single Sign-On (SSO).

Un’identità federata è un’identità distinta che puoi utilizzare in più sistemi. Per gli utenti enterprise con un sistema di identità locale (ad esempio LDAP o Active Directory), è possibile gestire tutte le autenticazioni con il sistema di identità locale. Dopo l’autenticazione dell’utente, è necessario fornire le credenziali di sicurezza temporanee dell’utente o ruolo IAM corrispondente. Ad esempio, puoi creare un ruolo di amministratore e un ruolo di sviluppatore, in cui gli amministratori abbiano pieno accesso all' AWS account e gli sviluppatori abbiano le autorizzazioni per lavorare solo con gli stack. CloudFormation Dopo l’autenticazione, un amministratore è autorizzato a ottenere le credenziali di sicurezza temporanee dal ruolo amministratori. Tuttavia, gli sviluppatori, possono ottenere le credenziali di sicurezza temporanee solo dal ruolo sviluppatori.

Puoi anche concedere agli utenti federati l'accesso a. Console di gestione AWS Dopo l’autenticazione degli utenti con il sistema di identità on-premises, è possibile creare un URL temporaneo a livello di codice che offra un accesso diretto a Console di gestione AWS. Quando gli utenti utilizzano l'URL temporaneo, non avranno bisogno di accedere AWS perché sono già stati autenticati (single sign-on). Inoltre, poiché l’URL viene creato in base alle credenziali di sicurezza temporanee degli utenti, le autorizzazioni disponibili con tali credenziali definiscono le autorizzazioni degli utenti in Console di gestione AWS.

È possibile utilizzarne diversi per generare credenziali AWS STS APIs di sicurezza temporanee. Per ulteriori informazioni sull’API da utilizzare, consulta Compare AWS STS credentials nella Guida per l’utente IAM.

Importante

Non è possibile lavorare con IAM quando si utilizzano credenziali di sicurezza temporanee generati dall’API GetFederationToken. Al contrario, se è necessario utilizzare IAM, usare le credenziali di sicurezza temporanee di un ruolo.

CloudFormation interagisce con molti altri AWS servizi. Quando utilizzi credenziali di sicurezza temporanee con CloudFormation, verifica che tutti i servizi che desideri utilizzare supportino credenziali di sicurezza temporanee. Per un elenco di servizi che supportano le credenziali di sicurezza temporanee, consulta AWS services that work with IAM nella Guida per l’utente IAM.

Per ulteriori informazioni, consulta le risorse correlate qui di seguito nella Guida per l’utente IAM: