Risoluzione dei problemi relativi alle policy IAM - AWS Identity and Access Management

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

Risoluzione dei problemi relativi alle policy IAM

Una policy è un'entità AWS che, se associata a un'identità o a una risorsa, ne definisce le autorizzazioni. AWS valuta queste politiche quando un principale, ad esempio un utente, effettua una richiesta. Le autorizzazioni nelle policy determinano l'approvazione o il rifiuto della richiesta. Le politiche vengono archiviate AWS come documenti JSON allegati ai principali come politiche basate sull'identità o alle risorse come politiche basate sulle risorse. È possibile collegare una policy basata sull'identità a un principale (o identità), ad esempio un gruppo, un utente o un ruolo IAM. Le policy basate sulle identità includono policy gestite da AWS , policy gestite dal cliente e policy inline. È possibile creare e modificare le politiche gestite dai clienti utilizzando le opzioni di editor Visual e JSON AWS Management Console . Quando si visualizza una politica in AWS Management Console, è possibile visualizzare un riepilogo delle autorizzazioni concesse da tale politica. L'editor visivo e i riepiloghi di policy consentono di individuare e risolvere errori comuni durante la gestione delle policy IAM.

Tieni presente che tutte le policy IAM vengono archiviate utilizzando una sintassi che inizia con le regole di JavaScript Object Notation (JSON). Non è necessario conoscere questa sintassi per creare o gestire le policy. È possibile creare e modificare una policy utilizzando l'editor visivo nella AWS Management Console. Per ulteriori informazioni sulla sintassi JSON nelle policy IAM, consulta Sintassi del linguaggio della policy JSON IAM .

Risoluzione dei problemi degli argomenti della policy IAM

Risoluzione dei problemi tramite l'editor visivo

Quando si crea o si modifica una policy gestita dal cliente, è possibile utilizzare le informazioni nell'editor Visivo per semplificare la risoluzione degli errori della policy. Per visualizzare un esempio dell'editor visivo per creare una policy, consultare Controllo dell'accesso alle identità.

Modifica della struttura delle policy

Quando crei una policy, la AWS convalida, la elabora e la trasforma prima di archiviarla. Quando la policy viene recuperata, la AWS trasforma nuovamente in un formato leggibile dall'uomo senza modificare le autorizzazioni. Ciò può causare differenze in ciò che viene visualizzato nell'editor visivo della policy o nella scheda JSON.

  • I blocchi di autorizzazioni dell'editor visivo possono essere aggiunti, rimossi o riordinati e il contenuto all'interno di un blocco può essere ottimizzato.

  • Nella scheda JSON lo spazio bianco non significativo può essere rimosso e gli elementi all'interno di mappe JSON possono essere riordinati. Inoltre, Account AWS IDs all'interno degli elementi principali può essere sostituito dall'Amazon Resource Name (ARN) di. Utente root dell'account AWS

A causa di queste possibili modifiche, non è possibile confrontare i documenti di policy JSON come stringhe.

Quando crei una policy gestita dai clienti in AWS Management Console, puoi scegliere di lavorare interamente nell'editor JSON. Se non si apportano modifiche alla policy nell'editor Visivo e si seleziona Successivo dall'editor JSON, è meno probabile che la policy venga ristrutturata. Quando si utilizza l'editor visivo, IAM potrebbe ristrutturare la policy per ottimizzarne l'aspetto. Questa ristrutturazione esiste solo nella sessione di modifica e non viene salvata automaticamente.

Se la policy è stata ristrutturata nella sessione di modifica, IAM determina se salvare la ristrutturazione in base alle seguenti situazioni:

Utilizzo di questa opzione dell'editor Se si modifica la policy Quindi scegli Successivo da questa scheda Quando si sceglie Save changes (Salva modifiche)
Visivo Modificata Visivo La policy viene ristrutturata
Visivo Modificata JSON La policy viene ristrutturata
Visivo Non modificata Visivo La policy viene ristrutturata
JSON Modificata Visivo La policy viene ristrutturata
JSON Modificata JSON La struttura della policy non viene modificata
JSON Non modificata JSON La struttura della policy non viene modificata

IAM potrebbe ristrutturare policy complesse o policy che hanno blocchi di autorizzazione o istruzioni per permettere più servizi, tipi di risorse o chiavi di condizioni.

Scelta di un ARN della risorsa nell'editor visivo

Quando si crea o si modifica una policy utilizzando l'editor visivo, è necessario prima selezionare un servizio, quindi selezionare operazioni da quel servizio. Se il servizio e le operazioni selezionate supportano la scelta di risorse specifiche, l'editor visivo elenca i tipi di risorse supportati. È quindi possibile selezionare Add ARN (Aggiungi ARN) per fornire i dettagli sulla risorsa. È possibile selezionare tra le seguenti opzioni per aggiungere un ARN per un tipo di risorsa.

  • Utilizza il builder di ARN: in base al tipo di risorsa, è possibile che siano visualizzati campi diversi per la creazione dell'ARN. È anche possibile selezionare Any (Qualsiasi) per fornire le autorizzazioni per qualsiasi valore per l'impostazione specificata. Ad esempio, se hai selezionato il gruppo di livelli di accesso Amazon EC2 Read, le azioni previste dalla tua politica supportano il tipo di instance risorsa. Fornisci la regione, l'account e InstanceIdi valori per la tua risorsa. Se si fornisce l'ID account ma si seleziona Qualsiasi per la regione e l'ID istanza, la policy concede le autorizzazioni a qualsiasi istanza dell'account.

  • Digita o incolla l'ARN: puoi possibile specificare le risorse in base ai relativi Amazon Resource Name (ARN). È possibile includere caratteri jolly * in qualsiasi campo dell'ARN (tra ogni coppia di due punti). Per ulteriori informazioni, consulta Elementi delle policy JSON IAM: Resource.

Autorizzazioni nell'editor visivo

Per impostazione predefinita, la policy creata tramite l'editor visuale permette le operazioni scelte. Per rifiutare invece le operazioni scelte, selezionare Switch to deny permissions (Passa a rifiuto autorizzazioni). Poiché le richieste vengono rifiutate per impostazione predefinita, si consiglia come best practice di sicurezza di permettere le autorizzazioni solo alle operazioni e alle risorse necessarie per un utente. È necessario creare un'istruzione per rifiutare le autorizzazioni solo se si desidera ignorare separatamente un'autorizzazione permessa da un'altra istruzione o policy. Si consiglia di limitare al minimo il numero di autorizzazioni di rifiuto perché possono aumentare la difficoltà di risoluzione dei problemi relative alle autorizzazioni. Per ulteriori informazioni sulla logica di valutazione della policy IAM, consulta Logica di valutazione delle policy.

Nota

Per impostazione predefinita, solo Utente root dell'account AWS chi ha accesso a tutte le risorse di quell'account. Pertanto, se non è stato effettuato l'accesso come utente root, è necessario disporre delle autorizzazioni concesse da una policy.

Specifica di più servizi nell'editor visivo

Quando si utilizza l'editor visivo per creare una policy, è possibile selezionare solo un servizio alla volta. Si tratta di una best practice consigliata in quanto l'editor visivo consente in questo modo di selezionare tra le operazioni per tale singolo servizio. Quindi si sceglie tra le risorse supportate da tale servizio e le operazioni selezionate. Ciò semplifica la creazione e la risoluzione dei problemi della policy.

È anche possibile usare un carattere jolly (*) per specificare manualmente più servizi. Ad esempio, digitare Code* per fornire le autorizzazioni per tutti i servizi che iniziano con Code, ad esempio CodeBuild e CodeCommit. Tuttavia, è necessario quindi digitare le azioni e le risorse ARNs per completare la politica. Inoltre, quando si salva la policy, potrebbe venire ristrutturata per includere ciascun servizio in un blocco di autorizzazioni separate.

In alternativa, per utilizzare una sintassi JSON (ad esempio, i caratteri jolly) per i servizi, crea, modifica e salva la policy utilizzando l'opzione dell'editor JSON.

Riduzione delle dimensioni della policy nell'editor visivo

Quando utilizzi l'editor visivo per creare una policy, IAM crea un documento JSON per archiviare la policy. È possibile visualizzare questo documento passando all'opzione dell'editor JSON. Se questo documento JSON supera il limite di dimensioni di una policy, l'editor visivo visualizza un messaggio di errore. Non sarai in grado di rivedere e salvare la policy. Per visualizzare i limiti di IAM per le dimensioni di una policy gestita, consulta Limiti di caratteri di IAM e STS.

Per ridurre le dimensioni delle policy nell'editor visivo, modificare la policy o spostare blocchi di autorizzazioni in un'altra policy. Il messaggio di errore include il numero di caratteri contenuto nel documento di policy. Puoi utilizzare queste informazioni per ridurre le dimensioni della policy.

Correzione di servizi, operazioni o tipi di risorse non riconosciuti nell'editor visivo

È possibile che venga visualizzato un avviso nell'editor visivo che indica che la policy include un servizio, un'operazione o un tipo di risorsa non riconosciuti.

Nota

IAM rivede i nomi di servizi, le operazioni e i tipi di risorse per i servizi che supportano i riepiloghi della policy. Tuttavia, il riepilogo della policy può includere un valore di risorse o una condizione che non esiste. Esegui sempre un test delle policy tramite il simulatore di policy.

Se la policy include servizi, operazioni o tipi di risorse non riconosciuti, si è verificato uno dei seguenti errori:

  • Servizio di anteprima: i servizi in anteprima non supportano l'editor visivo. Se si partecipa all'anteprima, è necessario digitare manualmente le azioni e le risorse ARNs per completare la politica. Puoi ignorare qualsiasi avviso e continuare. In alternativa, per digitare o incollare un documento della policy JSON è possibile scegliere l'opzione dell'editor JSON.

  • Servizio personalizzato: i servizi personalizzati non supportano l'editor visivo. Se si utilizza un servizio personalizzato, è necessario digitare manualmente le azioni e le risorse ARNs per completare la politica. Puoi ignorare qualsiasi avviso e continuare. In alternativa, per digitare o incollare un documento della policy JSON è possibile scegliere l'opzione dell'editor JSON.

  • Il servizio non supporta l'editor visivo: se la politica include un servizio a disponibilità generale (GA) che non supporta l'editor visivo, è necessario digitare manualmente le azioni e le risorse ARNs per completare la politica. Puoi ignorare qualsiasi avviso e continuare. In alternativa, per digitare o incollare un documento della policy JSON è possibile scegliere l'opzione dell'editor JSON.

    I servizi disponibili a livello generale sono servizi che vengono rilasciati per il pubblico e non sono servizi di anteprima o personalizzati. Se un servizio non riconosciuto è disponibile a livello generale e il nome è scritto correttamente, significa che il servizio non supporta l'editor visivo. Per informazioni su come richiedere supporto per l'editor visivo o per il riepilogo della policy per un servizio con disponibilità generale, consultare Il servizio non supporta i riepiloghi delle policy IAM.

  • L'azione non supporta l'editor visivo: se la politica include un servizio supportato con un'azione non supportata, è necessario digitare manualmente le azioni e le risorse ARNs per completare la politica. Puoi ignorare qualsiasi avviso e continuare. In alternativa, per digitare o incollare un documento della policy JSON è possibile scegliere l'opzione dell'editor JSON.

    Se la policy include un servizio supportato con un'operazione non supportata, il servizio non supporta completamente l'editor visivo. Per informazioni su come richiedere supporto per l'editor visivo o per il riepilogo della policy per un servizio con disponibilità generale, consultare Il servizio non supporta i riepiloghi delle policy IAM.

  • Il tipo di risorsa non supporta l'editor visivo: se la policy include un'operazione supportata con un tipo di risorsa non supportato, è possibile ignorare l'avviso e continuare. Tuttavia, IAM non è in grado di confermare di aver incluso risorse per tutte le operazioni selezionate e potrebbero venire visualizzati avvisi aggiuntivi.

  • Refuso: quando si digita manualmente un servizio, un'operazione o una risorsa nell'editor visivo, è possibile che venga creata una policy che include un errore di battitura. Ti consigliamo di utilizzare l'editor visivo selezionando dall'elenco di servizi e operazioni. Quindi, completa la sezione delle risorse in base alle istruzioni. Se un servizio non supporta completamente l'editor visivo, potrebbe essere necessario digitare manualmente le parti della policy.

    Se si è certi che la policy non contenga nessuno degli errori sopra riportati, è possibile che includa un refuso. Verifica i problemi seguenti:

    • Nomi di servizi, azioni e tipi di risorsa scritti in modo errato, ad esempio s2 invece di s3 o ListMyBuckets al posto di ListAllMyBuckets

    • Inserisci testo non necessario ARNs, ad esempio arn:aws:s3: : :*

    • Due punti (:) mancanti nelle azioni, ad esempio iam.CreateUser

    È possibile valutare una policy che potrebbe contenere refusi scegliendo Successivo per rivedere il riepilogo della policy. Quindi, verifica se la policy fornisce le autorizzazioni previste.

Risoluzione dei problemi tramite i riepiloghi delle policy

È possibile individuare e risolvere i problemi relativi ai riepiloghi delle policy.

Riepilogo della policy mancante

La console IAM include tabelle di riepilogo di policy che descrivono il livello di accesso, le risorse e le condizioni concesse o negate per ciascun servizio in una policy. Le policy sono riassunte in tre tabelle: riepilogo della policy, riepilogo del servizio e riepilogo dell'operazione. La tabella riepilogo della policy include un elenco di servizi e riepiloghi delle autorizzazioni definite dalla policy scelta. È possibile visualizzare il riepilogo delle policy per qualsiasi policy associata a un'entità nella pagina Dettagli della policy relativa a tale policy. È possibile visualizzare il riepilogo della policy per le policy gestite nella pagina Policies (Policy). Se non AWS è possibile visualizzare un riepilogo di una policy, verrà visualizzato il documento relativo alla policy JSON e il seguente errore:

Impossibile generare un riepilogo per questa policy. Puoi comunque visualizzare o modificare il documento di policy JSON.

Se la policy non include un riepilogo, si è verificato uno dei seguenti errori:

  • Elemento della policy non supportato: IAM non supporta la generazione di riepiloghi di policy per le policy che includono uno dei seguenti elementi di policy:

    • Principal

    • NotPrincipal

    • NotResource

  • Nessuna autorizzazione di policy: se una policy non fornisce le autorizzazioni valide, non è possibile generare il riepilogo della policy. Ad esempio, se una policy include una singola istruzione con l'elemento "NotAction": "*", si permette l'accesso a tutte le operazioni ad eccezione di "tutte le operazioni" (*). Questo significa che concede accesso Deny o Allow a nulla.

    Nota

    Prestare attenzione all'utilizzo di elementi di policy quali NotPrincipal, NotAction e NotResource. Per ulteriori informazioni sull'utilizzo degli elementi delle policy, consultare Documentazione di riferimento degli elementi delle policy JSON IAM.

    Se si forniscono servizi e risorse non corrispondenti, è possibile creare una policy che non fornisce autorizzazioni valide. Ciò può verificarsi se si specificano le operazioni in un servizio e le risorse di un altro servizio. In questo caso, viene visualizzato il riepilogo della policy. L'unica indicazione che si è verificato un problema è che la colonna delle risorse nel riepilogo può includere una risorsa di un servizio diverso. Se questa colonna include una risorsa non corrispondente, è necessario verificare se ci sono errori nella policy. Per comprendere meglio la policy, esegui sempre un test tramite il simulatore di policy.

Il riepilogo della policy include servizi, operazioni o tipi di risorse non riconosciuti

Nella console IAM, se un riepilogo di policy include un simbolo di avvertenza ( Warning hazard sign icon with yellow triangle background. ), la policy potrebbe includere un tipo di servizio, operazione o risorsa non riconosciuto. Per ulteriori informazioni sulle avvertenze in un riepilogo della policy, consultare Riepilogo della policy (elenco di servizi).

Nota

IAM rivede i nomi di servizio, le operazioni e i tipi di risorse per i servizi che supportano i riepiloghi della policy. Tuttavia, il riepilogo della policy può includere un valore di risorse o una condizione che non esiste. Esegui sempre un test delle policy tramite il simulatore di policy.

Se la policy include servizi, operazioni o tipi di risorse non riconosciuti, si è verificato uno dei seguenti errori:

  • Servizio di anteprima: i servizi in anteprima non supportano i riepiloghi di policy.

  • Servizio personalizzato: i servizi personalizzati non supportano i riepiloghi di policy.

  • Il servizio non supporta riepiloghi: se la policy include un servizio disponibile a livello generale (GA) che non supporta riepiloghi di policy, allora il servizio viene incluso nella sezione Servizi non riconosciuti della tabella di riepilogo della policy. I servizi disponibili a livello generale sono servizi che vengono rilasciati per il pubblico e non sono servizi di anteprima o personalizzati. Se un servizio non riconosciuto è disponibile a livello generale e il nome è scritto correttamente, allora significa che il servizio non supporta i riepiloghi di policy IAM. Per informazioni su come richiedere supporto per il riepilogo della policy per un servizio con disponibilità generale, consultare Il servizio non supporta i riepiloghi delle policy IAM.

  • L'operazione non supporta i riepiloghi: se la policy include un servizio supportato con un'operazione non supportata, allora l'operazione viene inclusa nella sezione Operazioni non riconosciute della tabella di riepilogo del servizio. Per ulteriori informazioni sulle avvertenze in un riepilogo di servizio, consultare Riepilogo del servizio (elenco di operazioni).

  • Il tipo di risorsa non supporta i riepiloghi: se la policy include un'operazione supportata con un tipo di risorsa non supportato, allora la risorsa viene inclusa nella sezione Tipi di risorse non riconosciuti della tabella di riepilogo del servizio. Per ulteriori informazioni sulle avvertenze in un riepilogo di servizio, consultare Riepilogo del servizio (elenco di operazioni).

  • Errore di battitura: AWS verifica che il codice JSON sia sintatticamente corretto e che la policy non includa errori di battitura o altri errori come parte della convalida della policy.

Nota

Come best practice, ti consigliamo di utilizzare IAM Access Analyzer per convalidare le tue policy IAM e garantire autorizzazioni sicure e funzionali. Consigliamo di aprire le policy esistenti e rivedere e risolvere eventuali suggerimenti di convalida della policy.

Il servizio non supporta i riepiloghi delle policy IAM

È possibile che i riepiloghi delle policy IAM o l'editor visivo non supportino un'operazione o un servizio disponibile a livello generale. I servizi disponibili a livello generale sono servizi che vengono rilasciati per il pubblico e che non sono servizi di anteprima o personalizzati. Se un servizio non riconosciuto è disponibile a livello generale e il nome è scritto correttamente, significa che il servizio non supporta queste caratteristiche. Se la policy include un servizio supportato con un'operazione non supportata, il servizio non supporta completamente il riepilogo della policy IAM.

Come richiedere che un servizio aggiunga il supporto per l'editor visivo o per il riepilogo della policy IAM
  1. Accedi e apri la console IAM all' AWS Management Console indirizzo. https://console.aws.amazon.com/iam/

  2. Individuare la policy che include il servizio non supportati:

    • Se la policy è una policy gestita, selezionare Policies (Policy) nel riquadro di navigazione. Nell'elenco delle policy, selezionare il nome della policy che si desidera modificare.

    • Se la policy è una policy inline collegata all'utente, selezionare Users (Utenti) nel riquadro di navigazione. Nell'elenco di utenti, selezionare il nome dell'utente la cui policy si desidera visualizzare. Nella tabella di policy per l'utente, espandere l'intestazione per il riepilogo della policy che si desidera visualizzare.

  3. Nella parte sinistra del AWS Management Console piè di pagina, scegli Feedback. Nella casella Feedback per IAM, digita I request that the <ServiceName> service add support for IAM policy summaries and the visual editor. Se si desidera che più di un servizio supporti i riepiloghi, digitare I request that the <ServiceName1>, <ServiceName2>, and <ServiceName3> services add support for IAM policy summaries and the visual editor.

Come richiedere che un servizio aggiunga il supporto per l'editor visivo o per il riepilogo della policy IAM per un'operazione mancante
  1. Accedi AWS Management Console e apri la console IAM all'indirizzo https://console.aws.amazon.com/iam/.

  2. Individuare la policy che include il servizio non supportati:

    • Se la policy è una policy gestita, selezionare Policies (Policy) nel riquadro di navigazione. Nell'elenco delle policy, selezionare il nome della policy che si desidera modificare.

    • Se la policy è una policy inline collegata all'utente, selezionare Users (Utenti) nel riquadro di navigazione. Nell'elenco di utenti, selezionare il nome dell'utente la cui policy si desidera visualizzare. Nella tabella delle policy per l'utente, selezionare il nome della policy che cui si desidera visualizzare per espandere il riepilogo della policy.

  3. Nel riepilogo della policy, selezionare il nome del servizio che include un'operazione non supportata.

  4. Nella parte sinistra del AWS Management Console piè di pagina, scegli Feedback. Nella casella Feedback per IAM, digita I request that the <ServiceName> service add IAM policy summary and the visual editor support for the <ActionName> action. Se si desidera segnalare più di un'operazione non supportata, digitare I request that the <ServiceName> service add IAM policy summary and the visual editor support for the <ActionName1>, <ActionName2>, and <ActionName3> actions.

Per richiedere che un altro servizio includa operazioni mancanti, ripetere gli ultimi tre passaggi.

La policy non concede le autorizzazioni previste

Per assegnare le autorizzazioni a un utente, gruppo, ruolo o risorsa, è necessario creare una policy, ovvero un documento che definisca le autorizzazioni. Il documento della policy include i seguenti elementi:

  • Effetto: indica se la policy consente o nega l'accesso

  • Azione: l'elenco delle operazioni consentite o rifiutate dalla policy

  • Risorsa: l'elenco delle risorse in cui possono essere eseguite le operazioni

  • Condizione (facoltativo): le circostanze in base alle quali la policy concede l'autorizzazione

Per informazioni su questi elementi di policy, consultare Documentazione di riferimento degli elementi delle policy JSON IAM.

Per garantire l'accesso, la policy deve definire un'operazione con una risorsa supportata. Se la policy include anche una condizione, tale condizione deve includere una chiave di condizione globale o deve essere applicata all'operazione. Per scoprire quali risorse sono supportate da un'operazione, consulta la documentazione di AWS relativa al servizio. Per sapere quali condizioni sono supportate da un'azione, consulta Azioni, risorse e chiavi di condizione per AWS i servizi.

Verifica se la policy definisce un'operazione, una risorsa o una condizione che non concede autorizzazioni. Visualizza il riepilogo delle policy relative alla tua policy utilizzando la console IAM all'indirizzo https://console.aws.amazon.com/iam/. È possibile utilizzare riepiloghi di policy per identificare e risolvere i problemi della policy.

Esistono diversi motivi per cui un elemento potrebbe non concedere autorizzazioni nonostante sia definito nella policy IAM:

Per visualizzare esempi di riepiloghi di policy che includono avvisi, consultare Riepilogo della policy (elenco di servizi).

Un'operazione è definita senza una risorsa applicabile

La policy di seguito definisce tutte le operazioni ec2:Describe* e definisce una risorsa specifica. Nessuna delle operazioni ec2:Describe viene permessa perché nessuna di tali operazioni supporta le autorizzazioni a livello di risorsa. Le autorizzazioni a livello di risorsa indicano che l'azione supporta l'utilizzo di risorse ARNsnell'elemento della policy. Resource Se un'operazione non supporta le autorizzazioni a livello di risorsa, tale istruzione della policy deve utilizzare un carattere jolly (*) nell'elemento Resource. Per scoprire i servizi che supportano le autorizzazioni a livello di risorsa, consultare AWS servizi che funzionano con IAM.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "arn:aws:ec2:us-east-2:111122223333:instance/*" } ] }

