Identificatori IAM - AWS Identity and Access Management

Identificatori IAM

IAM utilizza vari identificatori per utenti, gruppi IAM, ruoli, policy e certificati del server. Questa sezione descrive gli identificatori e spiega quando vanno utilizzati.

Nomi descrittivi e percorsi

Quando crei un utente, un ruolo, un gruppo di utenti o una policy o quando carichi un certificato server, gli attribuisci un nome descrittivo. Esempi includono Bob, TestApp1, Developers, ManageCredentialsPermissions o ProdServerCert.

Se utilizzi l'API IAM o AWS Command Line Interface (AWS CLI) per creare risorse IAM, puoi anche aggiungere un percorso facoltativo. Puoi decidere di usare un solo percorso o nidificare percorsi multipli come una struttura a cartelle. Ad esempio, puoi utilizzare il percorso nidificato /division_abc/subdivision_xyz/product_1234/engineering/ per farlo corrispondere alla struttura organizzativa della tua azienda. A quel punto, potresti ceare una policy per consentire a tutti gli utenti del percorso di accedere all'API di simulazione policy. Per visualizzare questa policy, consulta IAM: accesso all'API simulatore di policy basata sul percorso degli utenti. Per informazioni su come specificare un nome descrittivo, vedere la documentazione dell'API utente. Per ulteriori esempi di utilizzo dei percorsi, consulta ARN IAM.

Quando si utilizza AWS CloudFormation per creare risorse, è possibile specificare un percorso per utenti, gruppi IAM, ruoli e policy gestite dal cliente.

Se disponi di un utente e di un gruppo di utenti nello stesso percorso, IAM non inserisce automaticamente l'utente in tale gruppo di utenti. Ad esempio, potresti creare il gruppo Sviluppatori e specificare come percorso come /division_abc/subdivision_xyz/product_1234/engineering/. Se crei un utente denominato Bob e gli aggiungi lo stesso percorso, Bob non viene inserito automaticamente all'interno del gruppo di utenti Sviluppatori. IAM non impone alcun limite tra utenti o gruppi IAM in base ai loro percorsi. Utenti con percorsi differenti possono utilizzare le stesse risorse (supponendo che abbiano ricevuto le autorizzazioni per farlo). Numero e dimensione delle risorse IAM in un account AWS sono limitati. Per ulteriori informazioni, consulta Quote di IAM e AWS STS.

ARN IAM

La maggior parte delle risorse dispone di nomi descrittivi: ad esempio, un utente denominato Bob o un gruppo di utenti denominato Developers. Tuttavia, il linguaggio delle policy di autorizzazione richiede di specificare la risorsa o le risorse che utilizzano il seguente formato Amazon Resource Name (ARN).

arn:partition:service:region:account:resource

Dove:

  • partition identifica la partizione in cui si trova la risorsa. Per le Regioni AWS standard, la partizione è aws. Se sono presenti risorse in altre partizioni, la partizione è aws-partitionname. Ad esempio, la partizione per le risorse nella regione Cina (Pechino) è aws-cn. Non è possibile delegare l'accesso tra account in partizioni diverse.

  • service identifica il prodotto AWS. Le risorse IAM utilizzano sempre iam.

  • region identifica la regione della risorsa. Per le risorse IAM, è sempre lasciato vuoto.

  • L'account specifica il valore dell'ID dell'Account AWS senza trattini.

  • resource identifica la risorsa specifica in base al nome.

Puoi specificare gli ARN di IAM e AWS STS utilizzando la seguente sintassi. La porzione di regione dell'ARN è vuota perché le risorse IAM sono globali.

Sintassi:

arn:aws:iam::account:root arn:aws:iam::account:user/user-name-with-path arn:aws:iam::account:group/group-name-with-path arn:aws:iam::account:role/role-name-with-path arn:aws:iam::account:policy/policy-name-with-path arn:aws:iam::account:instance-profile/instance-profile-name-with-path arn:aws:sts::account:federated-user/user-name arn:aws:sts::account:assumed-role/role-name/role-session-name arn:aws:sts::account:self arn:aws:iam::account:mfa/virtual-device-name-with-path arn:aws:iam::account:u2f/u2f-token-id arn:aws:iam::account:server-certificate/certificate-name-with-path arn:aws:iam::account:saml-provider/provider-name arn:aws:iam::account:oidc-provider/provider-name

Molti esempi riportati di seguito includono percorsi nella parte della risorsa dell'ARN. I percorsi non possono essere creati o modificati nella AWS Management Console. Per utilizzare i percorsi, devi lavorare con le risorse utilizzando l'API AWS, la AWS CLI oppure Tools for Windows PowerShell.

