Struktur der Anweisungen und integrierte Operatoren für Richtlinien zur automatischen Genehmigung und Zugriffsverweigerung - AWS Systems Manager

• Das AWS Systems Manager CloudWatch Dashboard wird nach dem 30. April 2026 nicht mehr verfügbar sein. Kunden können weiterhin die CloudWatch Amazon-Konsole verwenden, um ihre CloudWatch Amazon-Dashboards anzusehen, zu erstellen und zu verwalten, so wie sie es heute tun. Weitere Informationen finden Sie in der Amazon CloudWatch Dashboard-Dokumentation.

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.

Struktur der Anweisungen und integrierte Operatoren für Richtlinien zur automatischen Genehmigung und Zugriffsverweigerung

Die folgende Tabelle enthält die Struktur der Richtlinien für automatische Genehmigung und Zugriffsverweigerung.

Komponente Syntax
Auswirkung

permit | forbid

scope

(principal, action, resource)

Bedingungsklausel
when { principal or resource has attribute name };

Richtlinienkomponenten

Eine Richtlinie für automatische Genehmigung oder Zugriffsverweigerung umfasst die folgenden Komponenten:

  • Effekt: entweder permit (zulassen) oder forbid (verweigern).

  • Umfang: Die Prinzipale, Aktionen und Ressourcen, für die der Effekt gilt. Sie können den Umfang in Cedar undefiniert lassen, indem Sie keine Prinzipale, Aktionen oder Ressourcen angeben. Die Richtlinie gilt dann für alle möglichen Prinzipale, Aktionen und Ressourcen. Für den Zugriff auf just-in-time Knoten gilt das action immer. AWS::SSM::Action::"getTokenForInstanceAccess"

  • Bedingungsklausel: Der Kontext, in dem der Effekt gilt.

Kommentare

Sie können Kommentare in Ihre Richtlinien einfügen. Kommentare sind als Zeilen definiert, die mit // beginnen und mit einem Zeilenumbruchzeichen enden.

Das folgende Beispiel zeigt Kommentare in einer Richtlinie:

// Allows users in the Engineering group from the Platform org to automatically connect to nodes tagged with Engineering and Production keys. permit ( principal in AWS::IdentityStore::Group::"d4q81745-r081-7079-d789-14da1EXAMPLE", action == AWS::SSM::Action::"getTokenForInstanceAccess", resource ) when { principal has organization && resource.hasTag("Engineering") && resource.hasTag("Production") && principal.organization == "Platform" };

Mehrere Klauseln

Mit dem Operator && können Sie in einer Richtlinienanweisung mehrere Bedingungsklauseln angeben.

// Allow access if node has tag where the tag key is Environment // & tag value is Development permit(principal, action == AWS::SSM::getTokenForInstanceAccess, resource) when { resource.hasTag("Environment") && resource.getTag("Environment") == "Development" };

Reservierte Zeichen

Das folgende Beispiel zeigt, wie eine Richtlinie geschrieben wird, wenn eine Kontexteigenschaft ein : (Semikolon) verwendet – ein reserviertes Zeichen in der Richtliniensprache.

permit ( principal, action == AWS::SSM::Action::"getTokenForInstanceAccess", resource ) when { principal has employeeNumber && principal.employeeNumber like "E-1*" && resource.hasTag("Purpose") && resource.getTag("Purpose") == "Testing" }

Weitere Beispiele finden Sie unter Beispiele für Richtlinienanweisungen.

Just-in-time Schema für den Knotenzugriff

Das Folgende ist das Cedar-Schema für den just-in-time Knotenzugriff.

namespace AWS::EC2 { entity Instance tags String; } namespace AWS::IdentityStore { entity Group; entity User in [Group] { employeeNumber?: String, costCenter?: String, organization?: String, division?: String, }; } namespace AWS::IAM { entity Role; type AuthorizationContext = { principalTags: PrincipalTags, }; entity PrincipalTags tags String; } namespace AWS::SSM { entity ManagedInstance tags String; action "getTokenForInstanceAccess" appliesTo { principal: [AWS::IdentityStore::User], resource: [AWS::EC2::Instance, AWS::SSM::ManagedInstance], context: { "iam": AWS::IAM::AuthorizationContext } }; }

Integrierte Operatoren

