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 |
|
cakupan |
|
klausa kondisi |
|
Komponen kebijakan
Kebijakan persetujuan otomatis atau penolakan akses berisi komponen-komponen berikut:
-
Efek - Baik
permit
(izinkan) atauforbid
(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 f menguji 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 p memeriksa 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"
};