Questa policy non fornisce alcuna autorizzazione e il riepilogo della policy include il seguente errore:

This policy does not grant any permissions. To grant access, policies must have an action that has an applicable resource or condition.

Per correggere la policy, è necessario utilizzare * nell'elemento Resource.

JSON
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" }] }

Una risorsa è definita senza un'operazione applicabile

La policy di seguito definisce una risorsa del bucket Amazon S3 ma non include un'operazione S3 che può essere eseguita su tale risorsa. Questa politica garantisce inoltre l'accesso completo a tutte le CloudFront azioni di Amazon.

JSON
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "cloudfront:*", "Resource": [ "arn:aws:cloudfront:*", "arn:aws:s3:::amzn-s3-demo-bucket" ] }] }

Questa politica fornisce le autorizzazioni per tutte le CloudFront azioni. Tuttavia, poiché la policy definisce le risorse amzn-s3-demo-bucket di S3 senza definire alcuna operazione S3, il riepilogo della policy include il seguente avviso:

This policy defines some actions, resources, or conditions that do not provide permissions. To grant access, policies must have an action that has an applicable resource or condition.

Per correggere questa policy per fornire autorizzazioni del bucket S3, è necessario definire operazioni S3 che possono essere eseguite su una risorsa bucket.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudfront:*", "s3:CreateBucket", "s3:ListBucket*", "s3:PutBucket*", "s3:GetBucket*" ], "Resource": [ "arn:aws:cloudfront:*", "arn:aws:s3:::amzn-s3-demo-bucket" ] } ] }

In alternativa, per correggere questa politica e fornire solo le CloudFront autorizzazioni, rimuovi la risorsa S3.

Una condizione è definita senza un'operazione applicabile

La policy di seguito definisce due operazioni Amazon S3 per tutte le risorse S3, se il prefisso S3 è uguale a custom e l'ID della versione è uguale a 1234. Tuttavia, la chiave della condizione s3:VersionId viene utilizzata per il tagging della versione dell'oggetto e non è supportata dalle operazioni bucket definite. Per sapere quali condizioni sono supportate da un'azione, consulta Azioni, risorse e chiavi di condizione per AWS i servizi e scegli il servizio per visualizzare la documentazione del servizio relativa alle chiavi di condizione.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucketVersions", "s3:ListBucket" ], "Resource": "*", "Condition": { "StringEquals": { "s3:prefix": [ "custom" ], "s3:VersionId": [ "1234" ] } } } ] }

Questa policy fornisce le autorizzazioni per l'operazione s3:ListBucketVersions e l'operazione s3:ListBucket se il nome del bucket include il prefisso custom. Tuttavia, poiché la condizione s3:VersionId non è supportata da nessuna delle operazioni definite, il riepilogo della policy include il seguente errore:

This policy does not grant any permissions. To grant access, policies must have an action that has an applicable resource or condition.

Per correggere questa policy e utilizzare il tagging della versione dell'oggetto S3, è necessario definire un'operazione S3 che supporti la chiave della condizione s3:VersionId.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucketVersions", "s3:ListBucket", "s3:GetObjectVersion" ], "Resource": "*", "Condition": { "StringEquals": { "s3:prefix": [ "custom" ], "s3:VersionId": [ "1234" ] } } } ] }

Questa policy fornisce le autorizzazioni per ogni operazione e condizione nella policy. Tuttavia, la policy non fornisce nessuna autorizzazione perché non esiste un caso in cui una singola operazione corrisponda a entrambe le condizioni. Al contrario, è necessario creare due dichiarazioni separate che includano ciascuna solo le operazioni con le condizioni a cui si applicano.

Per correggere questa policy, è necessario creare due istruzioni. La prima istruzione include le operazioni che supportano la condizione s3:prefix e la seconda istruzione include le operazioni che supportano la condizione s3:VersionId.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucketVersions", "s3:ListBucket" ], "Resource": "*", "Condition": { "StringEquals": { "s3:prefix": "custom" } } }, { "Effect": "Allow", "Action": "s3:GetObjectVersion", "Resource": "*", "Condition": { "StringEquals": { "s3:VersionId": "1234" } } } ] }

Risoluzione dei problemi di gestione delle policy

È possibile individuare e risolvere i problemi correlati alla gestione delle policy.

Collegamento o scollegamento di una policy in un account IAM

Alcune politiche AWS gestite sono collegate a un servizio. Queste policy vengono utilizzate solo con un ruolo collegato a un servizio per tale servizio. Nella console IAM, quando si visualizza la pagina Dettagli della policy, sarà presente un banner per indicare che la policy è collegata a un servizio. Non è possibile collegare questa policy a un utente, un gruppo o un ruolo all'interno di IAM. Quando si crea un ruolo collegato al servizio per il servizio, questa policy viene automaticamente collegata al nuovo ruolo. Poiché la policy è obbligatoria, non è possibile distaccare la policy dal ruolo collegato al servizio.

Modifica delle policy per le identità IAM in base alla loro attività

È possibile aggiornare le policy per le identità IAM (utenti, gruppi e ruoli) in base alla loro attività. A tale scopo, visualizza gli eventi del tuo account nella CloudTrail Cronologia degli eventi. CloudTrail i registri degli eventi includono informazioni dettagliate sugli eventi che puoi utilizzare per modificare le autorizzazioni della politica.

Un utente o un ruolo sta tentando di eseguire un'azione in AWS e tale richiesta viene rifiutata.

Valuta se l'utente o il ruolo deve disporre dell'autorizzazione per eseguire l'operazione. In questo caso, è possibile aggiungere alla policy l'operazione e anche l'ARN della risorsa a cui cerca di accedere.

Un utente o un ruolo dispone di autorizzazioni che non utilizza.

Valuta la possibilità di rimuovere tali autorizzazioni dalla loro policy. Verifica che le policy concedano i privilegi minimi necessari per eseguire solo le operazioni necessarie.

Per ulteriori informazioni sull'utilizzo CloudTrail, vedere Visualizzazione CloudTrail degli eventi nella CloudTrail console nella Guida per l'AWS CloudTrail utente.

Risoluzione dei problemi relativi ai documenti di policy JSON

È possibile individuare e risolvere i problemi relativi ai documenti di policy JSON.

Convalida delle policy

Quando crei o si modifichi una policy JSON, IAM può eseguire la convalida delle policy per facilitare la creazione di una policy efficace. IAM identificherà gli errori di sintassi JSON, mentre IAM Access Analyzer fornisce ulteriori controlli delle policy con suggerimenti che consentono di perfezionare ulteriormente le policy. Per ulteriori informazioni sulla convalida delle policy, consulta Convalida delle policy IAM. Per ulteriori informazioni sui controlli di policy di IAM Access Analyzer e sui suggerimenti utili, consulta Convalida delle policy di IAM Access Analyzer.

Non ho autorizzazioni per la convalida di policy nell'editor JSON

In AWS Management Console, potresti ricevere il seguente errore se non disponi delle autorizzazioni per visualizzare i risultati di convalida delle policy di IAM Access Analyzer:

You need permissions. You do not have the permissions required to perform this operation. Ask your administrator to add permissions.

Per risolvere questo errore, chiedere all'amministratore di aggiungere l'autorizzazione access-analyzer:ValidatePolicy per proprio conto.

Più di un oggetto di policy JSON

Una policy IAM deve essere costituita da un solo oggetto JSON. È possibile denotare un oggetto racchiudendolo tra parentesi graffe { }. Puoi nidificare altri oggetti all'interno di un oggetto JSON incorporando ulteriori parentesi graffe { } all'interno della coppia esterna. Una policy deve contenere solo una coppia più esterna di { } parentesi graffe. L'esempio seguente non è corretto perché contiene due oggetti al livello superiore (richiamati in): red

JSON
{ "Version": "2012-10-17", "Statement": { "Effect":"Allow", "Action":"ec2:Describe*", "Resource":"*" } } { "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } }

Tuttavia, è possibile soddisfare l'intenzione dell'esempio precedente con l'uso di una corretta grammatica di policy. Anziché includere due oggetti di policy completi ciascuno con il proprio elemento Statement, è possibile combinare i due blocchi in un singolo elemento Statement. L'elemento Statement dispone di una serie di due oggetti come valore, come mostrato nell'esempio seguente (evidenziato in grassetto):

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource":" *" }, { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }

Più di un elemento di istruzione JSON

Questo errore potrebbe apparentemente sembrare una variazione della sezione precedente. Tuttavia, sintatticamente si tratta di un altro tipo di errore. L'esempio seguente include un solo oggetto della policy come indicato da una singola coppia di parentesi graffe { } al livello più alto. Tuttavia, quell'oggetto contiene due elementi Statement al suo interno.

Una policy IAM deve contenere solo un elemento Statement, che include il nome (Statement) che appare alla sinistra di due punti, seguito dal rispettivo valore sulla destra. Il valore di un elemento Statement deve essere un oggetto, contrassegnato da parentesi graffe {}, che contiene un elemento Effect, un elemento Action e un elemento Resource. L'esempio seguente non è corretto perché contiene due Statement elementi nell'oggetto policy (chiamato inred):

JSON
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" }, "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } }

Un oggetto valore può essere una matrice di oggetti a valore multiplo. Per risolvere questo problema, combinare i due elementi Statement in un unico elemento con una matrice di oggetti, come mostrato nell'esempio seguente (evidenziato in grassetto):

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource":"*" }, { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }

Il valore dell'elemento Statement è una matrice di oggetti. La matrice in questo esempio è costituita da due oggetti, ognuno dei quali è di per sé un valore corretto per un elemento Statement. Ogni oggetto nella matrice è separato da virgole.

Più di un elemento Effect, Action o Resource in un elemento di istruzione JSON

Per quanto riguarda i valori della Statement name/value coppia, l'oggetto deve essere costituito da un solo Effect elemento, un Action elemento e un Resource elemento. La policy seguente non è corretta poiché include due elementi Effect in Statement:

JSON
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Effect": "Allow", "Action": "ec2:* ", "Resource": "*" } }
Nota

Il motore di policy non permette tali errori nelle policy nuove o modificate. Tuttavia, il motore di policy permettere le policy che sono state salvate prima che il motore fosse aggiornato. Il comportamento delle policy esistenti con l'errore è il seguente:

  • Più elementi Effect: viene osservato solo l'ultimo elemento Effect. Gli altri valori vengono ignorati.

  • Più elementi Action: tutti gli elementi Action vengono combinati internamente e trattati come se fossero un unico elenco.

  • Più elementi Resource: tutti gli elementi Resource vengono combinati internamente e trattati come se fossero un unico elenco.

ll motore di policy non permette di salvare alcuna policy con errori di sintassi. Correggi gli errori nella policy prima di salvarla. Rivedi e correggi tutti i suggerimenti di convalida delle policy per le tue policy.

In ogni caso, la soluzione consiste nel rimuovere l'elemento aggiuntivo. Per Effect quanto riguarda gli elementi, questo è semplice: se desideri che l'esempio precedente neghi le autorizzazioni alle istanze EC2 Amazon, devi rimuovere la "Effect": "Allow", riga dalla politica, come segue:

JSON
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "ec2:*", "Resource": "*" } }

Tuttavia, se l'elemento duplicato è Action oppure Resource, la risoluzione può essere più complicata. Potrebbero essere presenti più operazioni per cui si desidera permettere (o rifiutare) l'autorizzazione oppure si potrebbe voler controllare l'accesso a più risorse. Ad esempio, l'esempio seguente non è corretto perché contiene più Resource elementi (richiamati in): red

JSON
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } }

Tutti gli elementi necessari in un oggetto valore di un elemento Statement può essere presente una sola volta. La soluzione consiste nel posizionare ogni valore in una matrice. L'esempio che segue illustra questa operazione separando i due elementi risorsa in un elemento Resource con una matrice come valore oggetto (evidenziata in grassetto):

JSON
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } }

Elemento versione JSON mancante

Un elemento di policy Version è diverso da una versione di policy. L'elemento di policy Version viene utilizzato all'interno di una policy e definisce la versione del linguaggio di policy. Per contro, una versione della policy viene creata quando si modifica una policy gestita dal cliente in IAM. La policy modificata non viene sovrascritta a quella precedente. IAM crea invece una nuova versione della policy gestita. Per ulteriori informazioni sull'elemento di policy Version, consultare Elementi delle policy JSON IAM: Version. Per ulteriori informazioni sulle versioni di policy, consultare Controllo delle versioni delle policy IAM.

Man mano che AWS le funzionalità si evolvono, vengono aggiunte nuove funzionalità alle policy IAM per supportarle. A volte, un aggiornamento della sintassi della policy include un nuovo numero di versione. Se si utilizzano le caratteristiche più recenti della grammatica di policy nella policy, è necessario indicare al motore di analisi delle policy quale versione si sta utilizzando. La versione di policy predefinita è "2008-10-17". Se si desidera utilizzare qualsiasi funzione di policy introdotta successivamente, è necessario specificare il numero di versione che supporta la funzionalità desiderata. Si consiglia di includere sempre il numero di versione della sintassi di policy più recente, che è al momento "Version": "2012-10-17". Ad esempio, la policy seguente non è corretta perché utilizza una variabile di policy ${...} nell'ARN per una risorsa. Ma non riesce a specificare una versione della sintassi delle policy che supporti le variabili di policy (richiamate inred):

{ "Statement": { "Action": "iam:*AccessKey*", "Effect": "Allow", "Resource": "arn:aws:iam::123456789012:user/${aws:username}" } }

Aggiungendo un elemento Version nella parte superiore della policy con il valore 2012-10-17, la prima versione di API IAM che supporta variabili di policy, è possibile risolvere il problema (evidenziato in grassetto):

JSON
{ "Version": "2012-10-17", "Statement": { "Action": "iam:*AccessKey*", "Effect": "Allow", "Resource": "arn:aws:iam::123456789012:user/${aws:username}" } }