Policy basate sull'identità per Amazon EC2 - Amazon Elastic Compute Cloud

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

Policy basate sull'identità per Amazon EC2

Per impostazione predefinita, gli utenti non sono autorizzati a creare o modificare le risorse Amazon EC2 o a eseguire attività tramite l'API Amazon EC2, la console Amazon EC2 o la CLI. Per permettere agli utenti di creare o modificare le risorse ed eseguire le attività, devi creare policy IAM che concedano agli utenti l'autorizzazione a utilizzare specifiche risorse e operazioni API e quindi collegare tali policy agli utenti, gruppi o ruoli IAM che richiedono tali autorizzazioni.

Quando si collega una policy a un utente, un gruppo di utenti o un ruolo, viene concessa o rifiutata agli utenti l'autorizzazione per eseguire attività specificate sulle risorse specificate. Per ulteriori informazioni generali sulle policy IAM, consulta la sezione relativa a Policy e autorizzazioni in IAM nella Guida per l'utente IAM. Per ulteriori informazioni sulla gestione e creazione di policy IAM, consulta la sezione relativa alla gestione delle policy IAM.

Una policy IAM deve concedere o rifiutare le autorizzazioni necessarie per l'utilizzo di una o più operazioni Amazon EC2. Deve inoltre specificare le risorse che possono essere utilizzate con l'operazione, vale a dire tutte le risorse oppure, in alcuni casi, risorse specifiche. La policy può anche includere condizioni applicabili alla risorsa.

Per iniziare, puoi verificare se le politiche AWS gestite per Amazon EC2 soddisfano le tue esigenze. Altrimenti, puoi creare delle policy personalizzate. Per ulteriori informazioni, consulta AWS politiche gestite per Amazon EC2.

Sintassi delle policy

Una policy IAM è un documento JSON costituito da una o più dichiarazioni. Ogni dichiarazione è strutturata come segue.

{ "Statement":[{ "Effect":"effect", "Action":"action", "Resource":"arn", "Condition":{ "condition":{ "key":"value" } } } ] }

Una dichiarazione è costituita da diversi elementi:

  • Effetto: l'elemento effect può essere Allow o Deny. Per impostazione predefinita, gli utenti non dispongono dell'autorizzazione per l'utilizzo di risorse e operazioni API, pertanto tutte le richieste vengono rifiutate. Un permesso esplicito sostituisce l'impostazione predefinita. Un rifiuto esplicito sovrascrive tutti i consensi.

  • Action (Operazione): l'elemento action corrisponde all'operazione API specifica per la quale si concede o si nega l'autorizzazione. Per informazioni su come specificare l'elemento action, consulta Operazioni per Amazon EC2.

  • Resource (Risorsa): la risorsa che viene modificata dall'operazione. Alcune operazioni API di Amazon EC2 ti permettono di includere nella policy risorse specifiche che possono essere create o modificate dall'operazione. Specifica una risorsa utilizzando un nome della risorsa Amazon (ARN) o il carattere jolly (*) per indicare che l'istruzione si applica a tutte le risorse. Per ulteriori informazioni, consulta Autorizzazioni a livello di risorsa supportate per le operazioni API Amazon EC2.

  • Condition: le condizioni sono facoltative. Possono essere utilizzate per controllare quando è in vigore una policy. Per ulteriori informazioni su come specificare le condizioni per Amazon EC2, consulta Chiavi di condizione per Amazon EC2.

Per ulteriori informazioni su requisiti per le policy, consulta Riferimento alle policy JSON IAM nella Guida per l'utente IAM. Per alcuni esempi di istruzioni di policy IAM per Amazon EC2, consulta Policy di esempio da utilizzare all'API Amazon EC2.

Operazioni per Amazon EC2

In una dichiarazione di policy IAM, è possibile specificare qualsiasi operazione API per qualsiasi servizio che supporta IAM. Per Amazon EC2, utilizza il seguente prefisso con il nome dell'operazione API: ec2:. Ad esempio: ec2:RunInstances ed ec2:CreateImage.

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

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

Puoi anche specificare più operazioni tramite caratteri jolly. Ad esempio, puoi specificare tutte le operazioni il cui nome inizia con la parola "Describe" (Descrivi) come segue:

"Action": "ec2:Describe*"
Nota

Attualmente, le operazioni API Amazon EC2 Describe* non supportano autorizzazioni a livello di risorsa. Per ulteriori informazioni sulle autorizzazioni a livello di risorsa per Amazon EC2, consulta Policy basate sull'identità per Amazon EC2.

Per specificare tutte le operazioni API Amazon EC2, utilizza il carattere jolly * come mostrato di seguito:

"Action": "ec2:*"

Per visualizzare un elenco di operazioni di Amazon EC2, consulta Operazioni definite da Amazon EC2 nella Service Authorization Reference.

Autorizzazioni a livello di risorsa supportate per le operazioni API Amazon EC2

Il concetto di autorizzazioni a livello di risorsa indica la possibilità di specificare le risorse su cui gli utenti sono autorizzati a eseguire operazioni. Amazon EC2 supporta parzialmente le autorizzazioni a livello di risorsa. Ciò significa che per determinate operazioni di Amazon EC2, puoi controllare se gli utenti sono autorizzati a utilizzare tali operazioni in base a condizioni che devono essere soddisfatte o a specifiche risorse che gli utenti sono autorizzati a utilizzare. Ad esempio, puoi concedere agli utenti le autorizzazioni per avviare le istanze, ma solo di un determinato tipo e solo utilizzando un AMI specifico.

Per specificare una risorsa nella dichiarazione della policy IAM, si utilizza il suo nome della risorsa Amazon (ARN). Per ulteriori informazioni su come specificare il valore ARN, consulta Nome della risorsa Amazon (ARN) per Amazon EC2. Se un'azione API non supporta l'azione individuale ARNs, è necessario utilizzare un carattere jolly (*) per specificare che tutte le risorse possono essere influenzate dall'azione.

Per visualizzare le tabelle che identificano quali azioni dell'API di Amazon EC2 supportano le autorizzazioni a livello di risorsa ARNs e le chiavi di condizione che puoi utilizzare in una policy, consulta Azioni, risorse e chiavi di condizione per Amazon EC2.

Occorre ricordare che è possibile applicare autorizzazioni a livello di risorsa basate su tag nelle policy IAM utilizzate per la maggior parte delle operazioni API Amazon EC2. In questo modo è possibile controllare meglio le risorse che un utente può creare, modificare o utilizzare. Per ulteriori informazioni, consulta Concessione dell'autorizzazione all'applicazione di tag Amazon EC2 per le risorse durante la creazione.

Nome della risorsa Amazon (ARN) per Amazon EC2

Ogni dichiarazione di policy IAM si applica alle risorse specificate utilizzando le loro. ARNs

Un ARN presenta la seguente sintassi generale:

arn:aws:[service]:[region]:[account-id]:resourceType/resourcePath
service

Il servizio (ad esempio ec2).

Regione

La regione per la risorsa (ad esempio us-east-1).

account-id

L'ID AWS dell'account, senza trattini (ad esempio,123456789012).

resourceType

Il tipo di risorsa (ad esempio instance).

resourcePath

Un percorso che identifica la risorsa. Nei percorsi puoi utilizzare il carattere jolly *.

Ad esempio, nella tua dichiarazione puoi specificare una determinata istanza (i-1234567890abcdef0) utilizzando il relativo ARN come segue:

"Resource": "arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"

Puoi specificare tutte le istanze appartenenti a un determinato account utilizzando il carattere jolly * come segue:

"Resource": "arn:aws:ec2:us-east-1:123456789012:instance/*"

Puoi anche specificare tutte le risorse Amazon EC2 appartenenti a un determinato account utilizzando il carattere jolly * come segue:

"Resource": "arn:aws:ec2:us-east-1:123456789012:*"

Per specificare tutte le risorse, o se un'azione API specifica non supporta ARNs, usa il carattere jolly * nell'Resourceelemento come segue.