Esempi:

arn:aws:iam::123456789012:root arn:aws:iam::123456789012:user/JohnDoe arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/JaneDoe arn:aws:iam::123456789012:group/Developers arn:aws:iam::123456789012:group/division_abc/subdivision_xyz/product_A/Developers arn:aws:iam::123456789012:role/S3Access arn:aws:iam::123456789012:role/application_abc/component_xyz/RDSAccess arn:aws:iam::123456789012:role/aws-service-role/access-analyzer.amazonaws.com/AWSServiceRoleForAccessAnalyzer arn:aws:iam::123456789012:role/service-role/QuickSightAction arn:aws:iam::123456789012:policy/UsersManageOwnCredentials arn:aws:iam::123456789012:policy/division_abc/subdivision_xyz/UsersManageOwnCredentials arn:aws:iam::123456789012:instance-profile/Webserver arn:aws:sts::123456789012:federated-user/JohnDoe arn:aws:sts::123456789012:assumed-role/Accounting-Role/JaneDoe arn:aws:sts::123456789012:self arn:aws:iam::123456789012:mfa/JaneDoeMFA arn:aws:iam::123456789012:u2f/user/JohnDoe/default (U2F security key) arn:aws:iam::123456789012:server-certificate/ProdServerCert arn:aws:iam::123456789012:server-certificate/division_abc/subdivision_xyz/ProdServerCert arn:aws:iam::123456789012:saml-provider/ADFSProvider arn:aws:iam::123456789012:oidc-provider/GoogleProvider arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-west-2.amazonaws.com/id/a1b2c3d4567890abcdefEXAMPLE11111 arn:aws:iam::123456789012:oidc-provider/server.example.org

Gli esempi seguenti forniscono maggiori dettagli per comprendere il formato ARN per diversi tipi di risorse IAM e AWS STS.

  • Un utente IAM nell'account:

    Nota

    Ogni nome utente IAM è univoco. Il nome utente non fa distinzione tra maiuscole e minuscole per l'utente, ad esempio durante il processo di accesso, ma la fa quando lo si utilizza in una politica o come parte di un ARN.

    arn:aws:iam::123456789012:user/JohnDoe
  • Altro utente con un percorso che riflette un organigramma:

    arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/JaneDoe
  • Un gruppo di utenti IAM:

    arn:aws:iam::123456789012:group/Developers
  • Un gruppo di utenti IAM con un percorso:

    arn:aws:iam::123456789012:group/division_abc/subdivision_xyz/product_A/Developers
  • Ruolo IAM:

    arn:aws:iam::123456789012:role/S3Access
  • Un ruolo collegato al servizio:

    arn:aws:iam::123456789012:role/aws-service-role/access-analyzer.amazonaws.com/AWSServiceRoleForAccessAnalyzer
  • Un ruolo di servizio:

    arn:aws:iam::123456789012:role/service-role/QuickSightAction
  • Policy gestita:

    arn:aws:iam::123456789012:policy/ManageCredentialsPermissions
  • Profilo dell'istanza che può essere associato a un'istanza Amazon EC2:

    arn:aws:iam::123456789012:instance-profile/Webserver
  • Un utente federato identificato in IAM come "Paulo":

    arn:aws:sts::123456789012:federated-user/Paulo
  • Sessione attiva di qualcuno che ha assunto il "Ruolo-contabilità" con il nome di sessione di ruolo di sessione "Mary":

    arn:aws:sts::123456789012:assumed-role/Accounting-Role/Mary
  • Rappresenta la sessione del chiamante quando viene utilizzata come risorsa in una chiamata API, come l'API AWS STS SetContext, che opera sulla sessione chiamante:

    arn:aws:sts::123456789012:self
  • Dispositivo di autenticazione a più fattori assegnato all'utente denominato Jorge:

    arn:aws:iam::123456789012:mfa/Jorge
  • Certificato del server:

    arn:aws:iam::123456789012:server-certificate/ProdServerCert
  • Certificato server con un percorso che riflette un organigramma:

    arn:aws:iam::123456789012:server-certificate/division_abc/subdivision_xyz/ProdServerCert
  • Provider di identità (SAML e OIDC):

    arn:aws:iam::123456789012:saml-provider/ADFSProvider arn:aws:iam::123456789012:oidc-provider/GoogleProvider arn:aws:iam::123456789012:oidc-provider/server.example.org
  • Provider di identità OIDC con un percorso che riflette l'URL di un provider di identità OIDC di Amazon EKS:

    arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-west-2.amazonaws.com/id/a1b2c3d4567890abcdefEXAMPLE11111

Un altro importante ARN è l'ARN dell'utente root. Sebbene questa non sia una risorsa IAM, bisognerebbe essere a conoscenza del formato di questo ARN. Viene spesso utilizzato nell'elemento Principal di una policy basata su risorse.

  • L'Account AWS visualizza le seguenti informazioni:

    arn:aws:iam::123456789012:root

L'esempio seguente mostra una policy che può essere assegnata a Richard per la gestione autonoma delle sue chiavi di accesso. La risorsa è l'utente IAM Richard.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageRichardAccessKeys", "Effect": "Allow", "Action": [ "iam:*AccessKey*", "iam:GetUser" ], "Resource": "arn:aws:iam::*:user/division_abc/subdivision_xyz/Richard" }, { "Sid": "ListForConsole", "Effect": "Allow", "Action": "iam:ListUsers", "Resource": "*" } ] }
Nota

Quando utilizzi gli ARN per identificare le risorse in una policy IAM, puoi includere le variabili delle policy. Le variabili dei criteri possono includere segnaposti per le informazioni di runtime (ad esempio il nome dell'utente) come parte dell'ARN. Per ulteriori informazioni, consulta la sezione Elementi delle policy IAM: variabili e tag

Utilizzo di caratteri jolly e percorsi negli ARN

Puoi utilizzare i caratteri jolly nella parte della risorsa dell'ARN per specificare più utenti, gruppi IAM o policy. Ad esempio, per specificare tutti gli utenti che lavorano su un prodotto denominato product_1234, puoi utilizzare:

arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/product_1234/*

Se hai utenti i cui nomi iniziano con la stringa app_, puoi fare riferimento a tutti quelli con il seguente ARN.

arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/product_1234/app_*

Per specificare tutti gli utenti, i gruppi IAM o le policy nel tuo Account AWS, utilizza un carattere jolly rispettivamente dopo la parte user/, group/ o policy/ dell'ARN.

arn:aws:iam::123456789012:user/* arn:aws:iam::123456789012:group/* arn:aws:iam::123456789012:policy/*

Se si specifica il seguente ARN per un utente arn:aws:iam::111122223333:user/*, questo corrisponderà a entrambi gli esempi seguenti.

arn:aws:iam::111122223333:user/JohnDoe arn:aws:iam::111122223333:user/division_abc/subdivision_xyz/JaneDoe

Ma, se specifichi il seguente ARN per un utente arn:aws:iam::111122223333:user/division_abc*, corrisponderà al secondo esempio, ma non al primo.

arn:aws:iam::111122223333:user/JohnDoe arn:aws:iam::111122223333:user/division_abc/subdivision_xyz/JaneDoe

Non utilizzare caratteri jolly nella parte user/, group/o policy/ dell'ARN. Ad esempio, IAM non consente quanto segue:

arn:aws:iam::123456789012:u*
Esempio di utilizzo di percorsi e ARN per un gruppo di utenti basato su progetto

I percorsi non possono essere creati o modificati nella AWS Management Console. Per utilizzare i percorsi, devi lavorare con le risorse utilizzando l'API AWS, la AWS CLI oppure Tools for Windows PowerShell.

In questo esempio, Jules nel gruppo di utenti Marketing_Admin crea un gruppo basato su progetto all'interno del percorso /marketing/. Jules assegna gli utenti provenienti da diverse parti dell'azienda al gruppo di utenti. Questo esempio illustra come il percorso di un utente non sia correlato ai gruppi di utenti in cui si trova l'utente.

Il gruppo marketing sta per lanciare un nuovo prodotto, quindi Jules crea un nuovo gruppo nel percorso /marketing/, chiamandolo Widget_Launch. Jules assegna al gruppo la seguente policy, che fornisce l'accesso al gruppo di utenti a oggetti nella parte del example_bucket progettato appositamente per il lancio del prodotto.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::example_bucket/marketing/newproductlaunch/widget/*" }, { "Effect": "Allow", "Action": "s3:ListBucket*", "Resource": "arn:aws:s3:::example_bucket", "Condition": {"StringLike": {"s3:prefix": "marketing/newproductlaunch/widget/*"}} } ] }

Jules assegna quindi al gruppo di utenti gli utenti coinvolti nel lancio del prodotto. Fra questi ci sono Patricia ed Eli dal percorso /marketing/. Sono inclusi anche Chris e Chloe dal percorso /vendite/ e Aline e Jim dal percorso /legale/.

Identificatori univoci

Quando IAM crea un utente, un gruppo di utenti, un ruolo, una policy, un profilo dell'istanza o un certificato server, assegna a ciascuna risorsa un ID univoco. L'ID univoco ha il seguente aspetto:

AIDAJQABLZS4A3QDU576Q

In linea di massima, vengono utilizzati nomi descrittivi e ARN quando si lavora con le risorse IAM. In questo modo non è necessario conoscere l'ID univoco per una risorsa specifica. Tuttavia, a volte l'ID univoco può risultare utile, se l'utilizzo di nomi descrittivi non risulta pratico.

Un caso è quando i nomi descrittivi vengono riutilizzati nel tuo Account AWS. All'interno dell'account, il nome descrittivo di un utente, di un gruppo di utenti, di un ruolo o di una policy deve essere univoco. Ad esempio, potresti creare un utente IAM denominato John. La tua azienda utilizza Amazon S3 e dispone di un bucket con cartelle per ogni dipendente. L'utente IAM John è un membro di un gruppo di utenti IAM denominato User-S3-Access con autorizzazioni che consentono agli utenti di accedere solo alle loro cartelle nel bucket. Per un esempio di come creare una policy basata sull'identità che consenta agli utenti IAM di accedere al loro oggetto del bucket in S3 utilizzando il nome descrittivo degli utenti, consulta Amazon S3: consente agli utenti IAM di accedere alla propria directory home S3, in modo programmatico e nella console.

Supponiamo che il dipendente denominato David lasci l'azienda e che il suo utente IAM denominato John venga eliminato. Successivamente, viene assunto un altro dipendente con lo stesso nome e viene creato un nuovo utente IAM, anch'esso denominato John. Aggiungi il nuovo utente IAM denominato John al gruppo di utenti IAM esistente User-S3-Access. Se la policy associata al gruppo di utente specifica il nome descrittivo dell'utente IAM John, la policy consente al nuovo John di accedere alle informazioni lasciate dal John precedente.

Come regola generale, ti consigliamo di specificare la ARN per la risorsa nelle policy invece del suo ID univoco. Tuttavia, ogni utente IAM dispone di un ID univoco, anche se crei un nuovo utente IAM che riutilizza un nome descrittivo che avevi eliminato in precedenza. In questo esempio, il vecchio utente IAM John e il nuovo utente IAM John hanno ID univoci differenti. È possibile creare policy basate sulle risorse che concedono l'accesso in base all'ID univoco e non solo per nome utente. In questo modo si riduce la possibilità che si possa inavvertitamente concedere l'accesso alle informazioni che un dipendente non dovrebbe avere.

L'esempio seguente mostra come specificare ID univoci nell'elemento Principal di una policy basata su risorse.

"Principal": { "AWS": [ "arn:aws:iam::111122223333:role/role-name", "AIDACKCEVSQ6C2EXAMPLE", "AROADBQP57FF2AEXAMPLE" }

L'esempio seguente mostra come specificare ID univoci nell'elemento Condition di una policy che utilizza la chiave di condizione globale aws:userid.

"Condition": { "StringLike": { "aws:userId": [ "AIDACKCEVSQ6C2EXAMPLE", "AROADBQP57FF2AEXAMPLE:role-session-name", "AROA1234567890EXAMPLE:*", "111122223333" ] } }

Un altro esempio è dato dagli ID utente che possono tornare utili quando ti trovi a gestire un database personale (o un altro archivio) con informazioni sul ruolo o sugli utenti IAM. L'ID univoco può fornire un identificatore univoco per ogni ruolo o utente IAM che viene creato. Questo è il caso di ruoli o utenti IAM che riutilizzano un nome, come nell'esempio precedente.

Approfondimento dei prefissi ID univoci

IAM usa i seguenti prefissi per indicare il tipo di risorsa a cui si applica ciascun ID univoco. I prefissi possono variare in base a quando sono stati creati.

Prefix Tipo di risorsa
ABIA Token di connessione al servizio AWS STS
ACCA Credenziali specifiche per contesto

AGPA

Gruppo di utenti

AIDA

Utente IAM

AIPA Profilo dell'istanza Amazon EC2
AKIA Chiave di accesso
ANPA

Policy gestita

ANVA

Versione in una policy gestita

APKA Chiavi pubbliche
AROA Ruolo
ASCA Certificato

ASIA

Gli ID chiave di accesso temporanea (AWS STS) utilizzano questo prefisso, ma sono univoci solo in combinazione con la chiave di accesso segreta e il token di sessione.

Ottenere l'identificatore univoco

L'ID univoco per una risorsa IAM non è disponibile nella console IAM. Per ottenere l'ID univoco, puoi utilizzare i seguenti comandi AWS CLI o le chiamate API IAM.

AWS CLI:

API IAM: