Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Wie behebe ich den IAM-Vertrauensrichtlinien-Fehler „Failed to update trust policy. Invalid principal in policy“?
Ich habe versucht, die Vertrauensrichtlinie für meinen AWS Identity and Access Management (IAM, Identitäts- und Zugriffsmanagement)-Identitätsbenutzer oder meine Rolle zu bearbeiten, und habe die folgende Fehlermeldung erhalten: „Failed to update trust policy. Invalid principal in policy.“
Kurzbeschreibung
Diese Fehlermeldung weist darauf hin, dass der Wert eines Prinzipal-Elements in Ihrer IAM-Vertrauensrichtlinie nicht gültig ist. Überprüfen Sie Folgendes, um diesen Fehler zu beheben:
- Ihre IAM-Rollenvertrauensrichtlinie verwendet unterstützte Werte mit dem richtigen Format für das Prinzipal-Element.
- Wenn die IAM-Rollenvertrauensrichtlinie IAM-Benutzer oder -Rollen als Prinzipale verwendet, stellen Sie sicher, dass der Benutzer oder die Rolle nicht gelöscht wurde.
Hinweis: Bei Konten von AWS GovCloud (US) wird dieser Fehler möglicherweise auch angezeigt, wenn das AWS-Standardkonto versucht, die AWS GovCloud (US)-Kontonummer hinzuzufügen. Sie können keine Rolle erstellen, um den Zugriff zwischen einem AWS GovCloud (US)-Konto und einem AWS-Standardkonto zu delegieren. Weitere Informationen finden Sie unter So unterscheidet sich das IAM bei AWS GovCloud (USA).
Lösung
Überprüfen Sie die unterstützten Werte für das Prinzipal-Element
Das Prinzipal-Element in der IAM-Vertrauensrichtlinie der Rolle muss die folgenden unterstützten Werte enthalten.
-
Stellen Sie sicher, dass die IAM-Richtlinie die richtige 12-stellige AWS-Konto-ID enthält, die der folgenden ähnelt:
"Principal": {"AWS": "123456789012" }
Hinweis: Sie können auch den Amazon-Ressourcennamen (ARN) des Root-Benutzers verwenden, um das AWS-Konto anzugeben. Zum Beispiel arn:aws:iam::123456789012:root.
-
Wenn es sich bei den IAM-Vertrauensrichtlinienprinzipalen um IAM-Benutzer, Rollen oder Verbundbenutzer handelt, muss der gesamte ARN ähnlich 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" ] }
-
Wenn die IAM-Vertrauensrichtlinie Platzhalter enthält, befolgen Sie diese Leitlinien.
Hinweis: Sie können keinen Platzhalter „*“ verwenden, um einen Teil eines Prinzipalnamens oder ARN abzugleichen. Im folgenden Beispiel wird ein Platzhalter in einer IAM-Vertrauensrichtlinie falsch verwendet:"Principal": { "AWS": "arn:aws:iam::123456789012:user/user-*" }
Um einen Teil des Prinzipalnamens mithilfe eines Platzhalters abzugleichen, verwenden Sie ein Element Bedingung mit dem globalen Bedingungsschlüssel aws:PrincipalArn. Geben Sie dann einen ARN mit dem Platzhalter an. Um Identitäten aller AWS-Konten anzugeben, verwenden Sie einen Platzhalter, der dem folgenden ähnelt:
"Principal": { "AWS": "*" }
Wichtig: Sie können einen Platzhalter im Prinzipal-Element mit dem Zulassen-Effekt in einer Vertrauensrichtlinie verwenden. Dadurch kann jedoch jeder IAM-Benutzer, jede angenommene Rollensitzung oder jeder Verbundbenutzer in einem beliebigen AWS-Konto in derselben Partition auf Ihre Rolle zugreifen. IAM-Benutzer und Rollenprinzipale in Ihrem AWS-Konto benötigen keine weiteren Berechtigungen. Prinzipals in anderen AWS-Konten müssen über identitätsbasierte Berechtigungen verfügen, um Ihre IAM-Rolle übernehmen zu können. Bei dieser Methode können Web-Idenititätssitzungsprinzipale, SAML-Sitzungsprinzipale oder Service-Prinzipale nicht auf Ihre Ressourcen zugreifen. Es hat sich bewährt, diese Methode nur mit dem Element Bedingung und einem Bedingungsschlüssel wie aws:PrincipalArn zu verwenden, um die Berechtigungen einzuschränken. In der folgenden Beispiel-Vertrauensrichtlinie wird der Bedingungsschlüssel aws:PrincipalArn verwendet, um nur Benutzern mit übereinstimmenden Benutzernamen zu gestatten, die IAM-Rolle zu übernehmen:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:PrincipalArn": "arn:aws:iam::123456789012:user/user-*" } } } ] }
-
Wenn es sich bei Ihrer IAM-Rolle um eine AWS-Servicerolle handelt, muss der gesamte Service-Prinzipal ähnlich wie folgt angegeben werden:
"Principal": { "Service": "ec2.amazonaws.com" }
-
Sie können SAML-Sitzungsprinzipale mit einem externen SAML-Identitätsanbieter verwenden, um IAM-Benutzer zu authentifizieren. Die Vertrauensrichtlinie der IAM-Rolle muss ein Prinzipal-Element enthalten, das dem folgenden ähnelt:
"Principal": { "Federated": "arn:aws:iam::123456789012:saml-provider/provider-name" }
-
Sie können Web-Identitätssitzungsprinzipale verwenden, um IAM-Benutzer zu authentifizieren. Die Vertrauensrichtlinie der IAM-Rolle, die den Zugriff bereitstellt, muss ein Prinzipal-Element ähnlich dem folgenden enthalten:
"Principal": { "Federated": "cognito-identity.amazonaws.com" }
-
Wenn Sie in einer einzelnen Anweisung verschiedene Prinzipaltypen verwenden, formatieren Sie die IAM-Vertrauensrichtlinie ähnlich 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" } ] }
Sicherstellen, dass die Vertrauensrichtlinie keine AIDA- oder AROA-Präfixe enthält
Wenn die Vertrauensrichtlinie ein Prinzipal-Element mit einem ARN für IAM-Entitäten enthält, ändert sich der ARN beim Speichern in eine eindeutige Prinzipal-ID. Diese eindeutige Prinzipal-ID hat das Präfix AIDA für IAM-Benutzer und AROA für IAM-Rollen, in etwa wie folgt:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "AIDAW4GTDFISYQEXAMPLE", "AROAW4GTDFISYQEXAMPLE" ] }, "Action": "sts:AssumeRole", "Condition": {} } ] }
Die eindeutige Prinzipal-ID in einer Vertrauensrichtlinie gibt an, dass der IAM-Benutzer oder die IAM-Rolle gelöscht wurde. Die Prinzipal-ID wird angezeigt, weil AWS sie keinem gültigen ARN zuordnen kann. Wenn Sie die Vertrauensrichtlinie bearbeiten, müssen Sie entweder die Prinzipal-ID entfernen oder sie durch einen gültigen Prinzipal-ARN ersetzen. Der ARN ändert sich in die neue eindeutige ID des Benutzers oder der Rolle, nachdem Sie die Richtlinie gespeichert haben.
Weitere Informationen finden Sie unter Warum enthält meine ressourcenbasierte IAM-Richtlinie ein unbekanntes Prinzipalformat?
Ähnliche Informationen
Wie verwende ich IAM, um Benutzern den Zugriff auf Ressourcen zu ermöglichen?
Wie greife ich mit AWS IAM auf Ressourcen in einem anderen AWS-Konto zu?

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Jahr