Come posso risolvere l'errore della policy di attendibilità IAM "Impossibile aggiornare la policy di attendibilità. Principale non valido nella policy"?

5 minuti di lettura
0

Ricevo l'errore "Impossibile aggiornare la policy di attendibilità". Principale non valido nella policy. "quando provo a modificare la policy di attendibilità per il mio ruolo AWS Identity and Access Management (IAM) utilizzando la Console di gestione AWS.

Breve descrizione

Questo messaggio di errore indica che il valore di un elemento Principal nella policy di attendibilità IAM non è valido. Per risolvere l'errore, verifica quanto segue:

  • La policy di attendibilità del ruolo IAM utilizza i valori supportati con la formattazione corretta per l'elemento principale.
  • Se la policy di attendibilità del ruolo IAM utilizza identità IAM (utenti, gruppi di utenti e ruoli) come principali, quindi verifica che l'utente o il ruolo non sia stato eliminato.

Nota: gli account AWS GovCloud (Stati Uniti) potrebbero ricevere questo errore anche se l'account AWS standard tenta di aggiungere il numero di account AWS GovCloud (Stati Uniti). Non puoi creare un ruolo per delegare l'accesso tra un account AWS GovCloud (Stati Uniti) e un account AWS standard. Per ulteriori informazioni, consulta In che modo IAM differisce per AWS GovCloud (Stati Uniti).

Risoluzione

Verifica i valori supportati per l'elemento Principal

L'elemento Principal nella policy di attendibilità IAM del tuo ruolo deve includere i seguenti valori supportati.

1.    Assicurati che la policy IAM includa l'ID account AWS a 12 cifre corretto, simile al seguente:

"Principal": {
"AWS": "123456789012"
}

Nota: l'account AWS può essere specificato anche utilizzando l'Amazon Resource Name (ARN) dell’utente root. Ad esempio, arn:aws:iam::123456789012:root.

2.    Se i principali delle policy di attendibilità IAM sono utenti, ruoli o utenti federati IAM, l'intero ARN deve essere specificato in modo simile al seguente:

"Principal": {
  "AWS": [
    "arn:aws:iam::123456789012:user/user-name",
    "arn:aws:iam::123456789012:role/role-name",
    "arn:aws:sts::123456789012:assumed-role/role-name/role-session-name",
    "arn:aws:sts::123456789012:federated-user/user-name"
  ]
}

3.    Se la policy di attendibilità IAM include caratteri jolly, segui queste linee guida.

Nota: non è possibile utilizzare un carattere jolly "*" per far corrispondere parte del nome di un principale o un ARN.

L'esempio seguente riporta un uso non corretto di un carattere jolly in una policy di attendibilità IAM:

"Principal": {
  "AWS": "arn:aws:iam::123456789012:user/user-*"
}

Per far corrispondere parte del nome del principale tramite un carattere jolly, utilizza un elemento Condition con la chiave di condizione globale aws:PrincipalArn. Quindi, specifica un ARN con il jolly.

Per specificare le identità di tutti gli account AWS, utilizza un carattere jolly simile al seguente:

"Principal": {
  "AWS": "*"
}

Importante: è possibile utilizzare un carattere jolly nell'elemento Principal con un effetto Consenti in una policy di attendibilità. Tuttavia, ciò consente a qualsiasi utente IAM, sessione di ruolo presunta o utente federato in qualsiasi account AWS nella stessa partizione di accedere al ruolo. Per gli utenti e i principali del ruolo IAM all'interno del tuo account AWS non sono richieste altre autorizzazioni. Per assumere il tuo ruolo IAM, i principali in altri account AWS, devono disporre di autorizzazioni basate sull'identità.

Questo metodo non consente ai principali di sessione di identità Web, ai principali di sessione SAML o ai principali di servizio di accedere alle risorse.

Come best practice, utilizza questo metodo solo con l'elemento Condition e una chiave di condizione come aws:PrincipalArn per limitare le autorizzazioni. Ad esempio, il tuo file potrebbe avere un aspetto simile al seguente:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringLike": {
          "aws:PrincipalArn": "arn:aws:iam::123456789012:user/user-*"
        }
      }
    }
  ]
}

Questo esempio di policy di attendibilità utilizza la chiave condizionale aws:PrincipalArn per consentire solo agli utenti con nomi utente corrispondenti di assumere il ruolo IAM.

4.    Se il tuo ruolo IAM è un ruolo di servizio AWS, l'intero principale del servizio deve essere specificato in modo simile al seguente:

"Principal": {
  "Service": "ec2.amazonaws.com"
}

5.    È possibile utilizzare i principali di sessione SAML con un provider di identità SAML esterno per autenticare gli utenti IAM. La policy di attendibilità del ruolo IAM deve avere un elemento Principal simile al seguente:

"Principal": {
  "Federated": "arn:aws:iam::123456789012:saml-provider/provider-name"
}

6.    È possibile utilizzare i principali di sessione di identità Web per autenticare gli utenti IAM. La policy di attendibilità del ruolo IAM che fornisce l'accesso deve avere un elemento Principal simile al seguente:

"Principal": { 
  "Federated": "cognito-identity.amazonaws.com" 
}

7.    Se all'interno di una singola istruzione utilizzi diversi tipi di principali, formatta la policy di attendibilità IAM in modo simile al seguente:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:user/user-name",
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

L'utente o il ruolo IAM deve essere un'identità esistente

Se la policy di attendibilità del ruolo IAM utilizza utenti o ruoli IAM come principali, verifica che tali identità IAM non vengano eliminate. L'errore "Principale non valido nella policy" si verifica se si modifica la policy di attendibilità IAM e il principale è stato eliminato.

Nota: se il principale è stato eliminato, prendi nota dell'ID univoco del principale nella policy di attendibilità IAM e non dell'ARN.


Informazioni correlate

In che modo è possibile usare AWS Identity and Access Management (IAM) per gestire gli accessi degli utenti alle risorse?

Come posso accedere alle risorse in un altro account AWS utilizzando AWS IAM?

Perché c'è un formato principale sconosciuto nella mia policy basata sulle risorse IAM?

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa