Wie kann ich den IAM-Vertrauensrichtlinien-Fehler „Vertrauensrichtlinie konnte nicht aktualisiert werden. Ungültiger Prinzipal in der Richtlinie.“ beheben?

Lesedauer: 4 Minute
0

Ich erhalte die Fehlermeldung „Vertrauensrichtlinie konnte nicht aktualisiert werden. Ungültiger Prinzipal in der Richtlinie.“ beim Versuch, die Vertrauensrichtlinie für meine AWS Identity and Access Management (IAM)-Rolle 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. Überprüfen Sie Folgendes, um diesen Fehler zu beheben:

  • Ihre IAM-Rollenvertrauensrichtlinie verwendet unterstützte Werte mit der richtigen Formatierung für das Principal-Element.
  • Wenn die IAM-Rollenvertrauensrichtlinie IAM-Identitäten (Benutzer, Benutzergruppen und 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 Unterschiede zwischen IAM für AWS GovCloud (USA).

Behebung

Überprüfen Sie die 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 enthält, die der folgenden ähnelt:
"Principal": {
"AWS": "123456789012"
}

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

  1. 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"
  ]
}
  1. Wenn die IAM-Vertrauensrichtlinie Platzhalter enthält, befolgen Sie diese Angaben.

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 Condition-Element 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 Principal-Element mit dem Allow-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 Dienstprinzipale 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 die 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 dieser Beispiel-Vertrauensrichtlinie wird der Bedingungsschlüssel aws:PrincipalArn verwendet, um nur Benutzern mit übereinstimmenden Benutzernamen zu gestatten, die IAM-Rolle anzunehmen.

  1. 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"
}
  1. 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"
}
  1. Sie können Web-Identitätssitzungsprinzipale verwenden, um IAM-Benutzer zu authentifizieren. Die Vertrauensrichtlinie der IAM-Rolle, die den Zugriff bereitstellt, muss ein Principal-Element ähnlich dem folgenden enthalten:
"Principal": {
  "Federated": "cognito-identity.amazonaws.com"
}
  1. 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"
    }
  ]
}

Der IAM-Benutzer oder die IAM-Rolle muss eine bestehende 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 werden. Der Fehler „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.

Ä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?

Warum gibt es in meiner ressourcenbasierten IAM-Richtlinie ein unbekanntes Prinzipalformat?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren