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

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 zeigt 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 };

Komponenten der Richtlinie

Eine Richtlinie zur automatischen Genehmigung oder Zugriffsverweigerung umfasst die folgenden Komponenten:

  • Auswirkung — Zugriff entweder permit (zulassen) oder forbid (verweigern).

  • Geltungsbereich — Die Prinzipien, Aktionen und Ressourcen, für die der Effekt gilt. Sie können den Geltungsbereich in Cedar undefiniert lassen, indem Sie keine bestimmten Prinzipale, Aktionen oder Ressourcen angeben. In diesem Fall gilt die Richtlinie für alle möglichen Prinzipale, Aktionen und Ressourcen. Für den just-in-time Knotenzugriff action gilt das immerAWS::SSM::Action::"getTokenForInstanceAccess".

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

Kommentare

Sie können Kommentare in Ihre Richtlinien aufnehmen. Kommentare sind als Zeilen definiert, die mit einem Zeilenumbruchzeichen beginnen // und damit 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

Mithilfe des && Operators können Sie in einer Richtlinienerklärung mehr als eine Bedingungsklausel verwenden.

// 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, was ein reserviertes Zeichen in der Richtliniensprache ist.

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 Richtlinienerklärungen.

Just-in-time Knotenzugriffsschema

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 den && Operator verwenden, um zusätzliche Bedingungen hinzuzufügen. Es gibt auch viele andere integrierte Operatoren, mit denen Sie Ihren Versicherungsbedingungen zusätzliche Aussagekraft verleihen können. Die folgende Tabelle enthält alle integrierten Operatoren als Referenz.

Operator Typen und Überladungen Beschreibung

!

Boolean → Boolean

Logisch nicht.

==

beliebig → beliebig

Gleichheit. Funktioniert mit Argumenten aller Art, auch wenn die Typen nicht übereinstimmen. Werte verschiedener Typen sind einander niemals gleich.

!= beliebig → beliebig

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

<

(lang, lang) → Boolesch

Lange Ganzzahl kleiner als.

<=

(lang, lang) → Boolesch

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

>

(lang, lang) → Boolean

Lange Ganzzahl größer als.

>=

(lang, lang) → Boolesch

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

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

Logisch und (kurzschließend).

|| (Boolean, Boolean) → Boolean

Logisch oder (Kurzschluss).

.existiert () Entität → Boolean Existenz einer Entität.
hat (Entität, Attribut) → Boolean Infix-Operator. e has ftestet, ob der Datensatz oder die Entität eine Bindung für das Attribut e f hat. Gibt zurückfalse, ob es nicht e existiert oder ob e es existiert, aber das Attribut nicht hatf. Attribute können als Bezeichner oder Zeichenkettenliterale ausgedrückt werden.
like (Zeichenfolge, Zeichenfolge) → Boolean Infix-Operator. t like pprüft, ob der Text dem Muster t entsprichtp, das Platzhalterzeichen enthalten kann*, die 0 oder mehr eines beliebigen Zeichens entsprechen. Um einem buchstäblichen Sternzeichen in zu entsprechent, können Sie die spezielle Escape-Zeichenfolge \* in verwenden. p
.hasTag () (Entität, Zeichenfolge) → Boolean Prüft, ob auf die Entität das angegebene Tag angewendet wurde.
.getTag () (Entität, Zeichenfolge) → Boolean Gibt den Wert des angegebenen Tag-Schlüssels zurück.
.enthält () (gesetzt, beliebig) → Boolean Mitgliedschaft festlegen (ist B ein Element von A).
. enthält Alle () (set, set) → Boolean Testet, ob Satz A alle Elemente in Satz B enthält.
. enthält Any () (Satz, Satz) → Boolean Testet, ob Satz A eines der Elemente in Satz B enthält.

Beispiele für Richtlinienerklärungen

Im Folgenden finden Sie Beispiele für Grundsatzerklärungen.

// 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" };