View a markdown version of this page

Membuat pernyataan kebijakan IAM khusus untuk mengakses data di Amazon Neptune - Amazon Neptune

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 Neptune

Pernyataan kebijakan akses data Neptunus menggunakan tindakan akses data, sumber daya, dan kunci kondisi, yang semuanya didahului oleh awalan. neptune-db:

Menggunakan tindakan kueri dalam pernyataan kebijakan akses data Neptunus

Ada tiga tindakan kueri Neptunus yang dapat digunakan dalam pernyataan kebijakan akses data, yaituReadDataViaQuery,WriteDataViaQuery, danDeleteDataViaQuery. 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 menggabungkan ini ke dalam kumpulan izin lengkap yang diperlukan kueri. Perhatikan bahwa kumpulan izin lengkap ini mencakup semua tindakan yang mungkin dilakukan oleh kueri, yang belum tentu merupakan kumpulan tindakan yang sebenarnya akan dilakukan kueri saat menjalankan data Anda.

Ini berarti bahwa untuk mengizinkan kueri yang diberikan berjalan, 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 tertentu ada atau tidak sebelum memasukkan yang baru. Ini berarti bahwa itu 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') membutuhkan akses baca dan tulis karena addE() perlu membaca to simpul from dan 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 sudah ada, itu menghapus nilai properti yang ada dan menyisipkan nilai baru di tempatnya. Oleh karena itu, kueri secara keseluruhan membutuhkanReadDataViaQuery,WriteDataViaQuery, dan DeleteDataViaQuery akses.

    Setiap kueri yang berisi property() langkah akan membutuhkanReadDataViaQuery,WriteDataViaQuery, dan DeleteDataViaQuery izin.

Berikut adalah beberapa contoh OpenCypher:

  • MATCH (n) RETURN n

    Kueri ini membaca semua node dalam database dan mengembalikannya, yang hanya memerlukan ReadDataViaQuery akses.

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

    Kueri ini membutuhkanReadDataViaQuery,WriteDataViaQuery, dan DeleteDataViaQuery akses. Ini membaca semua node dengan label 'Orang' dan menambahkan properti baru dengan kunci dept dan nilai AWS padanya, atau jika dept properti sudah ada, itu menghapus nilai lama dan menyisipkan sebagai AWS gantinya. Juga, jika nilai yang akan ditetapkan adalahnull, SET menghapus properti sama sekali.

    Karena SET klausa mungkin dalam beberapa kasus perlu menghapus nilai yang ada, kla usa selalu membutuhkan DeleteDataViaQuery izin ReadDataViaQuery serta WriteDataViaQuery izin.

  • MATCH (n:Person) DETACH DELETE n

    Permintaan ini membutuhkan ReadDataViaQuery dan DeleteDataViaQuery izin. Ini 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

    Permintaan ini membutuhkan ReadDataViaQuery dan WriteDataViaQuery izin. Kla MERGE usa cocok dengan pola tertentu atau membuatnya. Karena, penulisan dapat terjadi jika polanya tidak cocok, izin menulis diperlukan serta izin baca.