"Resource": "*"

Molte operazioni API di Amazon EC2 coinvolgono più risorse. Ad esempio, AttachVolume collega un volume Amazon EBS a un'istanza, pertanto un utente dovrà disporre delle autorizzazioni per utilizzare il volume e l'istanza. Per specificare più risorse in un'unica istruzione, separale ARNs con virgole, come segue.

"Resource": ["arn1", "arn2"]

Per un elenco di ARN per le risorse Amazon EC2, consulta Tipi di risorse definiti da Amazon EC2.

Chiavi di condizione per Amazon EC2

In una dichiarazione di policy, puoi specificare facoltativamente le condizioni che controllano quando questa è in vigore. Ogni condizione contiene una o più coppie chiave/valore. Le chiavi di condizione non distinguono tra maiuscole e minuscole. Abbiamo definito chiavi di condizione AWS globali, oltre a chiavi di condizione aggiuntive specifiche del servizio.

Per un elenco di chiavi di condizione specifiche del servizio per Amazon EC2, consulta Chiavi di condizione per Amazon EC2. Amazon EC2 implementa anche le chiavi di condizione AWS globali. Per ulteriori informazioni, consulta la pagina relativa alle informazioni disponibili in tutte le richieste nella Guida per l'utente di IAM.

Tutte le operazioni Amazon EC2 supportano le chiavi di condizione aws:RequestedRegion e ec2:Region. Per ulteriori informazioni, consulta Esempio: limitazione dell'accesso a una regione specifica.

Per utilizzare una chiave di condizione nella policy IAM, utilizzare l'istruzione Condition. Ad esempio, la policy seguente concede agli utenti l'autorizzazione per aggiungere ed eliminare regole in entrata e in uscita per qualsiasi gruppo di sicurezza. Utilizza la chiave di condizione ec2:Vpc per specificare che queste azioni possono essere eseguite solo su gruppi di sicurezza in un VPC specifico.

