Wie kann ich den IAM-Vertrauensrichtlinienfehler „Failed to update trust policy. Invalid principal in policy“ (Vertrauensrichtlinie konnte nicht aktualisiert werden. Ungültiger Prinzipal in Richtlinie) beheben?

Lesedauer: 4 Minute
0

Ich erhalte den Fehler „Failed to update trust policy. Invalid principal in policy“ (Vertrauensrichtlinie konnte nicht aktualisiert werden. Ungültiger Prinzipal in Richtlinie) beim Versuch, die Vertrauensrichtlinie für meine AWS-Identity-and-Access-Management-Rolle (IAM) mithilfe der AWS-Managementkonsole zu bearbeiten.

Kurzbeschreibung

Diese Fehlermeldung weist darauf hin, dass der Wert eines Prinzipal-Elements in Ihrer IAM-Vertrauensrichtlinie nicht gültig ist. Stellen Sie zur Behebung dieses Problems Folgendes sicher:

  • Ihre IAM-Rollenvertrauensrichtlinie verwendet unterstützte Werte mit korrekter Formatierung für das Prinzipal-Element.
  • Wenn die IAM-Rollenvertrauensrichtlinie IAM-Identitäten (Benutzer, Benutzergruppen und Rollen) als Prinzipale verwendet, vergewissern Sie sich, dass der Benutzer oder die Rolle nicht gelöscht wurde.

Hinweis: Bei den Konten von AWS GovCloud (USA) wird dieser Fehler möglicherweise auch angezeigt, wenn das AWS-Standardkonto versucht, die Kontonummer von AWS GovCloud (USA) hinzuzufügen. Sie können keine Rolle erstellen, um den Zugriff zwischen einem Konto von AWS GovCloud (USA) und einem AWS-Standardkonto zu delegieren. Weitere Informationen finden Sie unter Wie sich IAM für AWS GovCloud (USA) unterscheidet.

Lösung

Überprüfen der unterstützten Werte für das Prinzipal-Element

Das Prinzipal-Element in der IAM-Vertrauensrichtlinie Ihrer Rolle muss die folgenden unterstützten Werte enthalten.

1.    Stellen Sie sicher, dass die IAM-Richtlinie die richtige 12-stellige AWS-Konto-ID von AWS in folgender Form enthält:

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

Hinweis: Das AWS-Konto kann auch mit dem Amazon-Ressourcenname (ARN) des Root-Benutzers angegeben werden. Zum Beispiel arn:aws:iam::123456789012:root.

2.    Wenn die Prinzipale der IAM-Vertrauensrichtlinien IAM-Benutzer, Rollen oder Verbundbenutzer sind, dann muss der gesamte ARN wie folgt angegeben werden:

"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.    3    Wenn die IAM-Vertrauensrichtlinie Platzhalter enthält, dann befolgen Sie diese Anweisungen.

Hinweis: Sie können einen Platzhalter „*“ nicht für einen Teil eines Prinzipal-Namens oder ARN verwenden.

Im folgenden Beispiel wurde ein Platzhalter in einer IAM-Vertrauensrichtlinie falsch verwendet:

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

Um einen Teil des Prinzipal-Namens durch einen Platzhalters zu ersetzen, verwenden Sie ein Condition-Element mit dem globalen Bedingungsschlüssel aws:PrincipalArn. Geben Sie dann einen ARN mit dem Platzhalter an.

Um Identitäten aus allen AWS-Konten anzugeben, verwenden Sie einen Platzhalter folgender Art:

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

Wichtig: Sie können in einer Vertrauensrichtlinie im Prinzipal-Element einen Platzhalter mit dem Effekt „Zulassen“ verwenden. Dadurch kann jedoch jeder IAM-Benutzer, jede übernommene Rollensitzung oder jeder Verbundbenutzer in jedem AWS-Konto in derselben Partition auf Ihre Rolle zugreifen. IAM-Benutzer und Rollenprinzipale in Ihrem AWS-Konto erfordern keine weiteren Berechtigungen. Prinzipale in anderen AWS-Konten müssen über identitätsbasierte Berechtigungen verfügen, um Ihre IAM-Rolle zu übernehmen.

Mit dieser Methode können Prinzipale für Webidentitätssitzungen, Prinzipale für SAML-Sitzungen oder Serviceprinzipale nicht auf Ihre Ressourcen zugreifen.

Es hat sich bewährt, diese Methode nur mit dem Condition-Element und einem Bedingungsschlüssel wie aws:PrincipalArn zu verwenden, um Berechtigungen einzuschränken. Ihre Datei könnte beispielsweise wie folgt aussehen:

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

In diesem Beispiel einer Vertrauensrichtlinie wird der Bedingungsschlüssel aws:PrincipalArn verwendet, damit nur Benutzer mit übereinstimmenden Benutzernamen die IAM-Rolle übernehmen können.

4.    Wenn Ihre IAM-Rolle eine AWS-Servicerolle ist, dann muss der gesamte Serviceprinzipal wie folgt angegeben werden:

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

5.    Sie können Prinzipale für SAML-Sitzungen mit einem externen SAML-Identitätsanbieter verwenden, um IAM-Benutzer zu authentifizieren. Die Vertrauensrichtlinie der IAM-Rolle muss über ein Prinzipal-Element folgender Art verfügen:

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

6.    Sie können Prinzipale für Webidentitätssitzungen zur Authentifizierung von IAM-Benutzern verwenden. Die Vertrauensrichtlinie der IAM-Rolle, die Zugriff ermöglicht, muss über ein Prinzipal-Element folgender Art verfügen:

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

7.    Wenn Sie verschiedene Arten von Prinzipalen in einer einzigen Anweisung verwenden, dann formatieren Sie die IAM-Vertrauensrichtlinie wie folgt:

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

Der IAM-Benutzer oder die IAM-Rolle muss eine vorhandene Identität sein

Wenn die IAM-Rollenvertrauensrichtlinie IAM-Benutzer oder -Rollen als Prinzipale verwendet, stellen Sie sicher, dass diese IAM-Identitäten nicht gelöscht wurden. Der Fehler „Invalid principal in policy“ (Ungültiger Prinzipal in Richtlinie) tritt auf, wenn Sie die IAM-Vertrauensrichtlinie ändern und der Prinzipal gelöscht wurde.

Hinweis: Wenn der Prinzipal gelöscht wurde, notieren Sie die eindeutige ID des Prinzipals in der IAM-Vertrauensrichtlinie und nicht den ARN.


Zugehörige Informationen

Wie kann ich mit AWS Identity and Access Management (IAM) Benutzern den Zugriff auf Ressourcen gewähren?

Wie greife ich mit AWS IAM auf Ressourcen in einem anderen AWS-Konto zu?

Warum enthält meine ressourcenbasierte IAM-Richtlinie ein unbekanntes Prinzipal-Format?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr