AWS Systems ManagerChange Managersteht neuen Kunden nicht mehr offen. Bestandskunden können den Service weiterhin wie gewohnt nutzen. Weitere Informationen finden Sie unter Änderung der AWS Systems ManagerChange Manager Verfügbarkeit.
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 integrierten Operatoren für automatische Genehmigungs- und Zugriffsverweigerungsrichtlinien
Die folgende Tabelle enthält die Struktur der Richtlinien für automatische Genehmigung und Zugriffsverweigerung.
| Komponente | Syntax |
|---|---|
| Auswirkung |
|
| scope |
|
| Bedingungsklausel |
|
Richtlinienkomponenten
Eine Richtlinie für automatische Genehmigung oder Zugriffsverweigerung umfasst die folgenden Komponenten:
-
Effekt: entweder
permit(zulassen) oderforbid(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 Just-in-Time-Knotenzugriff ist
actionimmerAWS::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.
Schema für den Just-in-Time-Knotenzugriff
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 | Beschreibung |
|---|---|---|
|
! |
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 kleiner-gleich. |
|
> |
(long, long) → boolescher Wert |
Lange Ganzzahl größer als. |
|
>= |
(long, long) → boolescher Wert |
Lange Ganzzahl größer-gleich. |
| 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"
};