Come posso risolvere l'errore della policy di attendibilità di IAM "Failed to update trust policy. Invalid principal in policy"?

5 minuti di lettura
0

Ho provato a modificare la policy di attendibilità per l'utente o il ruolo della mia identità AWS Identity and Access Management (IAM) e ho ricevuto l'errore seguente: "Failed to update trust policy. Invalid principal in policy."

Breve descrizione

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

  • La policy di attendibilità del tuo ruolo IAM utilizza valori supportati con un formato corretto per l'elemento Principale.
  • Se la policy di attendibilità del ruolo IAM usa un utente o un ruolo IAM come principale, verifica che l'utente o il ruolo non sia stato eliminato.

Nota: se l'account AWS standard tenta di aggiungere il numero di account AWS GovCloud (Stati Uniti), anche gli account AWS GovCloud (Stati Uniti) potrebbero ricevere questo errore. Non è possibile creare un ruolo per delegare l'accesso tra un account AWS GovCloud (Stati Uniti) e un account AWS standard. Per ulteriori informazioni, consulta How IAM Differs for AWS GovCloud (US).

Risoluzione

Verifica i valori supportati per l'elemento principale

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

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

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

    Nota: puoi anche utilizzare il nome della risorsa Amazon (ARN) dell'utente root per specificare l'account AWS. Ad esempio, arn:aws:iam::123456789012:root.

  2. Se i principali della policy di attendibilità IAM sono utenti, ruoli o utenti federati IAM, allora 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à di IAM include un carattere jolly, segui queste linee guida.
    Nota: non puoi utilizzare un carattere jolly "*" per trovare una corrispondenza con parte del nome del Principale o dell'ARN. L'esempio seguente mostra un uso errato di un carattere jolly in una policy di attendibilità IAM:

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

    Per usare un carattere jolly per trovare una corrispondenza con una parte del nome del principale, usa un elemento Condizione con la chiave di condizione globale aws:PrincipalArn. Quindi specifica un ARN con il carattere jolly. Per specificare le identità di tutti gli account AWS, utilizza un carattere jolly simile al seguente:

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

    Importante: puoi utilizzare un carattere jolly nell'elemento Principale con un effetto Consenti in una policy di attendibilità. Tuttavia, ciò consente a qualsiasi utente IAM, sessione con ruolo assunto o utente federato in qualsiasi account AWS nella stessa partizione di accedere al tuo ruolo. Gli utenti e i ruoli principali IAM all'interno del tuo account AWS non richiedono altre autorizzazioni. I principali di altri account AWS devono disporre di autorizzazioni basate sull'identità per assumere il tuo ruolo IAM. Questo metodo non consente ai principali delle sessioni di identità web, delle sessioni SAML o dei servizi di accedere alle tue risorse. È consigliabile utilizzare questo metodo solo con l'elemento Condizione e una chiave di condizione come aws:PrincipalArn per limitare le autorizzazioni. L'esempio di policy di attendibilità che segue utilizza la chiave di condizione aws:PrincipalArn per consentire solo agli utenti con nomi utente corrispondenti di assumere il ruolo IAM:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "*"
          },
          "Action": "sts:AssumeRole",
          "Condition": {
            "StringLike": {
              "aws:PrincipalArn": "arn:aws:iam::123456789012:user/user-*"
            }
          }
        }
      ]
    }
  4. Se il tuo ruolo IAM è un ruolo di servizio AWS, il principale dell'intero servizio deve essere specificato in modo simile al seguente:

    "Principal": {
      "Service": "ec2.amazonaws.com"
    }
  5. Puoi utilizzare i principali delle sessioni SAML con un gestore dell'identità SAML esterno per autenticare gli utenti IAM. La policy di attendibilità del ruolo IAM deve avere un elemento Principale simile al seguente:

    "Principal": {
      "Federated": "arn:aws:iam::123456789012:saml-provider/provider-name"
    }
  6. Puoi utilizzare i principali delle sessioni di identità web per autenticare gli utenti IAM. La policy di attendibilità del ruolo IAM che fornisce l'accesso deve avere un elemento Principale simile al seguente:

    "Principal": {
       "Federated": "cognito-identity.amazonaws.com"
    }
  7. Se utilizzi diversi tipi di principali all'interno di una singola istruzione, formatta la policy di attendibilità IAM in modo simile alla seguente:

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

Verifica che la policy di attendibilità non contenga prefissi AIDA o AROA

Se la tua policy di attendibilità contiene un elemento Principale con un ARN per le entità IAM, l'ARN cambia in un ID principale univoco quando viene salvato. Questo ID principale univoco ha il prefisso AIDA per gli utenti IAM e AROA per i ruoli IAM, come nell'esempio seguente:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "AIDAW4GTDFISYQEXAMPLE",
          "AROAW4GTDFISYQEXAMPLE"
        ]
      },
      "Action": "sts:AssumeRole",
      "Condition": {}
    }
  ]
}

L'ID principale univoco in una policy di attendibilità indica che l'utente o il ruolo IAM è stato eliminato. L'ID principale viene visualizzato perché AWS non trova una corrispondenza con un ARN valido. Se modifichi la policy di attendibilità, devi rimuovere l'ID principale o sostituirlo con un ARN principale valido. L'ARN assumerà il valore del nuovo ID univoco dell'utente o del ruolo dopo il salvataggio della policy.

Per ulteriori informazioni, consulta Perché c'è un formato principale sconosciuto nella mia policy basata sulle risorse IAM?

Informazioni correlate

Come faccio a usare IAM per consentire agli utenti di accedere alle risorse?

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