AWS-JSON-Richtlinienelemente: NotPrincipal - AWS Identitäts- und Zugriffsverwaltung

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

AWS-JSON-Richtlinienelemente: NotPrincipal

Sie können das NotPrincipal-Element verwenden, um allen Prinzipalen den Zugriff zu verweigern, mit Ausnahme des IAM-Benutzers, Verbundbenutzers, der IAM-Rolle, des AWS-Konto, AWS-Services oder eines anderen im NotPrincipal-Element angegebenen Prinzipals.

Sie können es in ressourcenbasierten Richtlinien für einige AWS-Services verwenden, einschließlich VPC-Endpunkte. Ressourcenbasierte Richtlinien sind Richtlinien, die Sie direkt in eine Ressource einbinden. Sie können das NotPrincipal-Element weder in einer identitätsbasierten IAM-Richtlinie noch in einer IAM-Rollenvertrauensrichtlinie verwenden.

NotPrincipal muss mit "Effect":"Deny" verwendet werden. Die Verwendung mit "Effect":"Allow" wird nicht unterstützt.

Wichtig

Nur sehr wenige Szenarien erfordern die Verwendung von NotPrincipal. Wir empfehlen Ihnen, andere Autorisierungsoptionen zu erkunden, bevor Sie sich für die Verwendung von NotPrincipal entscheiden. Wenn Sie NotPrincipal verwenden, kann die Fehlerbehebung bei den Auswirkungen mehrerer Richtlinientypen schwierig sein. Wir empfehlen, stattdessen den aws:PrincipalArn-Kontextschlüssel mit ARN-Bedingungsoperatoren zu verwenden. Weitere Informationen finden Sie unter Alle Prinzipale.

Spezifizieren von NotPrincipal mit Deny

Wenn Sie NotPrincipal mit Deny verwenden, müssen Sie auch den Konto-ARN des zugelassenen Auftraggebers angeben. Andernfalls könnte durch die Richtlinie der Zugriff auf das gesamte Konto mit dem Auftraggeber verweigert werden. Abhängig vom Service, den Sie in Ihre Richtlinien einschließen, validiert AWS möglicherweise erst das Konto und dann den Benutzer. Wenn ein Benutzer mit übernommener Rolle (also ein Benutzer, der eine Rolle verwendet) bewertet wird, prüft AWS möglicherweise zunächst das Konto und anschließend den Benutzer mit übernommener Rolle. Der Benutzer mit übernommener Rolle wird anhand des Namens der Rollensitzung identifiziert, die bei der Übernahme der Rolle durch den Benutzer angegeben wurde. Aus diesem Grund empfehlen wir dringend, dass Sie den ARN für das Konto eines Benutzers oder sowohl den ARN einer Rolle als auch den ARN für das Konto, das die Rolle enthält, mit aufnehmen.

Wichtig

Verwenden Sie keine ressourcenbasierten Richtlinienanweisungen, die ein NotPrincipal-Richtlinienelement mit einer Deny-Wirkung für IAM-Benutzer oder -Rollen enthalten, denen eine Richtlinie mit Berechtigungsgrenzen angefügt ist. Das NotPrincipal-Element mit Deny-Wirkung lehnt immer jeden IAM-Prinzipal ab, an den eine Richtlinie zur Berechtigungsgrenze angefügt ist, unabhängig von den im NotPrincipal-Element angegebenen Werten. Dies führt dazu, dass einige IAM-Benutzer oder -Rollen, die andernfalls Zugriff auf die Ressource hätten, den Zugriff verlieren. Wir empfehlen Ihnen, Ihre ressourcenbasierten Richtlinien dahingehend zu ändern, dass Sie den Bedingungsoperator ArnNotEquals mit dem aws:PrincipalArn-Kontextschlüssel verwenden, um den Zugriff zu begrenzen, anstatt das NotPrincipal-Element. Weitere Informationen über Berechtigungsgrenzen finden Sie unter Berechtigungsgrenzen für IAM-Entitäten.

Anmerkung

Es hat sich bewährt, die ARNs für das Konto in die Richtlinie aufzunehmen. Einige Services erfordern den Konto-ARN, auch wenn dies nicht immer erforderlich ist. Alle vorhandenen Richtlinien ohne den erforderlichen ARN bleiben funktionsfähig, neue Richtlinien aber, die diese Services enthalten, müssen die Anforderung erfüllen. IAM verfolgt diese Services nicht und empfiehlt daher, dass Sie diese immer in den Konto-ARN einschließen.

Die folgenden Beispiele zeigen die effektive Verwendung von NotPrincipal und "Effect": "Deny" in derselben Richtlinienanweisung.

Beispiel eines IAM-Benutzers in demselben oder einem anderen Konto

Im folgenden Beispiel wird allen Prinzipalen, mit Ausnahme des Benutzers Bob im AWS-Konto-Konto 444455556666, der Zugriff auf eine Ressource explizit verweigert. Beachten Sie, dass im Zuge bewährter Methoden das NotPrincipal-Element den ARN des Benutzers Bob sowie des AWS-Konto, zu dem Bob gehört (arn:aws:iam::444455556666:root), enthält. Wenn das NotPrincipal-Element nur den ARN von Bob enthielte, würde die Richtlinie den Zugriff auf das AWS-Konto, das den Benutzer Bob enthält, möglicherweise explizit verweigern. In einen Fällen dürfen die Berechtigungen eines Benutzers nicht umfangreicher als die des übergeordneten Kontos sein. Wenn folglich dem Konto von Bob der Zugriff explizit verweigert wird, kann Bob möglicherweise nicht auf die Ressource zugreifen.

Dieses Beispiel funktioniert wie beabsichtigt, wenn es Teil einer Richtlinienanweisung in einer ressourcenbasierten Richtlinie ist, die mit einer Ressource im gleichen oder einem anderen AWS-Konto (nicht 444455556666) verknüpft ist. Dieses Beispiel allein gewährt Bob noch keinen Zugriff, Bob wird lediglich aus der Liste der Auftraggeber ausgenommen, deren Zugriffsberechtigung explizit verweigert wird. Um Bob den Zugriff auf die Ressource zu gewähren, muss eine andere Richtlinienanweisung mithilfe von "Effect": "Allow" die Zugriffsberechtigung explizit erteilen.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Deny", "NotPrincipal": {"AWS": [ "arn:aws:iam::444455556666:user/Bob", "arn:aws:iam::444455556666:root" ]}, "Action": "s3:*", "Resource": [ "arn:aws:s3:::BUCKETNAME", "arn:aws:s3:::BUCKETNAME/*" ] }] }
Beispiel einer IAM-Rolle in demselben oder einem anderen Konto

Im folgenden Beispiel wird allen Prinzipalen mit Ausnahme des Benutzers mit übernommener Rolle mit dem Namen "cross-account-audit-app" im AWS-Konto 444455556666 der Zugriff auf eine Ressource explizit verweigert. Im Zuge bewährter Methoden enthält das NotPrincipal-Element den ARN des Benutzers mit übernommener Rolle (cross-account-audit-app), der Rolle (cross-account-read-only-role) und des AWS-Konto, zu dem die Rolle gehört (444455556666). Wenn der ARN der Rolle nicht im NotPrincipal-Element enthalten wäre, würde dies vermutlich zu einer Zugriffsverweigerung der Rolle durch die Richtlinie führen. Wenn der ARN des AWS-Konto, zu dem die Rolle gehört, nicht im Element NotPrincipal enthalten wäre, könnte dies gleichermaßen zu einer Verweigerung des Zugriffs auf das AWS-Konto und allen Entitäten darin durch die Richtlinie führen. In einigen Fällen dürfen Benutzer mit übernommener Rolle keine umfangreicheren Berechtigungen als ihre übergeordnete Rolle haben und die Berechtigungen der Rollen dürfen nicht umfangreicher als die des übergeordnete AWS-Konto sein. Wenn folglich der Rolle oder dem Konto der Zugriff verweigert wird, kann der Benutzer mit der übernommenen Rolle möglicherweise nicht auf die Ressource zugreifen.

Dieses Beispiel funktioniert wie vorgesehen, wenn es Teil einer Richtlinienanweisung in einer ressourcenbasierten Richtlinie ist, die einer Ressource in einem anderen AWS-Konto (nicht 444455556666) zugeordnet ist. Dieses Beispiel allein gewährt dem Benutzer mit übernommener Rolle "cross-account-audit-app" keine Zugriffsberechtigung, "cross-account-audit-app" wird lediglich aus der Liste der Auftraggeber ausgenommen, denen der Zugriff explizit verweigert wird. Um "cross-account-audit-app" den Zugriff auf die Ressource zu gewähren, muss eine andere Richtlinienanweisung mithilfe von "Effect": "Allow" die Zugriffsberechtigung explizit erteilen.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Deny", "NotPrincipal": {"AWS": [ "arn:aws:sts::444455556666:assumed-role/cross-account-read-only-role/cross-account-audit-app", "arn:aws:iam::444455556666:role/cross-account-read-only-role", "arn:aws:iam::444455556666:root" ]}, "Action": "s3:*", "Resource": [ "arn:aws:s3:::Bucket_AccountAudit", "arn:aws:s3:::Bucket_AccountAudit/*" ] }] }

Wenn Sie eine Sitzung mit übernommener Rolle in einem NotPrincipal-Element angeben, können Sie keinen Platzhalter (*) verwenden, der "alle Sitzungen" bedeutet. Auftraggeber müssen immer eine bestimmte Sitzung benennen.