Wenn Sie den Kontext einer Richtlinie für automatische Genehmigung oder Zugriffsverweigerung unter Verwendung verschiedener Bedingungen erstellen, können Sie mit dem Operator && zusätzliche Bedingungen angeben. Es gibt viele andere integrierte Operatoren, mit denen Sie Ihren Richtlinienbedingungen zusätzliche Aussagekraft verleihen können. Die folgende Tabelle enthält alle integrierten Operatoren zur Referenz.

Operator Typen und Überladungen Description

!

Boolean → boolescher Wert

Logisches Nicht.

==

any → any

Gleichheit. Kann in Argumenten jedes Typs verwendet werden, auch wenn die Typen nicht übereinstimmen. Werte verschiedener Typen sind einander niemals gleich.

!= any → any

Ungleichheit; das genaue Gegenteil von Gleichheit (siehe oben).

<

(long, long) → boolescher Wert

Lange Ganzzahl kleiner als.

<=

(long, long) → boolescher Wert

Lange Ganzzahl less-than-or-equal -to.

>

(long, long) → boolescher Wert

Lange Ganzzahl größer als.

>=

(long, long) → boolescher Wert

Lange Ganzzahl greater-than-or-equal -to.

in (entity, entity) → boolescher Wert Hierarchiezugehörigkeit (reflexiv: A in A ist immer wahr).
(entity, set(entity)) → boolescher Wert Hierarchiezugehörigkeit: A in [B, C, …] ist wahr, wenn (A und B) || (A in C) || … Fehler, wenn die Menge eine Nicht-Entität enthält.
&& (Boolean, Boolean) → boolescher Wert

Logisches Und (Kurzschließen).

|| (Boolean, Boolean) → boolescher Wert

Logisches Oder (Kurzschließen).

.exists() entity → boolescher Wert Vorhandensein einer Entität.
has (entity, attribute) → boolescher Wert Infix-Operator. e has f testet, ob der Datensatz oder die Entität e eine Bindung für das Attribut f hat. Gibt false zurück, wenn e nicht existiert oder wenn e existiert, aber nicht das Attribut f hat. Attribute können als Bezeichner oder Zeichenfolgeliterale ausgedrückt werden.
like (string, string) → boolescher Wert Infix-Operator. t like p prüft, ob der Text t dem Muster p entspricht, das Platzhalterzeichen * enthalten kann, die 0 oder mehr eines beliebigen Zeichens entsprechen. Um in t ein tatsächliches Sternzeichen abzugleichen, können Sie die Escape-Zeichenfolge \* in p verwenden.
.hasTag() (entity, string) → boolescher Wert Prüft, ob das angegebene Tag auf die Entität angewendet wurde.
.getTag() (entity, string) → boolescher Wert Gibt den Wert des angegebenen Tag-Schlüssels zurück.
.contains() (set, any) → boolescher Wert Mitgliedschaft festlegen (ist B ein Element von A).
.containsAll() (set, set) → boolescher Wert Testet, ob Menge A alle Elemente in Menge B enthält.
.containsAny() (set, set) → boolescher Wert Testet, ob Menge A beliebige Elemente aus Menge B enthält.

Beispiele für Richtlinienanweisungen

Nachfolgend finden Sie beispielhafte Richtlinienanweisungen.

// Users assuming IAM roles with a principal tag of "Elevated" can automatically access nodes tagged with the "Environment" key when the value equals "prod" permit(principal, action == AWS::SSM::getTokenForInstanceAccess, resource) when { // Verify IAM role principal tag context.iam.principalTags.getTag("AccessLevel") == "Elevated" && // Verify the node has a tag with "Environment" tag key and a tag value of "prod" resource.hasTag("Environment") && resource.getTag("Environment") == "prod" };
// Identity Center users in the "Contractor" division can automatically access nodes tagged with the "Environment" key when the value equals "dev" permit(principal, action == AWS::SSM::getTokenForInstanceAccess, resource) when { // Verify that the user is part of the "Contractor" division principal.division == "Contractor" && // Verify the node has a tag with "Environment" tag key and a tag value of "dev" resource.hasTag("Environment") && resource.getTag("Environment") == "dev" };
// Identity Center users in a specified group can automatically access nodes tagged with the "Environment" key when the value equals "Production" permit(principal in AWS::IdentityStore::Group::"d4q81745-r081-7079-d789-14da1EXAMPLE", action == AWS::SSM::getTokenForInstanceAccess, resource) when { resource.hasTag("Environment") && resource.getTag("Environment") == "Production" };