Struktur pernyataan dan operator bawaan untuk kebijakan persetujuan otomatis dan akses penolakan - AWS Systems Manager

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Struktur pernyataan dan operator bawaan untuk kebijakan persetujuan otomatis dan akses penolakan

Tabel berikut menunjukkan struktur kebijakan persetujuan otomatis dan penolakan akses.

Komponen Sintaksis
efek

permit | forbid

cakupan

(principal, action, resource)

klausa kondisi
when { principal or resource has attribute name };

Komponen kebijakan

Kebijakan persetujuan otomatis atau penolakan akses berisi komponen-komponen berikut:

  • Efek - Baik permit (izinkan) atau forbid (tolak) akses.

  • Lingkup — Prinsip, tindakan, dan sumber daya yang efeknya berlaku. Anda dapat membiarkan ruang lingkup di Cedar tidak terdefinisi dengan tidak mengidentifikasi prinsip, tindakan, atau sumber daya tertentu. Dalam hal ini, kebijakan berlaku untuk semua prinsip, tindakan, dan sumber daya yang mungkin. Untuk akses just-in-time node, action selaluAWS::SSM::Action::"getTokenForInstanceAccess".

  • Klausul kondisi — Konteks di mana efek berlaku.

Komentar

Anda dapat memasukkan komentar dalam kebijakan Anda. Komentar didefinisikan sebagai baris yang dimulai dengan // dan diakhiri dengan karakter baris baru.

Contoh berikut menunjukkan komentar dalam kebijakan.

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

Beberapa klausa

Anda dapat menggunakan lebih dari satu klausa kondisi dalam pernyataan kebijakan menggunakan && operator.

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

Karakter yang dipesan

Contoh berikut menunjukkan cara menulis kebijakan jika properti context menggunakan : (titik koma), yang merupakan karakter cadangan dalam bahasa kebijakan.

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

Untuk contoh tambahan, lihat Contoh pernyataan kebijakan.

Just-in-time skema akses simpul

Berikut ini adalah skema Cedar untuk akses just-in-time node.

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

Operator bawaan

Saat membuat konteks kebijakan persetujuan otomatis atau penolakan akses menggunakan berbagai kondisi, Anda dapat menggunakan && operator untuk menambahkan kondisi tambahan. Ada juga banyak operator bawaan lainnya yang dapat Anda gunakan untuk menambahkan kekuatan ekspresif tambahan pada kondisi kebijakan Anda. Tabel berikut berisi semua operator bawaan untuk referensi.

Operator Jenis dan kelebihan beban Deskripsi

!

Boolean → Boolean

Logis tidak.

==

apa saja → apa saja

Kesetaraan. Bekerja pada argumen jenis apa pun, bahkan jika tipenya tidak cocok. Nilai dari berbagai jenis tidak pernah sama satu sama lain.

!= apa saja → apa saja

Ketimpangan; kebalikan dari kesetaraan (lihat di atas).

<

(panjang, panjang) → Boolean

Bilangan bulat panjang kurang dari.

<=

(panjang, panjang) → Boolean

Bilangan bulat panjang less-than-or-equal -ke.

>

(panjang, panjang) → Boolean

Bilangan bulat panjang lebih besar dari.

>=

(panjang, panjang) → Boolean

Bilangan bulat panjang greater-than-or-equal -ke.

in (entitas, entitas) → Boolean Keanggotaan hierarki (refleksif: A dalam A selalu benar).
(entitas, set (entitas)) → Boolean Keanggotaan hierarki: A di [B, C,...] benar jika (A dan B) || (A dalam C) ||... kesalahan jika himpunan berisi non-entitas.
&& (Boolean, Boolean) → Boolean

Logis dan (hubungan arus pendek).

|| (Boolean, Boolean) → Boolean

Logis atau (hubungan arus pendek).

.ada () entitas → Boolean Keberadaan entitas.
memiliki (entitas, atribut) → Boolean Operator infix. e has fmenguji apakah catatan atau entitas e memiliki pengikatan untuk atributf. Mengembalikan false jika e tidak ada atau jika e memang ada tetapi tidak memiliki atributf. Atribut dapat dinyatakan sebagai pengidentifikasi atau string literal.
suka (string, string) → Boolean Operator infix. t like pmemeriksa apakah teks t cocok dengan polap, yang mungkin termasuk karakter wildcard * yang cocok dengan 0 atau lebih dari karakter apa pun. Untuk mencocokkan karakter bintang literalt, Anda dapat menggunakan urutan karakter lolos khusus \* dip.
.hasTag () (entitas, string) → Boolean Memeriksa apakah entitas memiliki tag yang ditentukan diterapkan.
.getTag () (entitas, string) → Boolean Mengembalikan nilai kunci tag yang ditentukan.
.berisi () (set, apa saja) → Boolean Tetapkan keanggotaan (adalah B elemen A).
.containsAll () (set, atur) → Boolean Tes jika set A berisi semua elemen dalam himpunan B.
.containsAny () (set, atur) → Boolean Pengujian jika set A berisi salah satu elemen dalam himpunan B.

Contoh pernyataan kebijakan

Berikut ini adalah contoh pernyataan kebijakan.

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