

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

# Izin Terverifikasi Amazon dan istilah dan konsep bahasa kebijakan Cedar
<a name="terminology"></a>

Anda harus memahami konsep berikut untuk menggunakan Izin Terverifikasi Amazon.

**Topics**
+ [Model otorisasi](#term-authorization-model)
+ [Permintaan otorisasi](#term-authorization-request)
+ [Respon otorisasi](#term-authorization-response)
+ [Kebijakan yang dipertimbangkan](#term-considered-policies)
+ [Data konteks](#term-context-data)
+ [Menentukan kebijakan](#term-determining-policies)
+ [Data entitas](#term-entity-data)
+ [Izin, otorisasi, dan prinsip](#term-permissions-authorization-principals)
+ [Penegakan kebijakan](#term-policy-enforcement)
+ [Toko kebijakan](#term-policy-store)
+ [Alias toko kebijakan](#term-policy-store-alias)
+ [Nama kebijakan](#term-policy-name)
+ [Nama templat kebijakan](#term-policy-template-name)
+ [Kebijakan yang memuaskan](#term-satisfied-policies)
+ [Perbedaan antara Izin Terverifikasi Amazon dan bahasa kebijakan Cedar](terminology-differences-avp-cedar.md)

**Konsep bahasa kebijakan cedar**
+ [Otorisasi](https://docs.cedarpolicy.com/overview/terminology.html#authorization)
+ [Entitas](https://docs.cedarpolicy.com/overview/terminology.html#entity)
+ [Grup dan hierarki](https://docs.cedarpolicy.com/overview/terminology.html#term-group)
+ [Ruang nama](https://docs.cedarpolicy.com/policies/validation.html#namespaces)
+ [Kebijakan](https://docs.cedarpolicy.com/overview/terminology.html#policy)
+ [Templat kebijakan](https://docs.cedarpolicy.com/overview/terminology.html#policy-template)
+ [Skema](https://docs.cedarpolicy.com/overview/terminology.html#schema)

## Model otorisasi
<a name="term-authorization-model"></a>

*Model otorisasi* menjelaskan ruang lingkup [permintaan otorisasi](#term-authorization-request) yang dibuat oleh aplikasi dan dasar untuk mengevaluasi permintaan tersebut. Ini didefinisikan dalam hal berbagai jenis sumber daya, tindakan yang diambil pada sumber daya tersebut, dan jenis prinsip yang mengambil tindakan tersebut. Ini juga mempertimbangkan konteks di mana tindakan tersebut diambil.

*Kontrol Akses Berbasis Peran (RBAC)* adalah dasar evaluasi di mana peran didefinisikan dan dikaitkan dengan serangkaian izin. Peran ini kemudian dapat ditugaskan ke satu atau lebih identitas. Identitas yang ditetapkan memperoleh izin yang terkait dengan peran tersebut. Jika izin yang terkait dengan peran diubah, maka modifikasi secara otomatis memengaruhi identitas apa pun yang telah ditetapkan peran tersebut. Cedar dapat mendukung keputusan RBAC melalui penggunaan kelompok utama.

*Attribute-based Access Control (ABAC)* adalah dasar evaluasi di mana izin yang terkait dengan identitas ditentukan oleh atribut identitas tersebut. Cedar dapat mendukung keputusan ABAC melalui penggunaan kondisi kebijakan yang merujuk atribut prinsipal.

Bahasa kebijakan Cedar memungkinkan kombinasi RBAC dan ABAC dalam satu kebijakan dengan mengizinkan izin ditentukan untuk sekelompok pengguna, yang memiliki kondisi berbasis atribut.

## Permintaan otorisasi
<a name="term-authorization-request"></a>

Permintaan *otorisasi adalah permintaan* yang dibuat dari Izin Terverifikasi oleh aplikasi untuk mengevaluasi serangkaian kebijakan untuk menentukan apakah prinsipal dapat melakukan tindakan pada sumber daya untuk konteks tertentu.

## Respon otorisasi
<a name="term-authorization-response"></a>

Respons *otorisasi adalah respons* terhadap permintaan [otorisasi](#term-authorization-request). Ini termasuk mengizinkan atau menolak keputusan, ditambah informasi tambahan, seperti kebijakan IDs yang menentukan.

## Kebijakan yang dipertimbangkan
<a name="term-considered-policies"></a>

*Kebijakan yang dipertimbangkan* adalah serangkaian kebijakan lengkap yang dipilih oleh Izin Terverifikasi untuk dimasukkan saat mengevaluasi permintaan [otorisasi](#term-authorization-request).

## Data konteks
<a name="term-context-data"></a>

*Data konteks* adalah nilai atribut yang memberikan informasi tambahan untuk dievaluasi.

## Menentukan kebijakan
<a name="term-determining-policies"></a>

*Menentukan kebijakan* adalah kebijakan yang menentukan [respons otorisasi](#term-authorization-response). Misalnya, jika ada dua [kebijakan yang puas](#term-satisfied-policies), di mana satu adalah penolakan dan yang lainnya adalah izin, maka kebijakan penolakan akan menjadi kebijakan penentu. Jika ada beberapa kebijakan izin yang dipenuhi dan tidak ada kebijakan larangan yang memuaskan, maka ada beberapa kebijakan penentu. Jika tidak ada kebijakan yang cocok dan tanggapannya ditolak, tidak ada kebijakan yang menentukan.

## Data entitas
<a name="term-entity-data"></a>

*Data entitas* adalah data tentang prinsipal, tindakan, dan sumber daya. Data entitas yang relevan untuk evaluasi kebijakan adalah keanggotaan grup sepanjang hierarki entitas dan nilai atribut prinsipal dan sumber daya.

## Izin, otorisasi, dan prinsip
<a name="term-permissions-authorization-principals"></a>

Izin Terverifikasi mengelola *izin* dan *otorisasi* berbutir halus dalam aplikasi kustom yang Anda buat.

*Prinsipal* adalah pengguna aplikasi, baik manusia atau mesin, yang memiliki identitas terikat pada pengenal seperti nama pengguna atau ID mesin. Proses otentikasi menentukan apakah prinsipal benar-benar identitas yang mereka klaim.

Terkait dengan identitas itu adalah seperangkat *izin* aplikasi yang menentukan apa yang diizinkan oleh prinsipal tersebut untuk dilakukan dalam aplikasi itu. *Otorisasi* adalah proses menilai izin tersebut untuk menentukan apakah prinsipal diizinkan untuk melakukan tindakan tertentu dalam aplikasi. Izin ini dapat dinyatakan sebagai [kebijakan](https://docs.cedarpolicy.com/overview/terminology.html#policy).

## Penegakan kebijakan
<a name="term-policy-enforcement"></a>

*Penegakan kebijakan* adalah proses menegakkan keputusan evaluasi dalam aplikasi di luar Izin Terverifikasi. Jika evaluasi Izin Terverifikasi mengembalikan penolakan, maka penegakan hukum akan memastikan bahwa prinsipal dicegah mengakses sumber daya.

## Toko kebijakan
<a name="term-policy-store"></a>

*Toko kebijakan* adalah wadah untuk kebijakan dan templat. Setiap toko berisi skema yang digunakan untuk memvalidasi kebijakan yang ditambahkan ke toko. Secara default, setiap aplikasi memiliki toko kebijakan sendiri, tetapi beberapa aplikasi dapat berbagi satu toko kebijakan. Ketika aplikasi membuat permintaan otorisasi, itu mengidentifikasi toko kebijakan yang digunakan untuk mengevaluasi permintaan itu. Toko kebijakan menyediakan cara untuk mengisolasi serangkaian kebijakan, dan oleh karena itu dapat digunakan dalam aplikasi multi-penyewa untuk memuat skema dan kebijakan untuk setiap penyewa. Satu aplikasi dapat memiliki toko kebijakan terpisah untuk setiap penyewa.

Saat mengevaluasi [permintaan otorisasi](#term-authorization-request), Izin Terverifikasi hanya mempertimbangkan subset kebijakan di penyimpanan kebijakan yang relevan dengan permintaan tersebut. Relevansi ditentukan berdasarkan ruang *lingkup* kebijakan. Ruang lingkup mengidentifikasi pokok dan sumber daya spesifik yang diterapkan kebijakan, dan tindakan yang dapat dilakukan oleh prinsipal pada sumber daya. Mendefinisikan ruang lingkup membantu meningkatkan kinerja dengan mempersempit serangkaian kebijakan yang dipertimbangkan.

## Alias toko kebijakan
<a name="term-policy-store-alias"></a>

*Alias toko kebijakan* adalah nama yang ramah untuk toko kebijakan. Anda dapat menggunakan alias penyimpanan kebijakan untuk mengidentifikasi penyimpanan kebijakan dalam operasi Izin Terverifikasi yang menerima parameter. `policyStoreId` Alias toko kebijakan adalah AWS sumber daya independen dengan milik mereka sendiri ARNs. Setiap alias dikaitkan dengan satu toko kebijakan pada satu waktu, dan beberapa alias dapat dikaitkan dengan toko kebijakan yang sama. Untuk informasi selengkapnya, lihat [Alias penyimpanan kebijakan Izin Terverifikasi Amazon](policy-store-aliases.md).

## Nama kebijakan
<a name="term-policy-name"></a>

*Nama kebijakan adalah nama* ramah opsional untuk kebijakan. Nama kebijakan harus unik untuk semua kebijakan dalam toko kebijakan dan diawali dengan`name/`. Anda dapat menggunakan nama kebijakan sebagai pengganti ID kebijakan dalam operasi bidang kontrol yang menerima `policyId` parameter. Nama dapat disetel saat membuat atau memperbarui kebijakan. Hanya `GetPolicy` dan `ListPolicies` kembalikan nama di output.

## Nama templat kebijakan
<a name="term-policy-template-name"></a>

*Nama templat kebijakan adalah nama* ramah opsional untuk templat kebijakan. Nama templat kebijakan harus unik untuk semua templat kebijakan dalam penyimpanan kebijakan dan diawali dengan`name/`. Anda dapat menggunakan nama templat kebijakan sebagai pengganti ID templat kebijakan dalam operasi bidang kontrol yang menerima `policyTemplateId` parameter. Nama dapat disetel saat membuat atau memperbarui templat kebijakan. Hanya `GetPolicyTemplate` dan `ListPolicyTemplates` kembalikan nama di output.

## Kebijakan yang memuaskan
<a name="term-satisfied-policies"></a>

*Kebijakan puas* adalah kebijakan yang sesuai dengan parameter [permintaan otorisasi](#term-authorization-request).

# Perbedaan antara Izin Terverifikasi Amazon dan bahasa kebijakan Cedar
<a name="terminology-differences-avp-cedar"></a>

Izin Terverifikasi Amazon menggunakan mesin bahasa kebijakan Cedar untuk melakukan tugas otorisasi. Namun, ada beberapa perbedaan antara implementasi Cedar asli dan implementasi Cedar yang ditemukan di Izin Terverifikasi. Topik ini mengidentifikasi perbedaan-perbedaan tersebut.

## Definisi namespace
<a name="differences-namespaces"></a>

Implementasi Izin Terverifikasi dari Cedar memiliki perbedaan berikut dari implementasi Cedar asli:
+ Izin Terverifikasi hanya mendukung satu [namespace dalam skema yang](https://docs.cedarpolicy.com/schema/schema.html#namespace) ditentukan di penyimpanan kebijakan.
+ Izin Terverifikasi tidak memungkinkan Anda membuat [namespace](https://docs.cedarpolicy.com/schema/schema.html#namespace) yang berupa string kosong atau menyertakan nilai berikut:`aws`,, `amazon` atau. `cedar`

## Dukungan template kebijakan
<a name="differences-schema"></a>

Baik Izin Terverifikasi dan Cedar mengizinkan placeholder dalam lingkup hanya untuk dan. `principal` `resource` Namun, Izin Terverifikasi juga tidak mengharuskan `principal` dan tidak `resource` dibatasi.

Kebijakan berikut berlaku di Cedar tetapi ditolak oleh Izin Terverifikasi karena tidak `principal` dibatasi.

```
permit(principal, action == Action::"view", resource == ?resource);
```

Kedua contoh berikut ini valid di Cedar dan Izin Terverifikasi karena keduanya `principal` dan `resource` memiliki kendala.

```
permit(principal == User::"alice", action == Action::"view", resource == ?resource);
```

```
permit(principal == ?principal, action == Action::"a", resource in ?resource);
```

## Dukungan skema
<a name="differences-templates"></a>

Izin Terverifikasi mengharuskan semua nama kunci skema JSON menjadi string yang tidak kosong. Cedar memungkinkan string kosong dalam beberapa kasus, seperti untuk properti atau ruang nama.

## Definisi kelompok aksi
<a name="differences-action-groups"></a>

Metode otorisasi Cedar memerlukan daftar entitas untuk dipertimbangkan ketika mengevaluasi permintaan otorisasi terhadap kebijakan.

Anda dapat menentukan tindakan dan kelompok tindakan yang digunakan oleh aplikasi Anda dalam skema. Namun, Cedar tidak menyertakan skema sebagai bagian dari permintaan evaluasi. Sebagai gantinya, Cedar menggunakan skema hanya untuk memvalidasi kebijakan dan templat kebijakan yang Anda kirimkan. Karena Cedar tidak mereferensikan skema selama permintaan evaluasi, bahkan jika Anda mendefinisikan grup tindakan dalam skema, Anda juga harus menyertakan daftar grup tindakan apa pun sebagai bagian dari daftar entitas yang harus diteruskan ke operasi API otorisasi.

Izin Terverifikasi melakukan ini untuk Anda. Setiap grup tindakan yang Anda tentukan dalam skema Anda secara otomatis ditambahkan ke daftar entitas yang Anda berikan sebagai parameter untuk operasi `IsAuthorized` atau`IsAuthorizedWithToken`.

## Pemformatan entitas
<a name="differences-entities"></a>

Pemformatan JSON entitas dalam Izin Terverifikasi menggunakan `entityList` parameter berbeda dari Cedar dengan cara berikut:
+ Dalam Izin Terverifikasi, objek JSON harus memiliki semua pasangan kunci-nilai yang dibungkus dalam objek JSON dengan nama. `Record`
+ Daftar JSON di Izin Terverifikasi harus dibungkus dalam pasangan nilai kunci JSON di mana nama kuncinya `Set` dan nilainya adalah daftar JSON asli dari Cedar.
+ Untuk`String`,`Long`, dan `Boolean` jenis nama, setiap pasangan kunci-nilai dari Cedar digantikan oleh objek JSON di Izin Terverifikasi. Nama objek adalah nama kunci asli. Di dalam objek JSON, ada satu pasangan kunci-nilai di mana nama kunci adalah nama tipe dari nilai skalar (`String`,`Long`, atau`Boolean`) dan nilainya adalah nilai dari entitas Cedar.
+ Pemformatan sintaks entitas Cedar dan entitas Izin Terverifikasi berbeda dengan cara berikut:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/verifiedpermissions/latest/userguide/terminology-differences-avp-cedar.html)

**Example - Daftar**  
Contoh berikut menunjukkan bagaimana daftar entitas dinyatakan dalam Cedar dan Izin Terverifikasi, masing-masing.  

```
[
  {
    "number": 1
  },
  {
    "sentence": "Here is an example sentence"
  },
  {
    "Question": false
  }
]
```

```
{
  "Set": [
    {
      "Record": {
        "number": {
          "Long": 1
        }
      }
    },
    {
      "Record": {
        "sentence": {
          "String": "Here is an example sentence"
        }
      }
    },
    {
      "Record": {
        "question": {
          "Boolean": false
        }
      }
    }
  ]
}
```

**Example - Evaluasi kebijakan**  
Contoh berikut menunjukkan bagaimana entitas diformat untuk mengevaluasi kebijakan dalam permintaan otorisasi di Cedar dan Izin Terverifikasi, masing-masing.  

```
[
    {
        "uid": {
            "type": "PhotoApp::User",
            "id": "alice"
        },
        "attrs": {
            "age": 25,
            "name": "alice",
            "userId": "123456789012"
        },
        "parents": [
            {
                "type": "PhotoApp::UserGroup",
                "id": "alice_friends"
            },
            {
                "type": "PhotoApp::UserGroup",
                "id": "AVTeam"
            }
        ]
    },
    {
        "uid": {
            "type": "PhotoApp::Photo",
            "id": "vacationPhoto.jpg"
        },
        "attrs": {
            "private": false,
            "account": {
                "__entity": {
                    "type": "PhotoApp::Account",
                    "id": "ahmad"
                }
            }
        },
        "parents": []
    },
    {
        "uid": {
            "type": "PhotoApp::UserGroup",
            "id": "alice_friends"
        },
        "attrs": {},
        "parents": []
    },
    {
        "uid": {
            "type": "PhotoApp::UserGroup",
            "id": "AVTeam"
        },
        "attrs": {},
        "parents": []
    }
]
```

```
[
    {
        "Identifier": {
            "EntityType": "PhotoApp::User",
            "EntityId": "alice"
        },
        "Attributes": {
            "age": {
                "Long": 25
            },
            "name": {
                "String": "alice"
            },
            "userId": {
                "String": "123456789012"
            }
        },
        "Parents": [
            {
                "EntityType": "PhotoApp::UserGroup",
                "EntityId": "alice_friends"
            },
            {
                "EntityType": "PhotoApp::UserGroup",
                "EntityId": "AVTeam"
            }
        ]
    },
    {
        "Identifier": {
            "EntityType": "PhotoApp::Photo",
            "EntityId": "vacationPhoto.jpg"
        },
        "Attributes": {
            "private": {
                "Boolean": false
            },
            "account": {
                "EntityIdentifier": {
                    "EntityType": "PhotoApp::Account",
                    "EntityId": "ahmad"
                }
            }
        },
        "Parents": []
    },
    {
        "Identifier": {
            "EntityType": "PhotoApp::UserGroup",
            "EntityId": "alice_friends"
        },
        "Parents": []
    },
    {
        "Identifier": {
            "EntityType": "PhotoApp::UserGroup",
            "EntityId": "AVTeam"
        },
        "Parents": []
    }
]
```

## Batas panjang dan ukuran
<a name="differences-length-limits"></a>

Izin Terverifikasi mendukung penyimpanan dalam bentuk penyimpanan kebijakan untuk menyimpan skema, kebijakan, dan templat kebijakan Anda. Penyimpanan tersebut menyebabkan Izin Terverifikasi memberlakukan beberapa batas panjang dan ukuran yang tidak relevan dengan Cedar.


| Objek | Batas Izin Terverifikasi (dalam byte) | Batas cedar | 
| --- | --- | --- | 
| Ukuran kebijakan¹ | 10.000  | Tidak ada | 
| Deskripsi kebijakan sebaris | 150  | Tidak berlaku untuk Cedar | 
| Ukuran templat kebijakan | 10.000  | Tidak ada | 
| Ukuran skema | 100.000  | Tidak ada | 
| Jenis entitas | 200  | Tidak ada | 
| ID Kebijakan | 64  | Tidak ada | 
| ID Templat Kebijakan | 64  | Tidak ada | 
| ID Entitas | 200  | Tidak ada | 
| ID toko kebijakan | 64  | Tidak berlaku untuk Cedar | 

¹ Ada batasan untuk kebijakan per penyimpanan kebijakan di Izin Terverifikasi berdasarkan ukuran gabungan prinsip, tindakan, dan sumber daya kebijakan yang dibuat di toko kebijakan. Ukuran total semua kebijakan yang berkaitan dengan satu sumber daya tidak dapat melebihi 200.000 byte. Untuk kebijakan yang ditautkan templat, ukuran templat kebijakan dihitung hanya sekali, ditambah ukuran setiap set parameter yang digunakan untuk membuat instance setiap kebijakan yang ditautkan templat.