

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

# Membuat pernyataan kebijakan IAM khusus untuk mengakses data di Amazon Neptunus
<a name="iam-data-access-policies"></a>

Pernyataan kebijakan akses data Neptunus [menggunakan tindakan akses data](iam-dp-actions.md)[, sumber daya, [dan kunci kondisi](iam-data-condition-keys.md#iam-neptune-condition-keys),](iam-data-resources.md) yang semuanya didahului oleh awalan. `neptune-db:`

**Topics**
+ [Menggunakan tindakan kueri dalam pernyataan kebijakan akses data Neptunus](#iam-data-query-actions)
+ [Tindakan IAM untuk akses data di Amazon Neptunus](iam-dp-actions.md)
+ [Jenis sumber daya IAM untuk mengakses data di Amazon Neptunus](iam-data-resources.md)
+ [Kunci kondisi IAM untuk mengakses data di Amazon Neptunus](iam-data-condition-keys.md)
+ [Membuat kebijakan akses data IAM di Amazon Neptunus](iam-data-access-examples.md)

## Menggunakan tindakan kueri dalam pernyataan kebijakan akses data Neptunus
<a name="iam-data-query-actions"></a>

Ada tiga tindakan kueri Neptunus yang dapat digunakan dalam pernyataan kebijakan akses data, yaitu,, dan. `ReadDataViaQuery` `WriteDataViaQuery` `DeleteDataViaQuery` Kueri tertentu mungkin memerlukan izin untuk melakukan lebih dari satu tindakan ini, dan mungkin tidak selalu jelas kombinasi tindakan apa yang harus diizinkan untuk menjalankan kueri.

Sebelum menjalankan kueri, Neptunus menentukan izin yang diperlukan untuk menjalankan setiap langkah kueri, dan menggabungkannya ke dalam set lengkap izin yang dibutuhkan kueri. Perhatikan bahwa set lengkap izin ini mencakup semua tindakan yang *mungkin* dilakukan kueri, yang belum tentu merupakan kumpulan tindakan yang sebenarnya akan dilakukan kueri saat dijalankan di atas data Anda.

Ini berarti bahwa untuk mengizinkan kueri tertentu dijalankan, Anda harus memberikan izin untuk setiap tindakan yang mungkin dilakukan kueri, apakah itu benar-benar melakukannya atau tidak.

Berikut adalah beberapa contoh pertanyaan Gremlin di mana ini dijelaskan secara lebih rinci:
+ 

  ```
  g.V().count()
  ```

  `g.V()`dan `count()` hanya memerlukan akses baca, jadi kueri secara keseluruhan hanya membutuhkan `ReadDataViaQuery` akses.
+ 

  ```
  g.addV()
  ```

  `addV()`perlu memeriksa apakah simpul dengan ID yang diberikan ada atau tidak sebelum memasukkan yang baru. Ini berarti membutuhkan keduanya `ReadDataViaQuery` dan `WriteDataViaQuery` akses.
+ 

  ```
  g.V('1').as('a').out('created').addE('createdBy').to('a')
  ```

  `g.V('1').as('a')`dan `out('created')` hanya memerlukan akses baca, tetapi `addE().from('a')` memerlukan akses baca dan tulis karena `addE()` perlu membaca `from` dan `to` simpul dan memeriksa apakah tepi dengan ID yang sama sudah ada sebelum menambahkan yang baru. Oleh karena itu, kueri secara keseluruhan membutuhkan keduanya `ReadDataViaQuery` dan `WriteDataViaQuery` akses.
+ 

  ```
  g.V().drop()
  ```

  `g.V()`hanya membutuhkan akses baca. `drop()`membutuhkan akses baca dan hapus karena perlu membaca simpul atau tepi sebelum menghapusnya, sehingga kueri secara keseluruhan membutuhkan keduanya `ReadDataViaQuery` dan `DeleteDataViaQuery` akses.
+ 

  ```
  g.V('1').property(single, 'key1', 'value1')
  ```

  `g.V('1')`hanya membutuhkan akses baca, tetapi `property(single, 'key1', 'value1')` membutuhkan akses baca, tulis, dan hapus. Di sini, `property()` langkah menyisipkan kunci dan nilai jika mereka belum ada di simpul, tetapi jika mereka sudah ada, itu menghapus nilai properti yang ada dan menyisipkan nilai baru di tempatnya. Oleh karena itu, query secara keseluruhan membutuhkan`ReadDataViaQuery`,`WriteDataViaQuery`, dan `DeleteDataViaQuery` akses.

  Setiap kueri yang berisi `property()` langkah akan membutuhkan`ReadDataViaQuery`,`WriteDataViaQuery`, dan `DeleteDataViaQuery` izin.

Berikut adalah beberapa contoh OpenCypher:
+ 

  ```
  MATCH (n)
  RETURN n
  ```

  Kueri ini membaca semua node dalam database dan mengembalikannya, yang hanya membutuhkan `ReadDataViaQuery` akses.
+ 

  ```
  MATCH (n:Person)
  SET n.dept = 'AWS'
  ```

  Kueri ini membutuhkan`ReadDataViaQuery`,`WriteDataViaQuery`, dan `DeleteDataViaQuery` akses. Ia membaca semua node dengan label 'Orang' dan menambahkan properti baru dengan kunci `dept` dan nilai `AWS` untuk mereka, atau jika `dept` properti sudah ada, itu menghapus nilai lama dan menyisipkan `AWS` sebagai gantinya. Juga, jika nilai yang akan ditetapkan adalah`null`, `SET` menghapus properti sama sekali.

   Karena `SET` klausa mungkin dalam beberapa kasus perlu menghapus nilai yang ada, klausa **selalu** membutuhkan `DeleteDataViaQuery` izin serta `ReadDataViaQuery` dan `WriteDataViaQuery` izin.
+ 

  ```
  MATCH (n:Person)
  DETACH DELETE n
  ```

  Kebutuhan `ReadDataViaQuery` dan `DeleteDataViaQuery` izin kueri ini. Ia menemukan semua node dengan label `Person` dan menghapusnya bersama dengan tepi yang terhubung ke node tersebut dan label dan properti terkait.
+ 

  ```
  MERGE (n:Person {name: 'John'})-[:knows]->(:Person {name: 'Peter'})
  RETURN n
  ```

  Kebutuhan `ReadDataViaQuery` dan `WriteDataViaQuery` izin kueri ini. `MERGE`Klausa cocok dengan pola tertentu atau membuatnya. Karena, penulisan dapat terjadi jika pola tidak cocok, izin menulis diperlukan serta izin baca.