JSON
{ "Version":"2012-10-17", "Statement":[{ "Effect":"Allow", "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "ec2:RevokeSecurityGroupEgress"], "Resource": "arn:aws:ec2:us-east-1:111122223333:security-group/*", "Condition": { "StringEquals": { "ec2:Vpc": "arn:aws:ec2:us-east-1:111122223333:vpc/vpc-11223344556677889" } } } ] }

Se specifichi più condizioni o più chiavi in una sola condizione le valutiamo utilizzando un'operazione AND logica. Se specifichi una sola condizione con più valori per una sola chiave, valutiamo la condizione utilizzando un'operazione OR logica. Affinché le autorizzazioni vengano concesse, tutte le condizioni devono essere soddisfatte.

Puoi anche utilizzare i segnaposto quando specifichi le condizioni. Per ulteriori informazioni, consulta Elementi delle policy IAM: variabili e tag nella Guida per l'utente di IAM.

Importante

Molte chiavi di condizione sono specifiche di una risorsa e alcune operazioni API utilizzano più risorse. Se scrivi una policy con una chiave di condizione, utilizza l'elemento Resource della dichiarazione per specificare la risorsa a cui viene applicata la chiave di condizione. In caso contrario, la policy potrebbe impedire agli utenti di eseguire operazioni perché il controllo della condizione ha esito negativo per le risorse alle quali non viene applicata la chiave di condizione. Se non vuoi specificare una risorsa oppure se hai scritto l'elemento Action della policy in modo da includere più operazioni API, devi utilizzare il tipo di condizione ...IfExists per assicurarti che la chiave di condizione venga ignorata per le risorse che non la utilizzano. Per ulteriori informazioni, consulta... IfExists Condizioni nella Guida per l'utente IAM.

Chiave di condizione ec2:Attribute

La chiave di condizione ec2:Attribute può essere utilizzata per le condizioni che filtrano l'accesso da un attributo di una risorsa.

Questa chiave condizionale supporta solo proprietà di un tipo di dati primitivo (come stringhe o numeri interi) o AttributeValueoggetti complessi che contengono solo una proprietà Value (come la descrizione o ImdsSupportgli oggetti dell'azione ModifyImageAttributeAPI). La chiave condition non può essere utilizzata con oggetti complessi che contengono più proprietà, come l'LaunchPermissionoggetto di. ModifyImageAttribute

Ad esempio, la seguente politica utilizza la chiave ec2:Attribute/Description condition per filtrare l'accesso in base al complesso oggetto Description dell'azione ModifyImageAttributeAPI. La chiave di condizione consente solo le richieste che modificano la descrizione di un'immagine a Production o Development.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:ModifyImageAttribute", "Resource": "arn:aws:ec2:us-east-1::image/ami-*", "Condition": { "StringEquals": { "ec2:Attribute/Description": [ "Production", "Development" ] } } } ] }

La politica di esempio seguente utilizza la chiave ec2:Attribute condition per filtrare l'accesso in base alla proprietà primitiva Attribute dell'azione ModifyImageAttributeAPI. La chiave di condizione respinge tutte le richieste che modificano la descrizione di un'immagine.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:ModifyImageAttribute", "Resource": "arn:aws:ec2:us-east-1::image/ami-*", "Condition": { "StringEquals": { "ec2:Attribute": "Description" } } } ] }

Chiavi di condizione ec2:ResourceID

Quando si utilizza quanto segueec2:ResourceIDchiavi di condizione con le azioni API specificate, il valore della chiave di condizione viene utilizzato per specificare la risorsa risultante creata dall'azione API.ec2:ResourceIDle chiavi di condizione non possono essere utilizzate per specificare una risorsa di origine specificata nella richiesta API. Se si utilizza uno dei seguentiec2:ResourceIDcondition keys con un'API specificata, quindi devi sempre specificare la wildcard (*). Se si specifica un valore diverso, la condizione si risolve sempre in * durante il runtime. Ad esempio, per utilizzare la chiave di ec2:ImageId condizione con l'CopyImageAPI, è necessario specificare la chiave di condizione come segue:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CopyImage", "Resource": "arn:aws:ec2:us-east-1::image/ami-*", "Condition": { "StringEquals": { "ec2:ImageID": "*" } } } ] }

Ti consigliamo di evitare l'uso di queste chiavi di condizione con queste azioni API:

  • ec2:DhcpOptionsIDCreateDhcpOptions

  • ec2:ImageID: CopyImage, CreateImage, ImportImage e RegisterImage

  • ec2:InstanceID: RunInstances e ImportInstance

  • ec2:InternetGatewayIDCreateInternetGateway

  • ec2:NetworkAclIDCreateNetworkAcl

  • ec2:NetworkInterfaceIDCreateNetworkInterface

  • ec2:PlacementGroupNameCreatePlacementGroup

  • ec2:RouteTableIDCreateRouteTable

  • ec2:SecurityGroupIDCreateSecurityGroup

  • ec2:SnapshotID: CopySnapshot, CreateSnapshot, CreateSnapshots e ImportSnapshots

  • ec2:SubnetIDCreateSubnet

  • ec2:VolumeID: CreateVolume e ImportVolume

  • ec2:VpcIDCreateVpc

  • ec2:VpcPeeringConnectionIDCreateVpcPeeringConnection

Per filtrare l'accesso in base a una risorsa specifica IDs, si consiglia di utilizzare l'elemento Resource policy come segue.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CopyImage", "Resource": "arn:aws:ec2:us-east-1::image/ami-01234567890abcdef" } ] }

Chiave di condizione ec2:SourceInstanceARN

Usa ec2:SourceInstanceARN per specificare l'ARN dell'istanza in base alla quale è stata effettuata una richiesta. Si tratta di una chiave di condizione globale AWS, il che significa che puoi utilizzarla con servizi diversi da Amazon EC2. Per un esempio di policy, consulta Esempio: consentire a un'istanza specifica di visualizzare le risorse in altri AWS servizi.

Controllare l'accesso mediante l'accesso basato sugli attributi

Quando crei una policy IAM che concede agli utenti l'autorizzazione a utilizzare le risorse EC2, puoi includere informazioni sui tag nell'elemento Condition della policy per controllare l'accesso in base ai tag. Questo è noto come controllo degli accessi basato su attributi (ABAC). Il controllo ABAC fornisce un miglior controllo su quali risorse possono essere modificate, utilizzate o eliminate da un utente. Per ulteriori informazioni, consulta Che cos'è ABAC per AWS?

Ad esempio, è possibile creare una policy che consente agli utenti di terminare un'istanza ma che neghi l'operazione se l'istanza presenta il tag environment=production. A tale scopo, è possibile utilizzare la chiave di condizione aws:ResourceTag per consentire o negare l'accesso alla risorsa in base ai tag collegati alla risorsa.

"StringEquals": { "aws:ResourceTag/environment": "production" }

Per sapere se un'operazione API Amazon EC2 supporta il controllo degli accessi utilizzando la chiave di condizione aws:ResourceTag, consulta Operazioni, risorse e chiavi di condizione per Amazon EC2. Tieni a mente che le operazioni Describe non supportano le autorizzazioni a livello di risorsa, pertanto è necessario specificarle in una dichiarazione separata senza condizioni.

Per esempi di policy IAM, consulta Policy di esempio da utilizzare all'API Amazon EC2.

Se consenti o neghi a un utente l'accesso a risorse in base ai tag, devi considerare esplicitamente di negare agli utenti la possibilità di aggiungere o rimuovere tali tag dalle stesse risorse. In caso contrario, un utente può eludere le restrizioni e ottenere l'accesso a una risorsa modificandone i tag.

Concedere autorizzazioni a utenti, gruppi e ruoli

Per fornire l’accesso, aggiungi autorizzazioni agli utenti, gruppi o ruoli:

  • Utenti e gruppi in AWS IAM Identity Center:

    Crea un set di autorizzazioni. Segui le istruzioni riportate nella pagina Create a permission set (Creazione di un set di autorizzazioni) nella Guida per l’utente di AWS IAM Identity Center .

  • Utenti gestiti in IAM tramite un provider di identità:

    Crea un ruolo per la federazione delle identità. Segui le istruzioni riportate nella pagina Create a role for a third-party identity provider (federation) della Guida per l’utente IAM.

  • Utenti IAM:

Verificare che gli utenti dispongano delle autorizzazioni necessarie

Dopo aver creato una policy IAM, prima di metterla in produzione, ti consigliamo di verificare se vengono concesse agli utenti le autorizzazioni per l'utilizzo di specifiche risorse e operazioni API necessarie.

In primo luogo, crea un utente a scopo di test e collega la policy IAM creata all'utente del test. In seguito, effettua una richiesta come utente di test.

Se l'operazione Amazon EC2 di cui stai eseguendo il test crea o modifica una risorsa, devi effettuare la richiesta utilizzando il parametro DryRun (o eseguire il comando della AWS CLI con l'opzione --dry-run). In questo caso, la chiamata completa la verifica dell'autorizzazione, ma non completa l'operazione. Ad esempio, puoi controllare se l'utente è in grado di interrompere una determinata istanza senza effettivamente terminarla. Se l'utente del test dispone delle autorizzazioni necessarie, la richiesta restituisce DryRunOperation, altrimenti restituisce UnauthorizedOperation.

Se la policy non concede all'utente le autorizzazioni previste oppure è eccessivamente permissiva, puoi modificarla in base alle esigenze e ripetere il test fino a ottenere i risultati desiderati.

Importante

La propagazione delle modifiche alla policy e la loro validità potrebbe richiedere alcuni minuti. Ti consigliamo quindi di attendere 5 minuti prima di effettuare il test degli aggiornamenti delle policy.

Se una verifica dell'autorizzazione ha esito negativo, la richiesta restituisce un messaggio codificato con informazioni di diagnostica. Il messaggio può essere decodificato tramite l'operazione DecodeAuthorizationMessage. Per ulteriori informazioni, DecodeAuthorizationMessageconsulta l'AWS Security Token Service API Reference e decode-authorization-message.