

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

# Mengamankan basis data Amazon Neptunus Anda
<a name="security"></a>

Keamanan cloud di AWS adalah prioritas tertinggi. Sebagai AWS pelanggan, Anda mendapat manfaat dari pusat data dan arsitektur jaringan yang dibangun untuk memenuhi persyaratan organisasi yang paling sensitif terhadap keamanan.

Keamanan adalah tanggung jawab bersama antara Anda AWS dan Anda. [Model tanggung jawab bersama](https://aws.amazon.com/compliance/shared-responsibility-model/) menggambarkan hal ini sebagai keamanan *dari* cloud dan keamanan *di* cloud:
+ **Keamanan cloud** — AWS bertanggung jawab untuk melindungi infrastruktur yang menjalankan AWS layanan di AWS Cloud. AWS juga memberi Anda layanan yang dapat Anda gunakan dengan aman. Auditor pihak ketiga secara berkala menguji dan memverifikasi efektivitas keamanan kami sebagai bagian dari [Program kepatuhan AWS](https://aws.amazon.com/compliance/programs/). Untuk mempelajari tentang program kepatuhan yang berlaku di Amazon Neptune, lihat [Layanan AWS dalam Cakupan melalui Program Kepatuhan](https://aws.amazon.com/compliance/services-in-scope/).
+ **Keamanan di cloud** — Tanggung jawab Anda ditentukan oleh AWS layanan yang Anda gunakan. Anda juga bertanggung jawab atas faktor lain, yang mencakup sensitivitas data Anda, persyaratan perusahaan Anda, serta undang-undang dan peraturan yang berlaku.

Dokumentasi ini akan membantu Anda memahami cara menerapkan model tanggung jawab bersama saat menggunakan Neptune. Topik berikut akan menunjukkan kepada Anda cara mengonfigurasi Neptune untuk memenuhi tujuan keamanan dan kepatuhan Anda. Anda juga belajar cara menggunakan AWS layanan lain yang membantu Anda memantau dan mengamankan sumber daya Neptunus Anda.

**Topics**
+ [Peningkatan sistem operasi Amazon Neptunus](security-os-upgrades.md)
+ [Melindungi data di database Amazon Neptunus Anda](data-protection.md)
+ [Mengautentikasi database Amazon Neptunus Anda dengan AWS Identity and Access Management](iam-auth.md)
+ [Mengaktifkan otentikasi database IAM di Amazon Neptunus](iam-auth-enable.md)
+ [Menghubungkan ke database Amazon Neptunus Anda menggunakan otentikasi AWS Identity and Access Management](iam-auth-connecting.md)
+ [Mengelola akses ke database Amazon Neptunus menggunakan kebijakan IAM](security-iam-access-manage.md)
+ [Menggunakan peran terkait layanan untuk Amazon Neptunus](security-iam-service-linked-roles.md)
+ [Menggunakan kredensi sementara untuk terhubung ke Amazon Neptunus](iam-auth-temporary-credentials.md)
+ [Pencatatan dan pemantauan penggunaan dan kinerja di Amazon Neptunus](security-monitoring.md)
+ [Amazon Neptunus dan titik akhir VPC antarmuka ()AWS PrivateLink](vpc-interface-endpoints.md)
+ [Pertimbangan kepatuhan untuk Amazon Neptunus](neptune-compliance.md)
+ [Membangun penyebaran Amazon Neptunus yang tangguh dan toleran terhadap bencana](disaster-recovery-resiliency.md)

# Peningkatan sistem operasi Amazon Neptunus
<a name="security-os-upgrades"></a>

 Amazon Neptunus memastikan peningkatan berkelanjutan dalam kinerja database, keamanan, dan stabilitas melalui peningkatan OS reguler. Peningkatan ini diterapkan pada Database Neptunus dan Neptunus Analytics, mengikuti proses pembaruan terstruktur. Amazon Neptunus merilis upgrade OS setidaknya sekali per bulan. 

 Pembaruan OS Database Neptunus yang tidak memerlukan downtime diterapkan secara otomatis selama jendela pemeliharaan. Pembaruan OS tertentu (misalnya: peningkatan versi kernel) memerlukan instance restart. Pembaruan ini bersifat opsional dan tidak memiliki tanggal yang ditetapkan untuk menerapkannya. Namun, jika Anda tidak menerapkan pembaruan ini, pembaruan tersebut pada akhirnya mungkin diperlukan dan diterapkan secara otomatis selama jendela pemeliharaan instans Anda. 

 **Neptune Analytics** - Peningkatan OS Neptunus Analytics mulus dan tidak memerlukan tindakan pelanggan. Pembaruan ini secara otomatis diterapkan di latar belakang tanpa downtime. 

 Untuk menjaga keamanan dan kepatuhan, kami menyarankan Anda menerapkan semua pembaruan yang disediakan oleh Amazon Neptunus secara rutin selama jendela pemeliharaan Anda. Tetap mengikuti semua pembaruan opsional dan wajib membantu menggabungkan tambalan keamanan penting dan memastikan keselarasan dengan berbagai kewajiban kepatuhan. Versi OS yang ketinggalan zaman dapat mengakibatkan ketidakpatuhan terhadap persyaratan peraturan. 

## Meminimalkan downtime untuk upgrade OS yang memerlukan restart
<a name="security-os-upgrades-minimizing-downtime"></a>

 Untuk upgrade OS yang memerlukan restart, sebaiknya Anda memperbarui instance reader di cluster terlebih dahulu, kemudian instance writer untuk memaksimalkan ketersediaan cluster Anda. Kami tidak menyarankan untuk memperbarui instance pembaca dan penulis secara bersamaan, karena Anda dapat mengalami downtime yang lebih lama jika terjadi failover. 

## Menerapkan upgrade OS ke instans DB Neptunus
<a name="security-applying-os-upgrades"></a>

 Instans DB Neptunus terkadang memerlukan pembaruan sistem operasi. Amazon Neptunus meningkatkan sistem operasi ke versi yang lebih baru untuk meningkatkan kinerja database dan postur keamanan pelanggan secara keseluruhan. Pembaruan biasanya memerlukan waktu sekitar 10 menit. Pembaruan sistem operasi tidak akan mengubah versi mesin DB atau kelas instans DB dari instans DB. 

 Untuk diberi tahu saat pembaruan opsional baru tersedia, Anda dapat berlangganan `RDS-EVENT-0230` dalam kategori acara penambalan keamanan. Untuk informasi tentang berlangganan acara Amazon Neptunus, [lihat Berlangganan](https://docs.aws.amazon.com//neptune/latest/userguide/events-subscribing.html) pemberitahuan acara Neptunus. 

**penting**  
 Instans DB Amazon Neptunus Anda akan offline selama peningkatan sistem operasi. Anda dapat meminimalkan waktu henti klaster dengan memiliki klaster multi-instance. Jika Anda tidak memiliki klaster multi-instance maka Anda dapat memilih untuk membuatnya sementara dengan menambahkan instance sekunder untuk melakukan pemeliharaan ini, lalu menghapus instance pembaca tambahan setelah pemeliharaan selesai (biaya reguler untuk instance sekunder akan berlaku). 

 Anda dapat menggunakan Konsol Manajemen AWS atau AWS CLI untuk menentukan apakah pembaruan tersedia. 

### Menggunakan Konsol Manajemen AWS
<a name="security-applying-os-upgrades-management-console"></a>

 Untuk menentukan apakah pembaruan tersedia menggunakan Konsol Manajemen AWS: 

1. [Masuk ke Konsol AWS Manajemen, dan buka konsol Amazon Neptunus di rumah. https://console.aws.amazon.com/neptune/](https://console.aws.amazon.com/neptune/home)

1.  Di panel navigasi, pilih **Clusters**, lalu pilih instance. 

1.  Pilih **Pemeliharaan**. 

1.  Di bagian **Pending Maintenance**, temukan pembaruan sistem operasi. 

![\[Gambar yang menunjukkan bagian Konsol Manajemen AWS Pemeliharaan, dan pembaruan OS yang tersedia.\]](http://docs.aws.amazon.com/id_id/neptune/latest/userguide/images/consoleForOSUpgrades.png)


 Anda dapat memilih pembaruan sistem operasi dan klik **Terapkan sekarang** atau **Terapkan di jendela pemeliharaan berikutnya** di bagian **Pemeliharaan Tertunda**. Jika nilai pemeliharaan adalah **jendela berikutnya**, tunda item pemeliharaan dengan memilih **Defer upgrade**. Anda tidak dapat menunda tindakan pemeliharaan jika sudah dimulai. 

 **Atau, Anda dapat memilih instance dari daftar cluster dengan mengklik **Cluster** di panel navigasi dan pilih **Terapkan sekarang atau Terapkan** **di jendela pemeliharaan berikutnya** dari menu Tindakan.** 

### Menggunakan AWS CLI
<a name="security-applying-os-upgrades-cli"></a>

 Untuk menentukan apakah pembaruan tersedia menggunakan AWS CLI, panggil `describe-pending-maintenance-actions` perintah: 

```
aws neptune describe-pending-maintenance-actions
```

```
{
    "ResourceIdentifier": "arn:aws:rds:us-east-1:123456789012:db:myneptune",
    "PendingMaintenanceActionDetails": [
        {
            "Action": "system-update",
            "Description": "New Operating System update is available"
        }
    ]
}
```

 Untuk menerapkan Pembaruan sistem operasi, hubungi `apply-pending-maintenance-action` perintah: 

```
aws neptune apply-pending-maintenance-action \
    --apply-action system-update \
    --resource-identifier (ARN of your DB instance) \
    --opt-in-type immediate
```

# Melindungi data di database Amazon Neptunus Anda
<a name="data-protection"></a>

[Model tanggung jawab AWS bersama model](https://aws.amazon.com/compliance/shared-responsibility-model/) berlaku untuk perlindungan data di Amazon Neptunus. Seperti yang dijelaskan dalam model AWS ini, bertanggung jawab untuk melindungi infrastruktur global yang menjalankan semua AWS Cloud. Anda bertanggung jawab untuk mempertahankan kendali atas konten yang di-host pada infrastruktur ini. Anda juga bertanggung jawab atas tugas-tugas konfigurasi dan manajemen keamanan untuk Layanan AWS yang Anda gunakan. Lihat informasi yang lebih lengkap tentang privasi data dalam [Pertanyaan Umum Privasi Data](https://aws.amazon.com/compliance/data-privacy-faq/). Lihat informasi tentang perlindungan data di Eropa di pos blog [Model Tanggung Jawab Bersama dan GDPR AWS](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) di *Blog Keamanan AWS *.

Untuk tujuan perlindungan data, kami menyarankan Anda melindungi Akun AWS kredensyal dan mengatur pengguna individu dengan AWS IAM Identity Center atau AWS Identity and Access Management (IAM). Dengan cara itu, setiap pengguna hanya diberi izin yang diperlukan untuk memenuhi tanggung jawab tugasnya. Kami juga menyarankan supaya Anda mengamankan data dengan cara-cara berikut:
+ Gunakan autentikasi multi-faktor (MFA) pada setiap akun.
+ Gunakan SSL/TLS untuk berkomunikasi dengan AWS sumber daya. Kami mensyaratkan TLS 1.2 dan menganjurkan TLS 1.3.
+ Siapkan API dan pencatatan aktivitas pengguna dengan AWS CloudTrail. Untuk informasi tentang penggunaan CloudTrail jejak untuk menangkap AWS aktivitas, lihat [Bekerja dengan CloudTrail jejak](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) di *AWS CloudTrail Panduan Pengguna*.
+ Gunakan solusi AWS enkripsi, bersama dengan semua kontrol keamanan default di dalamnya Layanan AWS.
+ Gunakan layanan keamanan terkelola tingkat lanjut seperti Amazon Macie, yang membantu menemukan dan mengamankan data sensitif yang disimpan di Amazon S3.
+ Jika Anda memerlukan modul kriptografi tervalidasi FIPS 140-3 saat mengakses AWS melalui antarmuka baris perintah atau API, gunakan titik akhir FIPS. Lihat informasi selengkapnya tentang titik akhir FIPS yang tersedia di [Standar Pemrosesan Informasi Federal (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

Kami sangat merekomendasikan agar Anda tidak pernah memasukkan informasi identifikasi yang sensitif, seperti nomor rekening pelanggan Anda, ke dalam tanda atau bidang isian bebas seperti bidang **Nama**. Ini termasuk saat Anda bekerja dengan Neptunus atau Layanan AWS lainnya menggunakan konsol, API AWS CLI, atau. AWS SDKs Data apa pun yang Anda masukkan ke dalam tanda atau bidang isian bebas yang digunakan untuk nama dapat digunakan untuk log penagihan atau log diagnostik. Saat Anda memberikan URL ke server eksternal, kami sangat menganjurkan supaya Anda tidak menyertakan informasi kredensial di dalam URL untuk memvalidasi permintaan Anda ke server itu.

**penting**  
 TLS 1.3 hanya didukung untuk mesin Neptunus versi 1.3.2.0 dan yang lebih tinggi. 

Anda menggunakan panggilan API yang AWS dipublikasikan untuk mengelola Neptunus melalui jaringan. Klien harus mendukung Transport Layer Security (TLS) 1.2 atau lebih baru menggunakan rangkaian penyandian yang kuat, seperti yang dijelaskan dalam [Mengenkripsi terhubung ke database Neptunus](security-ssl.md). Sebagian besar sistem modern seperti Java 7 dan versi yang lebih baru mendukung mode ini.

Bagian berikut menjelaskan lebih lanjut bagaimana data Neptune dilindungi.

**Topics**
+ [Mengamankan database Amazon Neptunus Anda dengan Amazon VPC](security-vpc.md)
+ [Mengenkripsi koneksi ke database Amazon Neptunus Anda dengan SSL/HTTPS](security-ssl.md)
+ [Mengenkripsi data saat istirahat di database Amazon Neptunus Anda](encrypt.md)

# Mengamankan database Amazon Neptunus Anda dengan Amazon VPC
<a name="security-vpc"></a>

Cluster Amazon Neptune DB hanya *dapat* dibuat di Amazon Virtual Private Cloud (Amazon VPC), dan titik akhirnya dapat diakses dalam VPC itu, biasanya dari instans Amazon Elastic Compute Cloud (Amazon EC2) yang berjalan di VPC itu. Atau, dapat diakses menggunakan titik akhir publik. Untuk informasi selengkapnya tentang titik akhir publik, lihat titik akhir publik [Neptunus](neptune-public-endpoints.md).

Anda dapat mengamankan data Neptunus Anda dengan membatasi akses ke VPC tempat cluster DB Neptunus Anda berada, seperti yang dijelaskan dalam. [Menghubungkan ke cluster Amazon Neptunus](get-started-connecting.md)

# Mengenkripsi koneksi ke database Amazon Neptunus Anda dengan SSL/HTTPS
<a name="security-ssl"></a>

Amazon Neptunus hanya mengizinkan koneksi Secure Sockets Layer (SSL) melalui HTTPS ke instans atau titik akhir cluster apa pun.

Neptunus membutuhkan setidaknya TLS versi 1.2, menggunakan cipher suite kuat berikut:
+ `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`
+ `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384`
+ `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256`
+ `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384`

Dimulai dengan Neptunus engine versi 1.3.2.0, Neptunus mendukung TLS versi 1.3 menggunakan cipher suite berikut:
+ TLS\$1AES\$1128\$1GCM\$1 SHA256
+ TLS\$1AES\$1256\$1GCM\$1 SHA384

Bahkan saat koneksi HTTP diperbolehkan dalam versi mesin sebelumnya, setiap klaster DB yang menggunakan grup parameter klaster DB baru diperlukan untuk menggunakan SSL secara default. *Untuk melindungi data Anda, titik akhir Neptunus dalam `1.0.4.0` versi engine dan di atasnya hanya mendukung permintaan HTTPS.* Untuk informasi selengkapnya, lihat [Menggunakan titik akhir HTTP REST untuk menyambung ke instans DB Neptune](access-graph-sparql-http-rest.md).

Neptune secara otomatis menyediakan sertifikat SSL untuk instans DB Neptune Anda. Anda tidak perlu meminta sertifikat apa pun. Sertifikat disediakan saat Anda membuat instans baru.

Neptunus menetapkan sertifikat SSL wildcard tunggal ke instans di akun Anda untuk setiap Wilayah. AWS Sertifikat menyediakan entri untuk titik akhir klaster, titik akhir baca-saja klaster, dan titik akhir instans.

**Detail Sertifikat**  
Entri berikut disertakan dalam sertifikat yang disediakan:
+ Titik akhir klaster — `*.cluster-a1b2c3d4wxyz.region.neptune.amazonaws.com`
+ Titik akhir hanya-baca — `*.cluster-ro-a1b2c3d4wxyz.region.neptune.amazonaws.com`
+ Titik akhir instans — `*.a1b2c3d4wxyz.region.neptune.amazonaws.com`

Hanya entri yang tercantum di sini yang didukung. 

**Koneksi Proksi**  
Sertifikat hanya mendukung nama host yang tercantum di bagian sebelumnya. 

Jika Anda menggunakan penyeimbang beban atau server proxy (seperti HAProxy), Anda harus menggunakan penghentian SSL dan memiliki sertifikat SSL Anda sendiri di server proxy. 

Passthrough SSL tidak bekerja karena sertifikat SSL yang disediakan tidak cocok dengan nama host server proxy.

**Sertifikat CA Akar**  
Sertifikat untuk instans Neptune biasanya divalidasi menggunakan penyimpanan kepercayaan lokal dari sistem operasi atau SDK (seperti Java SDK).

Jika Anda perlu memberikan sertifikat akar secara manual, Anda dapat men-download [Sertifikat CA Akar Amazon](https://www.amazontrust.com/repository/AmazonRootCA1.pem) dalam format PEM dari [Amazon Trust Services Policy Repository](https://www.amazontrust.com/repository/).

**Informasi Selengkapnya**  
Untuk informasi selengkapnya tentang menghubungkan ke titik akhir Neptune dengan SSL, lihat [Mengatur konsol Gremlin agar terhubung ke instans DB Neptune](access-graph-gremlin-console.md) dan [Menggunakan titik akhir HTTP REST untuk menyambung ke instans DB Neptune](access-graph-sparql-http-rest.md).

# Mengenkripsi data saat istirahat di database Amazon Neptunus Anda
<a name="encrypt"></a>

Instans yang dienkripsi oleh Neptune memberikan lapisan perlindungan data tambahan dengan membantu mengamankan data Anda dari akses yang tidak sah ke penyimpanan yang mendasari. Anda dapat menggunakan enkripsi Neptune untuk meningkatkan perlindungan data aplikasi Anda yang disebarkan di cloud. Anda juga dapat menggunakannya untuk memenuhi persyaratan kepatuhan untuk data-at-rest enkripsi.

[Untuk mengelola kunci yang digunakan untuk mengenkripsi dan mendekripsi sumber daya Neptunus Anda, Anda menggunakan ().AWS Key Management ServiceAWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/) AWS KMS menggabungkan perangkat keras dan perangkat lunak yang aman dan sangat tersedia untuk menyediakan sistem manajemen kunci yang diskalakan untuk cloud. Dengan menggunakan AWS KMS, Anda dapat membuat kunci enkripsi dan menentukan kebijakan yang mengontrol bagaimana kunci ini dapat digunakan. AWS KMS mendukung AWS CloudTrail, sehingga Anda dapat mengaudit penggunaan kunci untuk memverifikasi bahwa kunci sedang digunakan dengan tepat. Anda dapat menggunakan AWS KMS tombol dalam kombinasi dengan Neptunus dan layanan yang AWS didukung seperti Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3), Amazon Elastic Block Store (Amazon EBS), dan Amazon Redshift. Untuk daftar layanan yang mendukung AWS KMS, lihat [Cara Penggunaan AWS Layanan AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services.html) di *Panduan AWS Key Management Service Pengembang*.

Untuk instans yang dienkripsi Neptune, semua log, cadangan, dan tangkapan layar dienkripsi.

## Mengaktifkan Enkripsi untuk instans DB Neptune
<a name="encrypt-enable"></a>

Untuk mengaktifkan enkripsi untuk instans Neptune DB baru, pilih **Ya** dalam bagian **Aktifkan enkripsi** pada konsol Neptune. Untuk informasi tentang membuat instans DB Neptune, lihat [Membuat cluster Amazon Neptunus](get-started-create-cluster.md).

Saat Anda membuat instans DB Neptunus terenkripsi, Anda juga dapat menyediakan pengenal kunci untuk AWS KMS kunci enkripsi Anda. Jika Anda tidak menentukan pengenal AWS KMS kunci, Neptunus menggunakan kunci enkripsi Amazon RDS default `aws/rds` () untuk instans DB Neptunus baru Anda. AWS KMS membuat kunci enkripsi default Anda untuk Neptunus untuk akun Anda. AWS AWS Akun Anda memiliki kunci enkripsi default yang berbeda untuk setiap AWS Wilayah.

Setelah membuat instans DB Neptune terenkripsi, Anda tidak dapat mengubah kunci enkripsi untuk instans tersebut. Oleh karena itu, pastikan untuk menentukan persyaratan kunci enkripsi Anda sebelum membuat instans DB Neptune terenkripsi Anda.

Anda dapat menggunakan Amazon Resource Name (ARN) untuk kunci dari akun lain untuk mengenkripsi instans DB Neptune. Jika Anda membuat instans DB Neptunus dengan akun AWS yang sama yang memiliki kunci enkripsi yang digunakan untuk mengenkripsi instans DB Neptunus baru itu, ID kunci yang Anda lewati dapat AWS KMS menjadi alias kunci alih-alih ARN AWS KMS kunci. AWS KMS 

**penting**  
Jika Neptune kehilangan akses ke kunci enkripsi untuk instans DB Neptune—misalnya, ketika akses Neptune ke kunci dicabut—instans DB terenkripsi ditempatkan ke status terminal dan hanya dapat dipulihkan dari cadangan. Kami sangat menyarankan agar Anda selalu mengaktifkan pencadangan untuk instans NeptuneDB terenkripsi untuk mengamankan dari kehilangan data terenkripsi di basis data Anda.

## Izin kunci yang dibutuhkan saat mengaktifkan enkripsi
<a name="encrypt-key-permissions"></a>

Pengguna IAM atau IAM role yang menciptakan instans DB Neptune terenkripsi harus memiliki setidaknya izin berikut untuk kunci KMS:
+ `"kms:Encrypt"`
+ `"kms:Decrypt"`
+ `"kms:GenerateDataKey"`
+ `"kms:ReEncryptTo"`
+ `"kms:GenerateDataKeyWithoutPlaintext"`
+ `"kms:CreateGrant"`
+ `"kms:ReEncryptFrom"`
+ `"kms:DescribeKey"`

Berikut adalah contoh kebijakan kunci yang mencakup izin yang diperlukan:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "key-consolepolicy-3",
  "Statement": [
    {
      "Sid": "Allow use of the key for Neptune",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:role/NeptuneFullAccess"
      },
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:GenerateDataKey",
        "kms:ReEncryptTo",
        "kms:GenerateDataKeyWithoutPlaintext",
        "kms:CreateGrant",
        "kms:ReEncryptFrom",
        "kms:DescribeKey"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "rds.us-east-1.amazonaws.com"
        }
      }
    },
    {
      "Sid": "Deny use of the key for non Neptune",
      "Effect": "Deny",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:role/NeptuneFullAccess"
      },
      "Action": [
        "kms:*"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "kms:ViaService": "rds.us-east-1.amazonaws.com"
        }
      }
    }
  ]
}
```

------
+ Pernyataan pertama memberikan akses ke semua yang diperlukan AWS KMS APIs untuk peran ini, dicakup ke Kepala Layanan RDS.
+ Pernyataan kedua memperketat keamanan lebih dengan menegakkan bahwa kunci ini tidak dapat digunakan oleh peran ini untuk layanan lain AWS .

Anda juga dapat menurunkan izin `createGrant` lebih lanjut dengan menambahkan:

```
"Condition": {
  "Bool": {
    "kms:GrantIsForAWSResource": true
  }
}
```

## Keterbatasan Enkripsi Neptune
<a name="encrypt-limitations"></a>

Keterbatasan berikut ada untuk mengenkripsi klaster Neptune:
+ Anda tidak dapat mengonversi klaster DB yang tidak terenkripsi ke klaster terenkripsi.

  Namun, Anda dapat memulihkan snapshot klaster DB yang tidak terenkripsi ke klaster DB terenkripsi. Untuk melakukannya, tentukan kunci enkripsi KMS saat Anda memulihkan dari snapshot klaster DB yang tidak terenkripsi.
+ Anda tidak dapat mengonversi instans DB yang tidak terenkripsi ke klaster terenkripsi. Anda hanya dapat mengaktifkan enkripsi untuk instans DB saat Anda membuatnya.
+ Selain itu, instans DB yang dienkripsi tidak dapat dimodifikasi untuk menonaktifkan enkripsi.
+ Anda tidak dapat memiliki Replika Baca terenkripsi dari instans DB yang tidak dienkripsi atau Replika Baca yang tidak dienkripsi dari instans DB yang dienkripsi.
+ Replika baca terenkripsi harus dienkripsikan dengan kunci yang sama dengan instans DB sumber.

# Mengautentikasi database Amazon Neptunus Anda dengan AWS Identity and Access Management
<a name="iam-auth"></a>

AWS Identity and Access Management (IAM) adalah Layanan AWS yang membantu administrator mengontrol akses ke AWS sumber daya dengan aman. Administrator IAM mengontrol siapa yang dapat *terautentikasi* (masuk) dan *berwenang* (memiliki izin) untuk menggunakan sumber daya Neptune. IAM adalah Layanan AWS yang dapat Anda gunakan tanpa biaya tambahan.

Anda dapat menggunakan AWS Identity and Access Management (IAM) untuk mengautentikasi ke instans DB Neptunus atau cluster DB Anda. Ketika autentikasi database IAM diaktifkan, setiap permintaan harus ditandatangani menggunakan AWS Signature Version 4.

AWS Signature Version 4 menambahkan informasi otentikasi ke AWS permintaan. Untuk keamanan, semua permintaan ke klaster DB Neptune dengan autentikasi IAM diaktifkan harus ditandatangani dengan access key. Kunci ini terdiri dari access key ID dan secret access key. Autentikasi dikelola secara eksternal menggunakan kebijakan IAM.

Neptunus mengautentikasi pada koneksi, dan WebSockets untuk koneksi itu memverifikasi izin secara berkala untuk memastikan bahwa pengguna masih memiliki akses.

**catatan**  
Mencabut, menghapus, atau memutar kredensials yang terkait dengan pengguna IAM tidak dianjurkan karena tidak mengakhiri koneksi yang sudah terbuka.
Ada batasan jumlah WebSocket koneksi bersamaan per instance database, dan berapa lama koneksi dapat tetap terbuka. Untuk informasi selengkapnya, lihat [WebSockets Batas](limits.md#limits-websockets).

## Penggunaan IAM Tergantung Peran Anda
<a name="security-iam-audience"></a>

Cara Anda menggunakan AWS Identity and Access Management (IAM) berbeda, tergantung pada pekerjaan yang Anda lakukan di Neptunus.

**Pengguna layanan** — Jika Anda menggunakan layanan Neptunus untuk melakukan pekerjaan Anda, administrator Anda memberi Anda kredensi dan izin yang Anda perlukan untuk menggunakan bidang data Neptunus. Karena Anda memerlukan lebih banyak akses untuk melakukan pekerjaan Anda, memahami bagaimana akses data dikelola dapat membantu Anda meminta izin yang tepat dari administrator Anda.

**Administrator layanan** [- Jika Anda bertanggung jawab atas sumber daya Neptunus di perusahaan Anda, Anda mungkin memiliki akses ke tindakan manajemen Neptunus, yang sesuai dengan API manajemen Neptunus.](api.md) Mungkin juga tugas Anda untuk menentukan tindakan akses data Neptunus dan layanan sumber daya yang dibutuhkan pengguna untuk melakukan pekerjaan mereka. Administrator IAM kemudian dapat menerapkan kebijakan IAM untuk mengubah izin pengguna layanan Anda.

**Administrator IAM** — Jika Anda seorang administrator IAM, Anda perlu menulis kebijakan IAM untuk mengelola manajemen dan akses data ke Neptunus. Untuk melihat contoh kebijakan berbasis identitas Neptunus yang dapat Anda gunakan, lihat. [Menggunakan berbagai jenis kebijakan IAM untuk mengontrol akses ke Neptunus](security-iam-access-manage.md#iam-auth-policy)

## Mengautentikasi dengan Identitas
<a name="security-iam-authentication"></a>

Otentikasi adalah cara Anda masuk AWS menggunakan kredensyal identitas Anda. Anda harus diautentikasi sebagai Pengguna root akun AWS, pengguna IAM, atau dengan mengasumsikan peran IAM.

Anda dapat masuk sebagai identitas federasi menggunakan kredensil dari sumber identitas seperti AWS IAM Identity Center (Pusat Identitas IAM), autentikasi masuk tunggal, atau kredensional. Google/Facebook Untuk informasi selengkapnya tentang cara masuk, lihat [Cara masuk ke Akun AWS Anda](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) dalam *Panduan Pengguna AWS Sign-In *.

Untuk akses terprogram, AWS sediakan SDK dan CLI untuk menandatangani permintaan secara kriptografis. Untuk informasi selengkapnya, lihat [AWS Signature Version 4 untuk permintaan API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) dalam *Panduan Pengguna IAM*.

### Akun AWS pengguna root
<a name="security-iam-authentication-rootuser"></a>

 Saat Anda membuat Akun AWS, Anda mulai dengan satu identitas masuk yang disebut *pengguna Akun AWS root* yang memiliki akses lengkap ke semua Layanan AWS dan sumber daya. Kami sangat menyarankan agar Anda tidak menggunakan pengguna root untuk tugas sehari-hari. Untuk tugas yang memerlukan kredensial pengguna root, lihat [Tugas yang memerlukan kredensial pengguna root](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks) dalam *Panduan Pengguna IAM*. 

### Pengguna dan Grup IAM
<a name="security-iam-authentication-iamuser"></a>

*[Pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)* adalah identitas dengan izin khusus untuk satu orang atau aplikasi. Sebaiknya gunakan kredensial sementara alih-alih pengguna IAM dengan kredensial jangka panjang. Untuk informasi selengkapnya, lihat [Mewajibkan pengguna manusia untuk menggunakan federasi dengan penyedia identitas untuk mengakses AWS menggunakan kredensi sementara](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) di Panduan Pengguna *IAM*.

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) menentukan kumpulan pengguna IAM dan mempermudah pengelolaan izin untuk pengguna dalam jumlah besar. Untuk mempelajari selengkapnya, lihat [Kasus penggunaan untuk pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) dalam *Panduan Pengguna IAM*.

### Peran IAM
<a name="security-iam-authentication-iamrole"></a>

*[Peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)* adalah identitas dengan izin khusus yang menyediakan kredensial sementara. Anda dapat mengambil peran dengan [beralih dari pengguna ke peran IAM (konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) atau dengan memanggil operasi AWS CLI atau AWS API. Untuk informasi selengkapnya, lihat [Metode untuk mengambil peran](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html) dalam *Panduan Pengguna IAM*.

Peran IAM berguna untuk akses pengguna terfederasi, izin pengguna IAM sementara, akses lintas akun, akses lintas layanan, dan aplikasi yang berjalan di Amazon EC2. Untuk informasi selengkapnya, lihat [Akses sumber daya lintas akun di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) dalam *Panduan Pengguna IAM*.

# Mengaktifkan otentikasi database IAM di Amazon Neptunus
<a name="iam-auth-enable"></a>

Secara default, autentikasi basis data IAM dinonaktifkan saat Anda membuat klaster DB Amazon Neptune. Anda dapat mengaktifkan autentikasi basis data IAM (atau atau menonaktifkannya kembali) menggunakan Konsol Manajemen AWS.

Untuk membuat klaster DB Neptune baru dengan autentikasi IAM menggunakan konsol, ikuti petunjuk untuk membuat klaster DB Neptune di [Meluncurkan cluster DB Neptunus menggunakan Konsol Manajemen AWS](manage-console-launch-console.md).

Di halaman kedua proses pembuatan, untuk **Mengaktifkan Autentikasi IAM DB**, pilih **Ya**.

**Untuk mengaktifkan atau menonaktifkan autentikasi IAM untuk instans DB atau klaster yang ada**

1. [Masuk ke Konsol AWS Manajemen, dan buka konsol Amazon Neptunus di rumah. https://console.aws.amazon.com/neptune/](https://console.aws.amazon.com/neptune/home)

1. Pada panel navigasi, silakan pilih **Klaster**.

1. Pilih kluster DB Neptune yang ingin Anda ubah, dan pilih **Tindakan klaster**. Lalu pilih **Ubah klaster**.

1. Di bagian **Opsi basis data**, untuk **Autentikasi DB IAM**, pilih salah satu dari **Aktifkan autorisasi DB IAM** atau **Tidak** (untuk menonaktifkan). Lalu, pilih **Lanjutkan**.

1. Untuk segera menerapkan perubahan, pilih **Terapkan segera**.

1. Pilih **Ubah klaster**.

# Menghubungkan ke database Amazon Neptunus Anda menggunakan otentikasi AWS Identity and Access Management
<a name="iam-auth-connecting"></a>

Sumber daya Amazon Neptunus yang mengaktifkan autentikasi IAM DB memerlukan semua permintaan HTTP ditandatangani menggunakan Signature Version 4. AWS Untuk informasi umum tentang penandatanganan permintaan dengan AWS Signature Versi 4, lihat [Menandatangani permintaan AWS API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html).

AWS Signature Version 4 adalah proses untuk menambahkan informasi otentikasi ke AWS permintaan. Untuk keamanan, sebagian besar permintaan AWS harus ditandatangani dengan kunci akses, yang terdiri dari ID kunci akses dan kunci akses rahasia.

**catatan**  
Jika Anda menggunakan kredensial sementara, kredensial kedaluwarsa setelah interval tertentu, *termasuk token sesinya*.  
Anda harus memperbarui token sesi Anda ketika Anda meminta kredensial baru. Untuk informasi selengkapnya, lihat [Menggunakan Kredensil Keamanan Sementara untuk Meminta Akses ke AWS Sumber Daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html).

**penting**  
Mengakses Neptune dengan autentikasi berbasis IAM mengharuskan Anda membuat permintaan HTTP dan menandatangani permintaan itu sendiri.

**Cara Kerja Tanda Tangan Version 4**

1. Anda membuat permintaan kanonik.

1. Anda menggunakan permintaan kanonik dan beberapa informasi lainnya untuk membuat. string-to-sign

1. Anda menggunakan kunci akses AWS rahasia Anda untuk mendapatkan kunci penandatanganan, dan kemudian menggunakan kunci penandatanganan itu dan string-to-sign untuk membuat tanda tangan.

1. Anda menambahkan tanda tangan yang dihasilkan untuk permintaan HTTP di header atau sebagai parameter string kueri.

Ketika Neptune menerima permintaan, ia melakukan langkah yang sama seperti yang Anda lakukan untuk menghitung tanda tangan. Neptune kemudian membandingkan tanda tangan yang dihitung dengan yang Anda kirim bersama permintaan. Jika tanda tangan cocok, permintaan diproses. Jika tanda tangan tidak cocok, permintaan ditolak.

Untuk informasi umum tentang penandatanganan permintaan dengan AWS Tanda Tangan Versi 4, lihat [Proses Penandatanganan Versi Tanda Tangan 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) di *Referensi Umum AWS*.

Bagian berikut berisi contoh yang menunjukkan cara mengirim permintaan yang ditandatangani ke titik akhir Gremlin dan SPARQL dari instans DB Neptune dengan autentikasi IAM diaktifkan.

**Topics**
+ [Prasyarat untuk menghubungkan database Amazon Neptunus menggunakan otentikasi IAM](iam-auth-connect-prerq.md)
+ [Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dari baris perintah](iam-auth-connect-command-line.md)
+ [Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan konsol Gremlin](iam-auth-connecting-gremlin-console.md)
+ [Menghubungkan ke database Amazon Neptunus menggunakan IAM dengan Gremlin Java](iam-auth-connecting-gremlin-java.md)
+ [Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan Java dan SPARQL](iam-auth-connecting-sparql-java.md)
+ [Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan SPARQL dan Node.js](iam-auth-connecting-sparql-node.md)
+ [Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan Python](iam-auth-connecting-python.md)
+ [Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan Python Gremlin](gremlin-python-iam-auth.md)
+ [Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan Gremlin JavaScript](gremlin-javascript-iam-auth.md)
+ [Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan Gremlin Go](gremlin-go-iam-auth.md)
+ [Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan Gremlin.NET](gremlin-dotnet-iam-auth.md)

# Prasyarat untuk menghubungkan database Amazon Neptunus menggunakan otentikasi IAM
<a name="iam-auth-connect-prerq"></a>

Berikut ini adalah petunjuk untuk menginstal Apache Maven dan Java 8 pada instans Amazon EC2. Ini diperlukan untuk sampel autentikasi Amazon Neptune Signature Versi 4.

**Untuk menginstal Apache Maven dan Java 8 pada instans EC2 Anda**

1. Hubungkan ke instans Amazon EC2 dengan klien SSH.

1. Install Apache Maven di instans EC2 Anda. Jika menggunakan Amazon Linux 2023 (lebih disukai), gunakan:

   ```
   sudo dnf update -y
   sudo dnf install maven -y
   ```

   Jika menggunakan Amazon Linux 2, unduh biner terbaru dari [https://maven.apache.org/download.cgi:](https://maven.apache.org/download.cgi:)

   ```
   sudo yum remove maven -y
   wget https://dlcdn.apache.org/maven/maven-3/ <version>/binaries/apache-maven-<version>-bin.tar.gz
   sudo tar -xzf apache-maven-<version>-bin.tar.gz -C /opt/
   sudo ln -sf /opt/apache-maven-<version> /opt/maven
   echo 'export MAVEN_HOME=/opt/maven' >> ~/.bashrc
   echo 'export PATH=$MAVEN_HOME/bin:$PATH' >> ~/.bashrc
   source ~/.bashrc
   ```

1. Pustaka Gremlin membutuhkan Java 8. Masukkan hal berikut ini untuk menginstal Java 8 pada instans EC2 Anda.

   ```
   sudo yum install java-1.8.0-devel
   ```

1. Masukkan hal berikut untuk mengatur Java 8 sebagai runtime default pada instans EC2 Anda.

   ```
   sudo /usr/sbin/alternatives --config java
   ```

   Saat diminta, masukkan nomor untuk Java 8.

1. Masukkan hal berikut untuk mengatur Java 8 sebagai compiler default pada instans EC2 Anda.

   ```
   sudo /usr/sbin/alternatives --config javac
   ```

   Saat diminta, masukkan nomor untuk Java 8.

# Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dari baris perintah
<a name="iam-auth-connect-command-line"></a>

Memiliki alat baris perintah untuk mengirimkan kueri ke cluster DB Neptunus Anda sangat berguna, seperti yang diilustrasikan dalam banyak contoh dalam dokumentasi ini. Alat [curl](https://curl.haxx.se/) adalah opsi yang sangat baik untuk berkomunikasi dengan titik akhir Neptunus jika otentikasi IAM tidak diaktifkan.

**Namun, untuk menjaga keamanan data Anda, yang terbaik adalah mengaktifkan otentikasi IAM.**

Ketika autentikasi IAM diaktifkan, setiap permintaan harus [ditandatangani menggunakan Signature Version 4 (Sig4)](https://docs.aws.amazon.com/general/latest/gr/signing-aws-api-requests.html). Alat baris perintah [awscurl](https://github.com/okigan/awscurl) pihak ketiga menggunakan sintaks yang sama seperti, dan dapat menandatangani kueri menggunakan `curl` penandatanganan Sig4. [Menggunakan `awscurl`](#iam-auth-connect-awscurl)Bagian di bawah ini menjelaskan cara menggunakan `awscurl` secara aman dengan kredensil sementara.

## Menyiapkan alat baris perintah untuk menggunakan HTTPS
<a name="iam-auth-connect-command-line-https"></a>

Neptunus mengharuskan semua koneksi menggunakan HTTPS. Alat baris perintah apa pun seperti `curl` atau `awscurl` memerlukan akses ke sertifikat yang sesuai untuk menggunakan HTTPS. Selama `curl` atau `awscurl` dapat menemukan sertifikat yang sesuai, mereka menangani koneksi HTTPS seperti koneksi HTTP, tanpa memerlukan parameter tambahan. Contoh dalam dokumentasi ini didasarkan pada skenario tersebut.

Untuk mempelajari cara mendapatkan sertifikat tersebut dan cara memformatnya dengan benar ke dalam penyimpanan sertifikat otoritas sertifikat (CA) yang `curl` dapat digunakan, lihat [Verifikasi Sertifikat SSL](https://curl.haxx.se/docs/sslcerts.html) dalam `curl` dokumentasi.

Anda kemudian dapat menentukan lokasi penyimpanan sertifikat CA ini menggunakan variabel lingkungan `CURL_CA_BUNDLE`. Pada Windows, `curl` secara otomatis mencarinya dalam sebuah file bernama `curl-ca-bundle.crt`. Ia pertama mencari dalam direktori yang sama dengan `curl.exe` dan kemudian di tempat lain di jalurnya. Untuk informasi lebih lanjut, lihat [Verifikasi Sertifikat SSL](https://curl.haxx.se/docs/sslcerts.html).

## Menggunakan `awscurl` dengan kredensyal sementara untuk terhubung dengan aman ke cluster DB dengan otentikasi IAM diaktifkan
<a name="iam-auth-connect-awscurl"></a>

Alat [awscurl](https://github.com/okigan/awscurl) menggunakan sintaks yang sama seperti`curl`, tetapi membutuhkan informasi tambahan juga:
+ **`--access_key`**— Kunci akses yang valid. Jika tidak disediakan menggunakan parameter ini, itu harus disediakan dalam variabel `AWS_ACCESS_KEY_ID` lingkungan, atau dalam file konfigurasi.
+ **`--secret_key`**— Kunci rahasia yang valid sesuai dengan kunci akses. Jika tidak disediakan menggunakan parameter ini, itu harus disediakan dalam variabel `AWS_SECRET_ACCESS_KEY` lingkungan, atau dalam file konfigurasi.
+ **`--security_token`**— Token sesi yang valid. Jika tidak disediakan menggunakan parameter ini, itu harus disediakan dalam variabel `AWS_SECURITY_TOKEN` lingkungan, atau dalam file konfigurasi.

Di masa lalu, itu adalah praktik umum untuk menggunakan kredensil persisten dengan`awscurl`, seperti kredensil pengguna IAM atau bahkan kredensil root, tetapi ini tidak disarankan. [Sebagai gantinya, buat kredensyal sementara menggunakan salah satu [AWS Security Token Service (STS) APIs](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html), atau salah satu pembungkusnya AWS CLI .](https://docs.aws.amazon.com/cli/latest/reference/sts/index.html)

Yang terbaik adalah menempatkan`AccessKeyId`,`SecretAccessKey`, dan `SessionToken` nilai yang dikembalikan oleh panggilan STS ke variabel lingkungan yang sesuai di sesi shell Anda daripada ke dalam file konfigurasi. Kemudian, ketika shell berakhir, kredensyal secara otomatis dibuang, yang tidak terjadi dengan file konfigurasi. Demikian pula, jangan meminta durasi yang lebih lama untuk kredensyal sementara daripada yang mungkin Anda butuhkan.

Contoh berikut menunjukkan langkah-langkah yang mungkin Anda ambil dalam shell Linux untuk mendapatkan kredensyal sementara yang baik selama setengah jam menggunakan [sts assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role), dan kemudian menempatkannya dalam variabel lingkungan di mana dapat menemukannya: `awscurl`

```
aws sts assume-role \
    --duration-seconds 1800 \
    --role-arn "arn:aws:iam::(account-id):role/(rolename)" \
    --role-session-name AWSCLI-Session > $output
AccessKeyId=$(echo $output | jq '.Credentials''.AccessKeyId')
SecretAccessKey=$(echo $output | jq '.Credentials''.SecretAccessKey')
SessionToken=$(echo $output | jq '.Credentials''.SessionToken')

export AWS_ACCESS_KEY_ID=$AccessKeyId
export AWS_SECRET_ACCESS_KEY=$SecretAccessKey
export AWS_SESSION_TOKEN=$SessionToken
```

Anda kemudian dapat menggunakan `awscurl` untuk membuat permintaan yang ditandatangani ke cluster DB Anda seperti ini:

```
awscurl (your cluster endpoint):8182/status \
    --region us-east-1 \
    --service neptune-db
```

# Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan konsol Gremlin
<a name="iam-auth-connecting-gremlin-console"></a>

Untuk menyambung ke Amazon Neptunus menggunakan konsol Gremlin dengan otentikasi Signature Version 4, Anda `requestInterceptor()` gunakan untuk menyambungkan tanda tangan SiGv4 ke sambungan yang dibuat oleh perintah. `:remote` Ini mengharuskan Anda untuk mengkonfigurasi `Cluster` objek secara manual dan kemudian meneruskannya ke `:remote` perintah.

Perhatikan bahwa ini sangat berbeda dari situasi khas di mana `:remote` perintah mengambil file konfigurasi untuk membentuk koneksi. Pendekatan file konfigurasi tidak akan berfungsi karena `requestInterceptor()` harus diatur secara terprogram, dan tidak dapat memuat konfigurasinya dari file.

**catatan**  
Contoh berikut digunakan`requestInterceptor()`, yang diperkenalkan di TinkerPop 3.6.6. Jika Anda menggunakan TinkerPop versi lebih awal dari 3.6.6 (tetapi 3.5.5 atau lebih tinggi), gunakan `handshakeInterceptor()` alih-alih `requestInterceptor()` dalam contoh kode di bawah ini.

Prasyarat berikut diperlukan:
+ Anda harus memiliki kredensyal IAM yang diperlukan untuk menandatangani permintaan. Lihat [Menggunakan rantai penyedia kredensi default](https://docs.aws.amazon.com//sdk-for-java/latest/developer-guide/credentials-chain.html) di Panduan AWS SDK untuk Java Pengembang.
+ Anda harus menginstal versi konsol Gremlin yang kompatibel dengan versi mesin Neptunus yang digunakan oleh cluster DB Anda.

Jika Anda menggunakan kredensil sementara, kredensil tersebut akan kedaluwarsa setelah interval tertentu, seperti halnya token sesi, jadi Anda harus memperbarui token sesi saat Anda meminta kredensil baru. Lihat [Menggunakan kredensil keamanan sementara untuk meminta akses ke AWS sumber daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) di Panduan Pengguna IAM.

Untuk bantuan menghubungkan menggunakan SSL/TLS, lihat. [Konfigurasi SSL/TLS](access-graph-gremlin-java.md#access-graph-gremlin-java-ssl)

**Hubungkan konsol Gremlin dengan penandatanganan Sig4**

1. Mulai konsol Gremlin:

   ```
   $ bin/gremlin.sh
   ```

1. Pada `gremlin>` prompt, instal `amazon-neptune-sigv4-signer` perpustakaan (ini hanya perlu dilakukan sekali untuk konsol):

   ```
   :install com.amazonaws amazon-neptune-sigv4-signer 2.4.0
   ```

   Jika Anda mengalami masalah dengan langkah ini, mungkin membantu untuk berkonsultasi dengan [TinkerPop dokumentasi](https://tinkerpop.apache.org/docs/current/reference/#gremlin-applications) tentang konfigurasi [Grape](http://docs.groovy-lang.org/latest/html/documentation/grape.html).
**catatan**  
Jika Anda menggunakan proxy HTTP, Anda mungkin mengalami kesalahan dengan langkah ini di mana `:install` perintah tidak selesai. Untuk mengatasi masalah ini, jalankan perintah berikut untuk memberi tahu konsol tentang proxy:  

   ```
   System.setProperty("https.proxyHost", "(the proxy IP address)")
   System.setProperty("https.proxyPort", "(the proxy port)")
   ```

1. Impor kelas yang diperlukan untuk menangani masuk ke`requestInterceptor()`:

   ```
   :import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider
   :import com.amazonaws.neptune.auth.NeptuneNettyHttpSigV4Signer
   ```

1. Jika Anda menggunakan kredensi sementara, Anda juga perlu menyediakan Token Sesi Anda sebagai berikut:

   ```
   System.setProperty("aws.sessionToken","(your session token)")
   ```

1. Jika Anda belum menetapkan kredensi akun Anda, Anda dapat menetapkannya sebagai berikut:

   ```
   System.setProperty("aws.accessKeyId","(your access key)")
   System.setProperty("aws.secretKey","(your secret key)")
   ```

1. Buat `Cluster` objek secara manual untuk terhubung ke Neptunus:

   ```
   cluster = Cluster.build("(host name)")  \
                    .enableSsl(true) \
                    .requestInterceptor { r ->  \
                      def sigV4Signer = new NeptuneNettyHttpSigV4Signer("(Amazon region)", \
                                        DefaultCredentialsProvider.create()); \
                      sigV4Signer.signRequest(r); \
                      return r; } \
                    .create()
   ```

   Untuk bantuan menemukan nama host dari instans DB Neptunus, lihat. [Menghubungkan ke Titik Akhir Amazon Neptune.](feature-overview-endpoints.md)

1. Buat `:remote` koneksi menggunakan nama variabel `Cluster` objek pada langkah sebelumnya:

   ```
   :remote connect tinkerpop.server cluster
   ```

1. Masukkan perintah berikut untuk beralih ke mode jarak jauh. Ini mengirimkan semua kueri Gremlin ke koneksi jarak jauh:

   ```
   :remote console
   ```

# Menghubungkan ke database Amazon Neptunus menggunakan IAM dengan Gremlin Java
<a name="iam-auth-connecting-gremlin-java"></a>

Berikut adalah contoh cara terhubung ke Neptunus menggunakan Gremlin Java API dengan penandatanganan Sig4 (ini mengasumsikan pengetahuan umum tentang penggunaan Maven). Contoh ini menggunakan library [Amazon Neptune SiGv4 Signer](https://github.com/aws/amazon-neptune-sigv4-signer) untuk membantu penandatanganan permintaan. Pertama, tentukan dependensi sebagai bagian dari file: `pom.xml`

**catatan**  
Contoh berikut digunakan`requestInterceptor()`, yang diperkenalkan di TinkerPop 3.6.6. Jika Anda menggunakan TinkerPop versi lebih awal dari 3.6.6 (tetapi 3.5.5 atau lebih tinggi), gunakan `handshakeInterceptor()` alih-alih `requestInterceptor()` dalam contoh kode di bawah ini.

```
<dependency>
  <groupId>com.amazonaws</groupId>
  <artifactId>amazon-neptune-sigv4-signer</artifactId>
  <version>3.1.0</version>
</dependency>
```

 Amazon Neptune SiGv4 Signer mendukung kedua versi 1.x dan 2.x dari Java SDK. AWS Contoh berikut menggunakan 2.x, di mana `DefaultCredentialsProvider` adalah sebuah `software.amazon.awssdk.auth.credentials.AwsCredentialsProvider` instance. Jika Anda memutakhirkan dari 1.x ke 2.x, lihat [perubahan penyedia Credentials](https://docs.aws.amazon.com//sdk-for-java/latest/developer-guide/migration-client-credentials.html) dalam dokumentasi SDK for AWS Java 2.x. 

```
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;
import com.amazonaws.neptune.auth.NeptuneNettyHttpSigV4Signer;
import com.amazonaws.neptune.auth.NeptuneSigV4SignerException;

 ...

System.setProperty("aws.accessKeyId","your-access-key");
System.setProperty("aws.secretKey","your-secret-key");

 ...

Cluster cluster = Cluster.build((your cluster))
                 .enableSsl(true)
                 .requestInterceptor( r ->
                  {
                    try {
                      NeptuneNettyHttpSigV4Signer sigV4Signer =
                        new NeptuneNettyHttpSigV4Signer("(your region)", DefaultCredentialsProvider.create());
                      sigV4Signer.signRequest(r);
                    } catch (NeptuneSigV4SignerException e) {
                      throw new RuntimeException("Exception occurred while signing the request", e);
                    }
                    return r;
                  }
                 ).create();
try {
  Client client = cluster.connect();
  client.submit("g.V().has('code','IAD')").all().get();
} catch (Exception e) {
  throw new RuntimeException("Exception occurred while connecting to cluster", e);
}
```

## Autentikasi IAM lintas akun
<a name="iam-auth-connecting-gremlin-java-cross-account"></a>

 [Amazon Neptunus mendukung otentikasi IAM lintas akun melalui penggunaan asumsi peran, juga kadang-kadang disebut sebagai rantai peran.](https://docs.aws.amazon.com//neptune/latest/userguide/bulk-load-tutorial-chain-roles.html#bulk-load-tutorial-chain-cross-account) Untuk menyediakan akses ke cluster Neptunus dari aplikasi yang dihosting di akun yang berbeda: AWS 
+  Buat pengguna atau peran IAM baru di AWS akun aplikasi, dengan kebijakan kepercayaan yang memungkinkan pengguna atau peran untuk mengambil peran IAM lain. Tetapkan peran ini ke komputasi yang menghosting aplikasi (instans EC2, fungsi Lambda, Tugas ECS, dll.). 

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Sid": "assumeRolePolicy",
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::111122223333:role/role-name"
      }
    ]
  }
  ```

------
+  Buat peran IAM baru di akun AWS database Neptunus yang memungkinkan akses ke database Neptunus dan memungkinkan asumsi peran dari pengguna/peran IAM akun aplikasi. Gunakan kebijakan kepercayaan: 

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "AWS": [
                      "(ARN of application account IAM user or role)"
                  ]
              },
              "Action": "sts:AssumeRole",
              "Condition": {}
          }
      ]
  }
  ```

------
+  Gunakan contoh kode berikut sebagai panduan tentang cara menggunakan dua peran ini untuk memungkinkan aplikasi mengakses Neptunus. Dalam contoh ini, peran akun aplikasi akan diasumsikan melalui [DefaultCredentialProviderChain](https://docs.aws.amazon.com//sdk-for-java/v1/developer-guide/credentials.html)saat membuat`STSclient`. Kemudian `STSclient` digunakan melalui `STSAssumeRoleSessionCredentialsProvider` untuk mengambil peran yang dihosting di akun database AWS Neptunus. 

  ```
  public static void main( String[] args )
    {
  
      /* 
       * Establish an STS client from the application account.
       */
      AWSSecurityTokenService client = AWSSecurityTokenServiceClientBuilder
          .standard()
          .build();
  
      /*
       * Define the role ARN that you will be assuming in the database account where the Neptune cluster resides.
       */
      String roleArnToAssume = "arn:aws:iam::012345678901:role/CrossAccountNeptuneRole";
      String crossAccountSessionName = "cross-account-session-" + UUID.randomUUID();
  
      /*
       * Change the Credentials Provider in the SigV4 Signer to use the STSAssumeRole Provider and provide it
       * with both the role to be assumed, the original STS client, and a session name (which can be
       * arbitrary.)
       */
      Cluster cluster = Cluster.build()
                   .addContactPoint("neptune-cluster.us-west-2.neptune.amazonaws.com")
                   .enableSsl(true)
                   .port(8182)
                   .requestInterceptor( r ->
                    {
                      try {
                        NeptuneNettyHttpSigV4Signer sigV4Signer =
                          // new NeptuneNettyHttpSigV4Signer("us-west-2", DefaultCredentialsProvider.create());
                          new NeptuneNettyHttpSigV4Signer(
                                  "us-west-2",  
                                   new STSAssumeRoleSessionCredentialsProvider
                                      .Builder(roleArnToAssume, crossAccountSessionName)
                                          .withStsClient(client)
                                          .build());
                        sigV4Signer.signRequest(r);
                      } catch (NeptuneSigV4SignerException e) {
                        throw new RuntimeException("Exception occurred while signing the request", e);
                      }
                      return r;
                    }
                   ).create();
  
      GraphTraversalSource g = traversal().withRemote(DriverRemoteConnection.using(cluster));
  
      /* whatever application code is necessary */
  
      cluster.close();
    }
  ```

# Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan Java dan SPARQL
<a name="iam-auth-connecting-sparql-java"></a>

Bagian ini menunjukkan cara terhubung ke Neptunus menggunakan J RDF4 atau Apache Jena dengan otentikasi Signature Version 4.

**Prasyarat**
+ Java 8 atau lebih tinggi.
+ Apache Maven 3.3 atau lebih tinggi.

  Untuk informasi tentang menginstal prasyarat ini di instans EC2 yang menjalankan Amazon Linux, lihat [Prasyarat untuk menghubungkan database Amazon Neptunus menggunakan otentikasi IAM](iam-auth-connect-prerq.md).
+ Kredensial IAM untuk menandatangani permintaan. Untuk informasi selengkapnya, lihat [Menggunakan Rantai Penyedia Kredential Default](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html#credentials-default) dalam *Panduan Developer AWS SDK untuk Java *.
**catatan**  
Jika Anda menggunakan kredensial sementara, kredensial kedaluwarsa setelah interval tertentu, *termasuk token sesinya*.  
Anda harus memperbarui token sesi Anda ketika Anda meminta kredensial baru. Untuk informasi selengkapnya, lihat [Menggunakan Kredensyal Keamanan Sementara untuk Meminta Akses ke AWS Sumber Daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) di Panduan Pengguna *IAM*.
+ Atur variabel `SERVICE_REGION` ke salah satu dari berikut ini, menunjukkan Wilayah instans DB Neptune Anda:
  + US East (N. Virginia):   `us-east-1`
  + AS Timur (Ohio): `us-east-2`
  + US West (N. California):   `us-west-1`
  + US West (Oregon):   `us-west-2`
  + Canada (Central):   `ca-central-1`
  + Kanada Barat (Calgary): `ca-west-1`
  + South America (São Paulo):   `sa-east-1`
  + Eropa (Stockholm): `eu-north-1`
  + Eropa (Spanyol): `eu-south-2`
  + Eropa (Irlandia): `eu-west-1`
  + Eropa (London): `eu-west-2`
  + Eropa (Paris): `eu-west-3`
  + Eropa (Frankfurt): `eu-central-1`
  + Timur Tengah (Bahrain): `me-south-1`
  + Timur Tengah (UEA): `me-central-1`
  + Israel (Tel Aviv): `il-central-1`
  + Afrika (Cape Town): `af-south-1`
  + Asia Pasifik (Hong Kong): `ap-east-1`
  + Asia Pacific (Tokyo):   `ap-northeast-1`
  + Asia Pasifik (Seoul): `ap-northeast-2`
  + Asia Pasifik (Osaka): `ap-northeast-3`
  + Asia Pacific (Singapore):   `ap-southeast-1`
  + Asia Pacific (Sydney):   `ap-southeast-2`
  + Asia Pasifik (Jakarta): `ap-southeast-3`
  + Asia Pasifik (Melbourne): `ap-southeast-4`
  + Asia Pasifik (Malaysia): `ap-southeast-5`
  + Asia Pasifik (Mumbai): `ap-south-1`
  + Asia Pasifik (Hyderabad): `ap-south-2`
  + Tiongkok (Beijing): `cn-north-1`
  + Tiongkok (Ningxia): `cn-northwest-1`
  + AWS GovCloud (AS-Barat): `us-gov-west-1`
  + AWS GovCloud (AS-Timur): `us-gov-east-1`

**Untuk terhubung ke Neptunus menggunakan J RDF4 atau Apache Jena dengan penandatanganan Signature Version 4**

1. Kloning repositori sampel dari. GitHub

   ```
   git clone https://github.com/aws/amazon-neptune-sparql-java-sigv4.git
   ```

1. Ubah ke dalam direktori kloning.

   ```
   cd amazon-neptune-sparql-java-sigv4
   ```

1. Dapatkan versi terbaru dari proyek dengan memeriksa cabang dengan tanda terbaru.

   ```
   git checkout $(git describe --tags `git rev-list --tags --max-count=1`)
   ```

1. Masukkan salah satu perintah berikut untuk mengompilasi dan menjalankan kode contoh.

   Ganti *your-neptune-endpoint* dengan nama host atau alamat IP instans DB Neptunus Anda. Port default adalah 8182.
**catatan**  
Untuk informasi tentang menemukan nama host instans DB Neptune Anda, lihat bagian [Menghubungkan ke Titik Akhir Amazon Neptune.](feature-overview-endpoints.md).

**Gerhana J RDF4**  
Masukkan yang berikut ini untuk menjalankan contoh RDF4 J.

   ```
   mvn compile exec:java \
       -Dexec.mainClass="com.amazonaws.neptune.client.rdf4j.NeptuneRdf4JSigV4Example" \
       -Dexec.args="https://your-neptune-endpoint:portsparql region-name"
   ```

**Apache Jena**  
Masukkan berikut ini untuk menjalankan contoh Apache Jena.

   ```
   mvn compile exec:java \
       -Dexec.mainClass="com.amazonaws.neptune.client.jena.NeptuneJenaSigV4Example" \
       -Dexec.args="https://your-neptune-endpoint:port"
   ```

1. Untuk melihat kode sumber untuk contoh, lihat contoh dalam direktori `src/main/java/com/amazonaws/neptune/client/`.

Untuk menggunakan driver penandatanganan SigV4 di aplikasi Java Anda sendiri, tambahkan paket Maven `amazon-neptune-sigv4-signer` ke bagian `<dependencies>` dari `pom.xml` Anda. Sebaiknya Anda menggunakan contoh sebagai titik awal.

# Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan SPARQL dan Node.js
<a name="iam-auth-connecting-sparql-node"></a>

## Kueri menggunakan penandatanganan Signature V4 dan AWS SDK untuk Javascript V3
<a name="iam-auth-querying-sparql-js-sdk-v3"></a>

Berikut adalah contoh cara menghubungkan ke Neptunus SPARQL menggunakan Node.js dengan otentikasi Signature Version 4 dan SDK untuk Javascript V3: AWS 

```
const { HttpRequest }  = require('@smithy/protocol-http');
const { fromNodeProviderChain } = require('@aws-sdk/credential-providers');
const { SignatureV4 } = require('@smithy/signature-v4');
const { Sha256 } = require('@aws-crypto/sha256-universal');
const https = require('https');

var region = 'us-west-2'; // e.g. us-west-1
var neptune_endpoint = 'your-Neptune-cluster-endpoint';  // like: 'cluster-id.region.neptune.amazonaws.com'
var query = `query=PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX class: <http://aws.amazon.com/neptune/csv2rdf/class/>
PREFIX resource: <http://aws.amazon.com/neptune/csv2rdf/resource/>
PREFIX prop: <http://aws.amazon.com/neptune/csv2rdf/datatypeProperty/>
PREFIX objprop: <http://aws.amazon.com/neptune/csv2rdf/objectProperty/>

SELECT ?movies ?title WHERE {
  ?jel prop:name "James Earl Jones" .
  ?movies ?p2 ?jel .
  ?movies prop:title ?title
} LIMIT 10`;

runQuery(query);

function runQuery(q) {
  var request = new HttpRequest({
    hostname: neptune_endpoint,
    port: 8182,
    path: 'sparql',
    body: encodeURI(query),
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
      'host': neptune_endpoint + ':8182',
    },
    method: 'POST',
  });

  const credentialProvider = fromNodeProviderChain();
  let credentials = credentialProvider();
  credentials.then(
    (cred)=>{
      var signer = new SignatureV4({credentials: cred, region: region, sha256: Sha256, service: 'neptune-db'});
      signer.sign(request).then(
        (req)=>{
          var responseBody = '';
          var sendreq = https.request(
            {
              host: req.hostname,
              port: req.port,
              path: req.path,
              method: req.method,
              headers: req.headers,
            },
          (res) => {
            res.on('data', (chunk) => { responseBody += chunk; });
            res.on('end', () => {
                console.log(JSON.parse(responseBody));
            });
          });
          sendreq.write(req.body);
          sendreq.end();
        }
      );
    },
    (err)=>{
      console.error(err);
    }
  );
}
```

## Kueri menggunakan penandatanganan Signature V4 dan AWS SDK untuk Javascript V2
<a name="iam-auth-querying-sparql-js-sdk-v2"></a>

Berikut adalah contoh cara menghubungkan ke Neptunus SPARQL menggunakan Node.js dengan otentikasi Signature Version 4 dan SDK untuk Javascript V2: AWS 

```
var AWS = require('aws-sdk');

var region = 'us-west-2'; // e.g. us-west-1
var neptune_endpoint = 'your-Neptune-cluster-endpoint';  // like: 'cluster-id.region.neptune.amazonaws.com'
var query = `query=PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX class: <http://aws.amazon.com/neptune/csv2rdf/class/>
PREFIX resource: <http://aws.amazon.com/neptune/csv2rdf/resource/>
PREFIX prop: <http://aws.amazon.com/neptune/csv2rdf/datatypeProperty/>
PREFIX objprop: <http://aws.amazon.com/neptune/csv2rdf/objectProperty/>

SELECT ?movies ?title WHERE {
    ?jel prop:name "James Earl Jones" .
    ?movies ?p2 ?jel .
    ?movies prop:title ?title
} LIMIT 10`;

runQuery(query);

function runQuery(q) {

    var endpoint = new AWS.Endpoint(neptune_endpoint);
    endpoint.port = 8182;
    var request = new AWS.HttpRequest(endpoint, region);
    request.path += 'sparql';
    request.body = encodeURI(query);
    request.headers['Content-Type'] = 'application/x-www-form-urlencoded';
    request.headers['host'] = neptune_endpoint;
    request.method = 'POST';

    var credentials = new AWS.CredentialProviderChain();
    credentials.resolve((err, cred)=>{
        var signer = new AWS.Signers.V4(request, 'neptune-db');
        signer.addAuthorization(cred, new Date());
    });

    var client = new AWS.HttpClient();
    client.handleRequest(request, null, function(response) {
        console.log(response.statusCode + ' ' + response.statusMessage);
        var responseBody = '';
        response.on('data', function (chunk) {
            responseBody += chunk;
        });
        response.on('end', function (chunk) {
            console.log('Response body: ' + responseBody);
        });
    }, function(error) {
        console.log('Error: ' + error);
    });
}
```

# Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan Python
<a name="iam-auth-connecting-python"></a>

Bagian ini menunjukkan contoh program yang ditulis dengan Python yang menggambarkan bagaimana bekerja dengan Signature Versi 4 untuk Amazon Neptune. Contoh ini didasarkan pada contoh di bagian [Proses Penandatanganan Versi Tanda Tangan 4](https://docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-examples.html) di bagian *Referensi Umum Amazon Web*.

Untuk bekerja dengan program contoh ini, Anda memerlukan yang berikut ini:
+ Python 3.x diinstal pada komputer Anda, yang bisa didapatkan dari [Situs Python](https://www.python.org/downloads/). Program-program ini diuji menggunakan Python 3.6.
+ [Pustakan permintaan Python](https://pypi.python.org/pypi/requests), yang digunakan dalam skrip contoh untuk membuat permintaan web. Cara mudah untuk menginstal paket Python adalah dengan menggunakan `pip`, yang mendapat paket dari situs indeks paket Python. Anda kemudian dapat menginstal `requests` dengan menjalankan `pip install requests` pada baris perintah.
+ Kunci akses (access key ID dan secret access key) di variabel lingkungan bernama `AWS_ACCESS_KEY_ID` dan `AWS_SECRET_ACCESS_KEY`. Sebagai praktik terbaik, kami menyarankan Anda untuk *tidak* menanamkan kredensial dalam kode. Untuk informasi selengkapnya, lihat [Praktik Terbaik untuk akun AWS](https://docs.aws.amazon.com//accounts/latest/reference/best-practices.html) di *Panduan Referensi AWS Account Management *.

  Wilayah klaster DB Neptune Anda dalam variabel lingkungan bernama `SERVICE_REGION`.

  Jika Anda menggunakan kredensial sementara, Anda harus menentukan `AWS_SESSION_TOKEN` selain `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, dan `SERVICE_REGION`.
**catatan**  
Jika Anda menggunakan kredensial sementara, kredensial kedaluwarsa setelah interval tertentu, *termasuk token sesinya*.  
Anda harus memperbarui token sesi Anda ketika Anda meminta kredensial baru. Untuk informasi selengkapnya, lihat [Menggunakan Kredensial Keamanan Sementara untuk Meminta Akses ke Sumber Daya AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html).

Contoh berikut menunjukkan cara membuat permintaan yang ditandatangani ke Neptune menggunakan Python. Permintaan tersebut membuat permintaan GET atau POST. Informasi autentikasi dilewatkan menggunakan header permintaan `Authorization`.

Contoh ini juga berfungsi sebagai AWS Lambda fungsi. Untuk informasi selengkapnya, lihat [Menyiapkan AWS Lambda untuk Otentikasi IAM Neptunus](iam-auth-temporary-credentials.md#iam-auth-temporary-credentials-lambda).

**Untuk membuat permintaan yang ditandatangani ke titik akhir Gremlin dan SPARQL Neptune**

1. Buat file baru bernama `neptunesigv4.py`, lalu buka file tersebut dalam editor teks.

1. Salin kode berikut dan tempelkan ke file `neptunesigv4.py`.

   ```
   # Amazon Neptune version 4 signing example (version v3)
   
   # The following script requires python 3.6+
   #    (sudo yum install python36 python36-virtualenv python36-pip)
   # => the reason is that we're using urllib.parse() to manually encode URL
   #    parameters: the problem here is that SIGV4 encoding requires whitespaces
   #    to be encoded as %20 rather than not or using '+', as done by previous/
   #    default versions of the library.
   
   
   # See: https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html
   import sys, datetime, hashlib, hmac
   import requests  # pip3 install requests
   import urllib
   import os
   import json
   from botocore.auth import SigV4Auth
   from botocore.awsrequest import AWSRequest
   from botocore.credentials import ReadOnlyCredentials
   from types import SimpleNamespace
   from argparse import RawTextHelpFormatter
   from argparse import ArgumentParser
   
   # Configuration. https is required.
   protocol = 'https'
   
   # The following lines enable debugging at httplib level (requests->urllib3->http.client)
   # You will see the REQUEST, including HEADERS and DATA, and RESPONSE with HEADERS but without DATA.
   #
   # The only thing missing will be the response.body which is not logged.
   #
   # import logging
   # from http.client import HTTPConnection
   # HTTPConnection.debuglevel = 1
   # logging.basicConfig()
   # logging.getLogger().setLevel(logging.DEBUG)
   # requests_log = logging.getLogger("requests.packages.urllib3")
   # requests_log.setLevel(logging.DEBUG)
   # requests_log.propagate = True
   
   
   # Read AWS access key from env. variables. Best practice is NOT
   # to embed credentials in code.
   access_key = os.getenv('AWS_ACCESS_KEY_ID', '')
   secret_key = os.getenv('AWS_SECRET_ACCESS_KEY', '')
   region = os.getenv('SERVICE_REGION', '')
   
   # AWS_SESSION_TOKEN is optional environment variable. Specify a session token only if you are using temporary
   # security credentials.
   session_token = os.getenv('AWS_SESSION_TOKEN', '')
   
   ### Note same script can be used for AWS Lambda (runtime = python3.6).
   ## Steps to use this python script for AWS Lambda
   # 1. AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and AWS_SESSION_TOKEN and AWS_REGION variables are already part of Lambda's Execution environment
   #    No need to set them up explicitly.
   # 3. Create Lambda deployment package https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html
   # 4. Create a Lambda function in the same VPC and assign an IAM role with neptune access
   
   def lambda_handler(event, context):
       # sample_test_input = {
       #     "host": "END_POINT:8182",
       #     "method": "GET",
       #     "query_type": "gremlin",
       #     "query": "g.V().count()"
       # }
   
       # Lambda uses AWS_REGION instead of SERVICE_REGION
       global region
       region = os.getenv('AWS_REGION', '')
   
       host = event['host']
       method = event['method']
       query_type = event['query_type']
       query =  event['query']
   
       return make_signed_request(host, method, query_type, query)
   
   def validate_input(method, query_type):
       # Supporting GET and POST for now:
       if (method != 'GET' and method != 'POST'):
           print('First parameter must be "GET" or "POST", but is "' + method + '".')
           sys.exit()
   
       # SPARQL UPDATE requires POST
       if (method == 'GET' and query_type == 'sparqlupdate'):
           print('SPARQL UPDATE is not supported in GET mode. Please choose POST.')
           sys.exit()
   
   def get_canonical_uri_and_payload(query_type, query, method):
       # Set the stack and payload depending on query_type.
       if (query_type == 'sparql'):
           canonical_uri = '/sparql/'
           payload = {'query': query}
   
       elif (query_type == 'sparqlupdate'):
           canonical_uri = '/sparql/'
           payload = {'update': query}
   
       elif (query_type == 'gremlin'):
           canonical_uri = '/gremlin/'
           payload = {'gremlin': query}
           if (method == 'POST'):
               payload = json.dumps(payload)
   
       elif (query_type == 'openCypher'):
           canonical_uri = '/openCypher/'
           payload = {'query': query}
   
       elif (query_type == "loader"):
           canonical_uri = "/loader/"
           payload = query
   
       elif (query_type == "status"):
           canonical_uri = "/status/"
           payload = {}
   
       elif (query_type == "gremlin/status"):
           canonical_uri = "/gremlin/status/"
           payload = {}
   
       elif (query_type == "openCypher/status"):
           canonical_uri = "/openCypher/status/"
           payload = {}
   
       elif (query_type == "sparql/status"):
           canonical_uri = "/sparql/status/"
           payload = {}
   
       else:
           print(
               'Third parameter should be from ["gremlin", "sparql", "sparqlupdate", "loader", "status] but is "' + query_type + '".')
           sys.exit()
       ## return output as tuple
       return canonical_uri, payload
   
   def make_signed_request(host, method, query_type, query):
       service = 'neptune-db'
       endpoint = protocol + '://' + host
   
       print()
       print('+++++ USER INPUT +++++')
       print('host = ' + host)
       print('method = ' + method)
       print('query_type = ' + query_type)
       print('query = ' + query)
   
       # validate input
       validate_input(method, query_type)
   
       # get canonical_uri and payload
       canonical_uri, payload = get_canonical_uri_and_payload(query_type, query, method)
   
       # assign payload to data or params
       data = payload if method == 'POST' else None
       params = payload if method == 'GET' else None
   
       # create request URL
       request_url = endpoint + canonical_uri
   
       # create and sign request
       creds = SimpleNamespace(
           access_key=access_key, secret_key=secret_key, token=session_token, region=region,
       )
   
       request = AWSRequest(method=method, url=request_url, data=data, params=params)
       SigV4Auth(creds, service, region).add_auth(request)
   
       r = None
   
       # ************* SEND THE REQUEST *************
       if (method == 'GET'):
   
           print('++++ BEGIN GET REQUEST +++++')
           print('Request URL = ' + request_url)
           r = requests.get(request_url, headers=request.headers, verify=False, params=params)
   
       elif (method == 'POST'):
   
           print('\n+++++ BEGIN POST REQUEST +++++')
           print('Request URL = ' + request_url)
           if (query_type == "loader"):
               request.headers['Content-type'] = 'application/json'
           r = requests.post(request_url, headers=request.headers, verify=False, data=data)
   
       else:
           print('Request method is neither "GET" nor "POST", something is wrong here.')
   
       if r is not None:
           print()
           print('+++++ RESPONSE +++++')
           print('Response code: %d\n' % r.status_code)
           response = r.text
           r.close()
           print(response)
   
           return response
   
   help_msg = '''
       export AWS_ACCESS_KEY_ID=[MY_ACCESS_KEY_ID]
       export AWS_SECRET_ACCESS_KEY=[MY_SECRET_ACCESS_KEY]
       export AWS_SESSION_TOKEN=[MY_AWS_SESSION_TOKEN]
       export SERVICE_REGION=[us-east-1|us-east-2|us-west-2|eu-west-1]
   
       python version >=3.6 is required.
   
       Examples: For help
       python3 program_name.py -h
   
       Examples: Queries
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a GET -q status
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a GET -q sparql/status
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a GET -q sparql -d "SELECT ?s WHERE { ?s ?p ?o }"
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a POST -q sparql -d "SELECT ?s WHERE { ?s ?p ?o }"
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a POST -q sparqlupdate -d "INSERT DATA { <https://s> <https://p> <https://o> }"
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a GET -q gremlin/status
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a GET -q gremlin -d "g.V().count()"
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a POST -q gremlin -d "g.V().count()"
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a GET -q openCypher/status
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a GET -q openCypher -d "MATCH (n1) RETURN n1 LIMIT 1;"
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a POST -q openCypher -d "MATCH (n1) RETURN n1 LIMIT 1;"
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a GET -q loader -d '{"loadId": "68b28dcc-8e15-02b1-133d-9bd0557607e6"}'
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a GET -q loader -d '{}'
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a POST -q loader -d '{"source": "source", "format" : "csv", "failOnError": "fail_on_error", "iamRoleArn": "iam_role_arn", "region": "region"}'
   
       Environment variables must be defined as AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and SERVICE_REGION.
       You should also set AWS_SESSION_TOKEN environment variable if you are using temporary credentials (ex. IAM Role or EC2 Instance profile).
   
       Current Limitations:
       - Query mode "sparqlupdate" requires POST (as per the SPARQL 1.1 protocol)
               '''
   
   def exit_and_print_help():
       print(help_msg)
       exit()
   
   def parse_input_and_query_neptune():
   
   
       parser = ArgumentParser(description=help_msg, formatter_class=RawTextHelpFormatter)
       group_host = parser.add_mutually_exclusive_group()
       group_host.add_argument("-ho", "--host", type=str)
       group_port = parser.add_mutually_exclusive_group()
       group_port.add_argument("-p", "--port", type=int, help="port ex. 8182, default=8182", default=8182)
       group_action = parser.add_mutually_exclusive_group()
       group_action.add_argument("-a", "--action", type=str, help="http action, default = GET", default="GET")
       group_endpoint = parser.add_mutually_exclusive_group()
       group_endpoint.add_argument("-q", "--query_type", type=str, help="query_type, default = status ", default="status")
       group_data = parser.add_mutually_exclusive_group()
       group_data.add_argument("-d", "--data", type=str, help="data required for the http action", default="")
   
       args = parser.parse_args()
       print(args)
   
       # Read command line parameters
       host = args.host
       port = args.port
       method = args.action
       query_type = args.query_type
       query = args.data
   
       if (access_key == ''):
           print('!!! ERROR: Your AWS_ACCESS_KEY_ID environment variable is undefined.')
           exit_and_print_help()
   
       if (secret_key == ''):
           print('!!! ERROR: Your AWS_SECRET_ACCESS_KEY environment variable is undefined.')
           exit_and_print_help()
   
       if (region == ''):
           print('!!! ERROR: Your SERVICE_REGION environment variable is undefined.')
           exit_and_print_help()
   
       if host is None:
           print('!!! ERROR: Neptune DNS is missing')
           exit_and_print_help()
   
       host = host + ":" + str(port)
       make_signed_request(host, method, query_type, query)
   
   
   if __name__ == "__main__":
       parse_input_and_query_neptune()
   ```

1. Di terminal, arahkan ke lokasi file `neptunesigv4.py`.

1. Masukkan perintah berikut, ganti access key, kunci rahasia, dan Wilayah dengan nilai yang benar.

   ```
   export AWS_ACCESS_KEY_ID=MY_ACCESS_KEY_ID
   export AWS_SECRET_ACCESS_KEY=MY_SECRET_ACCESS_KEY
   export SERVICE_REGION=us-east-1 or us-east-2 or us-west-1 or us-west-2 or ca-central-1 or
                         ca-west-1 or sa-east-1 or eu-north-1 or eu-south-2 or eu-west-1 or eu-west-2 or eu-west-3 or
                         eu-central-1 or me-south-1 or me-central-1 or il-central-1 or af-south-1 or ap-east-1 or
                         ap-northeast-1 or ap-northeast-2 or ap-northeast-3 or ap-southeast-1 or ap-southeast-2 or
                         ap-southeast-3 or ap-southeast-4 or ap-southeast-5 or ap-south-1 or ap-south-2 or
                         cn-north-1 or cn-northwest-1 or
                         us-gov-east-1 or us-gov-west-1
   ```

   Jika Anda menggunakan kredensial sementara, Anda harus menentukan `AWS_SESSION_TOKEN` selain `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, dan `SERVICE_REGION`.

   ```
   export AWS_SESSION_TOKEN=MY_AWS_SESSION_TOKEN
   ```
**catatan**  
Jika Anda menggunakan kredensial sementara, kredensial kedaluwarsa setelah interval tertentu, *termasuk token sesinya*.  
Anda harus memperbarui token sesi Anda ketika Anda meminta kredensial baru. Untuk informasi selengkapnya, lihat [Menggunakan Kredensial Keamanan Sementara untuk Meminta Akses ke Sumber Daya AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html).

1. Masukkan salah satu perintah berikut untuk mengirim permintaan yang ditandatangani ke instans DB Neptune. Contoh ini menggunakan Python versi 3.6.

   **Status Titik Akhir**

   ```
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a GET -q status
   ```

   **Gremlin**

   ```
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a GET -q gremlin -d "g.V().count()"
   
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a POST -q gremlin -d "g.V().count()"
   ```

   **Status Gremlin**

   ```
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a GET -q gremlin/status
   ```

   **SPARQL**

   ```
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a GET -q sparql -d "SELECT ?s WHERE { ?s ?p ?o }"
   ```

   **PEMBARUAN SPARQL**

   ```
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a POST -q sparqlupdate -d "INSERT DATA { <https://s> <https://p> <https://o> }"
   ```

   **Status SPARQL**

   ```
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a GET -q sparql/status
   ```

   **OpenCypher**

   ```
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a GET -q openCypher -d "MATCH (n1) RETURN n1 LIMIT 1;"
   
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a POST -q openCypher -d "MATCH (n1) RETURN n1 LIMIT 1;"
   ```

   **Status OpenCypher**

   ```
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a GET -q openCypher/status
   ```

   **Loader**

   ```
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a GET -q loader -d '{"loadId": "68b28dcc-8e15-02b1-133d-9bd0557607e6"}'
   
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a GET -q loader -d '{}'
   
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a POST -q loader -d '{"source": "source", "format" : "csv", "failOnError": "fail_on_error", "iamRoleArn": "iam_role_arn", "region": "region"}'
   ```

1. Sintaks untuk menjalankan skrip Python adalah sebagai berikut:

   ```
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p port -a GET|POST -q gremlin|sparql|sparqlupdate|loader|status -d "string0data"
   ```

   SPARQL UPDATE memerlukan `POST`.

# Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan Python Gremlin
<a name="gremlin-python-iam-auth"></a>

## Ikhtisar
<a name="gremlin-python-iam-auth-overview"></a>

 Panduan ini menunjukkan cara menghubungkan ke database Amazon Neptunus dengan otentikasi IAM diaktifkan menggunakan driver Python Gremlin, dengan otentikasi Signature Version 4 dan SDK for Python (Boto3). AWS 

## Buat koneksi dasar
<a name="gremlin-python-iam-auth-basic-connection"></a>

 Gunakan contoh kode berikut sebagai panduan tentang cara membuat koneksi dasar dengan otentikasi IAM menggunakan driver Python Gremlin. 

```
from boto3 import Session
from botocore.auth import SigV4Auth
from botocore.awsrequest import AWSRequest

from gremlin_python.process.anonymous_traversal import traversal
from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection

def main():
    endpoint = 'your.cluster.endpoint.neptune.amazonaws.com'
    conn_string = 'wss://' + endpoint + ':8182/gremlin'
    default_region = 'us-east-1'
    service = 'neptune-db'

    credentials = Session().get_credentials()
    if credentials is None:
        raise Exception("No AWS credentials found")
    creds = credentials.get_frozen_credentials()
    # region set inside config profile or via AWS_DEFAULT_REGION environment variable will be loaded
    region = Session().region_name if Session().region_name else default_region

    request = AWSRequest(method='GET', url=conn_string, data=None)
    SigV4Auth(creds, service, region).add_auth(request)

    rc = DriverRemoteConnection(conn_string, 'g', headers=request.headers.items())
    g = traversal().with_remote(rc)

    # simple query to verify connection
    count = g.V().count().next()
    print('Vertex count: ' + str(count))

    # cleanup
    rc.close()

if __name__ == "__main__":
    main()
```

# Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan Gremlin JavaScript
<a name="gremlin-javascript-iam-auth"></a>

## Ikhtisar
<a name="gremlin-javascript-iam-auth-overview"></a>

 Panduan ini menunjukkan cara menyambung ke database Amazon Neptunus dengan autentikasi IAM diaktifkan menggunakan JavaScript driver Gremlin, dengan otentikasi Signature Version 4 dan SDK untuk Javascript v3. AWS 

## Prasyarat
<a name="gremlin-javascript-iam-auth-prereqs"></a>
+  Cluster Amazon Neptunus dengan otentikasi IAM diaktifkan. 
+  Node 13 atau yang lebih baru (lihat versi minimal untuk Gremlin JavaScript dan [AWS SDK untuk Javascript](https://docs.aws.amazon.com//AWSJavaScriptSDK/v3/latest/introduction/#release-cadence) v3). 
+  AWS kredensyal dikonfigurasi (melalui variabel lingkungan, file kredensyal bersama, atau peran IAM). 

## Buat koneksi dasar
<a name="gremlin-javascript-iam-auth-basic-connection"></a>

 Gunakan contoh kode berikut sebagai panduan tentang cara membuat koneksi dasar dengan otentikasi IAM menggunakan driver JavaScript Gremlin. 

```
const { fromNodeProviderChain } = require('@aws-sdk/credential-providers');
const { getUrlAndHeaders } = require('gremlin-aws-sigv4/lib/utils');
const { loadConfig } = require("@smithy/node-config-provider");
const { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS } = require("@smithy/config-resolver");

const gremlin = require('gremlin');
const DriverRemoteConnection = gremlin.driver.DriverRemoteConnection;
const traversal = gremlin.process.AnonymousTraversalSource.traversal;

const DEFAULT_REGION = 'us-east-1';

const getCredentials = async () => {
    try {
        // Loads the default credential provider chain
        return await fromNodeProviderChain();
    } catch (e) {
        console.error("No credentials found", e);
        throw e;
    }
};

(main = async () => {
    console.log('Starting');

    const credentials = await getCredentials();
    try {
        // region set inside config profile or via AWS_REGION environment variable will be loaded
        credentials['region'] = await loadConfig(NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS)();
    } catch (e) {
        credentials['region'] = DEFAULT_REGION
    }

    const connInfo = getUrlAndHeaders(
        'you.cluster.endpoint.neptune.amazonaws.com',
        '8182',
        credentials,
        '/gremlin',
        'wss');

    const dc = new DriverRemoteConnection(connInfo['url'], {headers: connInfo['headers']});
    const g = traversal().withRemote(dc);

    const query = g.V().limit(5).count();
    const count = await query.next();
    console.log("Vertex count: " + count.value);

    await dc.close();
})

main();
```

# Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan Gremlin Go
<a name="gremlin-go-iam-auth"></a>

## Ikhtisar
<a name="gremlin-go-iam-auth-overview"></a>

 Panduan ini menunjukkan cara menyambung ke database Amazon Neptunus dengan autentikasi IAM diaktifkan menggunakan driver Gremlin Go, dengan otentikasi Signature Version 4 dan SDK untuk GO v2. AWS 

## Prasyarat
<a name="gremlin-go-iam-auth-prereqs"></a>
+  Cluster Amazon Neptunus dengan otentikasi IAM diaktifkan. 
+  Go 1.22 atau yang lebih baru (lihat versi minimal yang didukung untuk [Gremlin Go](https://pkg.go.dev/github.com/apache/tinkerpop/gremlin-go/v3/driver) dan [SDK for AWS Go v2](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2)). 
+  AWS kredensil yang dikonfigurasi (melalui variabel lingkungan, file kredensial bersama, atau peran IAM) 

## Buat koneksi dasar
<a name="gremlin-go-iam-auth-basic-connection"></a>

 Gunakan contoh kode berikut sebagai panduan tentang cara membuat koneksi dasar dengan otentikasi IAM menggunakan driver Gremlin Go. 

```
package main

import (
	"context"
	"fmt"
	"github.com/aws/aws-sdk-go-v2/config"
	"net/http"
	"strings"
	"time"

	gremlingo "github.com/apache/tinkerpop/gremlin-go/v3/driver"
	v4 "github.com/aws/aws-sdk-go-v2/aws/signer/v4"
)

const emptyStringSHA256 = `e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855`

func main() {
	neptuneEndpoint := "you.cluster.endpoint.neptune.amazonaws.com"
	connString := "wss://" + neptuneEndpoint + ":8182/gremlin"
	service := "neptune-db"
	defaultRegion := "us-east-1"

	// Create request to sign
	req, err := http.NewRequest(http.MethodGet, connString, strings.NewReader(""))
	if err != nil {
		fmt.Println(err)
		return
	}

	// Loads the default config with default credentials provider
	// See https://github.com/aws/aws-sdk-go-v2 for additional docs on API usage
	cfg, err := config.LoadDefaultConfig(context.TODO())
	if err != nil {
		fmt.Println(err)
		return
	}
	// Retrieve loaded credentials 
	cr, err := cfg.Credentials.Retrieve(context.TODO())
	if err != nil {
		fmt.Println(err)
		return
	}

	region := defaultRegion
	if cfg.Region != "" {
		// region set inside config profile, or via AWS_REGION or AWS_DEFAULT_REGION environment variable will be loaded
		region = cfg.Region
	}

	signer := v4.NewSigner()
	// Sign request
	err = signer.SignHTTP(context.TODO(), cr, req, emptyStringSHA256, service, "us-east-2", time.Now())
	if err != nil {
		fmt.Println(err)
		return
	}

	// Pass the signed request header into gremlingo.HeaderAuthInfo()
	driverRemoteConnection, err := gremlingo.NewDriverRemoteConnection(connString,
		func(settings *gremlingo.DriverRemoteConnectionSettings) {
			settings.TraversalSource = "g"
			settings.AuthInfo = gremlingo.HeaderAuthInfo(req.Header)
			// settings.TlsConfig = &tls.Config{InsecureSkipVerify: true} // Use this only if you're on a Mac running Go 1.18+ doing local dev. See https://github.com/golang/go/issues/51991
		})
	if err != nil {
		fmt.Println(err)
		return
	}

	// Cleanup
	defer driverRemoteConnection.Close()

	// Creating graph traversal
	g := gremlingo.Traversal_().WithRemote(driverRemoteConnection)

	// Query execution
	count, err := g.V().Limit(5).Count().Next()
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("Vertex count:", *count)
}
```

## Penyegaran Kredensi Dinamis Gremlin Go
<a name="gremlin-go-iam-auth-go-credential-refresh"></a>

 Gremlin Go memiliki DynamicAuth yang memungkinkan injeksi pointer fungsi untuk mengambil kredensil dan menghasilkan header, yang mencegah kedaluwarsa header dengan koneksi yang berjalan lama. 

```
package main

import (
	"context"
	"crypto/tls"
	"fmt"
	"github.com/aws/aws-sdk-go-v2/config"
	"net/http"
	"strings"
	"time"

	gremlingo "github.com/apache/tinkerpop/gremlin-go/v3/driver"
	v4 "github.com/aws/aws-sdk-go-v2/aws/signer/v4"
)

const emptyStringSHA256 = `e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855`

func main() {
	neptuneEndpoint := "you.cluster.endpoint.neptune.amazonaws.com"
	connString := "wss://" + neptuneEndpoint + ":8182/gremlin"
	service := "neptune-db"
	defaultRegion := "us-east-1"

	//Create the request to sign
	req, err := http.NewRequest(http.MethodGet, connString, strings.NewReader(""))
	if err != nil {
		fmt.Println(err)
		return
	}

	// Loads the default config with default credentials provider
	// See https://github.com/aws/aws-sdk-go-v2 for additional docs on API usage
	cfg, err := config.LoadDefaultConfig(context.TODO())
	if err != nil {
		fmt.Println(err)
		return
	}

	region := defaultRegion
	if cfg.Region != "" {
		// region set inside config profile, or via AWS_REGION or AWS_DEFAULT_REGION environment variable will be loaded
		region = cfg.Region
	}
	
	signer := v4.NewSigner()

	// This is the function that will be used for dynamic refreseh of credentials and signed headers
	gen := func() gremlingo.AuthInfoProvider {
		// Retrieve loaded credentials 
		cr, err := cfg.Credentials.Retrieve(context.TODO())
		fmt.Println("AWS Credentials: ", cr)
		if err != nil {
			fmt.Println(err)
			return
		}
		// Sign request
		err = signer.SignHTTP(context.TODO(), cr, req, emptyStringSHA256, service, region, time.Now())
		if err != nil {
			fmt.Println(err)
			return
		}
		fmt.Println(req.Header)
		return gremlingo.HeaderAuthInfo(req.Header)
	}

	// Pass the function into gremlingo.NewDynamicAuth(), which will generate the AuthInfoProvider to pass into gremlingo.DriverRemoteConnectionSettings below
	auth := gremlingo.NewDynamicAuth(gen)

	driverRemoteConnection, err := gremlingo.NewDriverRemoteConnection(connString,
		func(settings *gremlingo.DriverRemoteConnectionSettings) {
			settings.TraversalSource = "g"
			settings.AuthInfo = auth
			// settings.TlsConfig = &tls.Config{InsecureSkipVerify: true} // Use this only if you're on a Mac running Go 1.18+ doing local dev. See https://github.com/golang/go/issues/51991

		})
	if err != nil {
		fmt.Println(err)
		return
	}

	// Cleanup
	defer driverRemoteConnection.Close()

	// Creating graph traversal
	g := gremlingo.Traversal_().WithRemote(driverRemoteConnection)

	// Query execution
	count, err := g.V().Limit(5).Count().Next()
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("Vertex count:", *count)
}
```

# Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan Gremlin.NET
<a name="gremlin-dotnet-iam-auth"></a>

## Ikhtisar
<a name="gremlin-dotnet-iam-auth-overview"></a>

 Panduan ini menunjukkan cara menghubungkan ke database Amazon Neptunus dengan autentikasi IAM diaktifkan menggunakan driver Gremlin.NET, dengan otentikasi Signature Version 4 dan SDK for .NET v3. AWS 

## Buat koneksi dasar
<a name="gremlin-dotnet-iam-auth-basic-connection"></a>

 [Untuk terhubung dengan Gremlin.NET, gunakan file `SigV4RequestSigner` sumber dari pustaka https://github.com/aws/ amazon-neptune-gremlin-dotnet kustom -sigv4.](https://github.com/aws/amazon-neptune-gremlin-dotnet-sigv4) Contoh pengaturan proyek terletak di [ https://github.com/aws/amazon-neptune-gremlin-dotnet-sigv4/ tree/main/example](https://github.com/aws/amazon-neptune-gremlin-dotnet-sigv4/tree/main/example), dan tercermin di bawah ini. 

File Proyek:

```
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp8.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="../src/SigV4RequestSigner.cs" Link="SigV4RequestSigner.cs" />
    <PackageReference Include="AWSSDK.Core" Version="3.7.402.24" />
    <PackageReference Include="gremlin.net" Version="3.7.3" />
  </ItemGroup>

</Project>
```

Contoh Program:

```
using System;
using System.Collections.Generic;
using System.Net.WebSockets;
using System.Linq;
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web;
using Gremlin.Net;
using Gremlin.Net.Driver;
using Gremlin.Net.Driver.Remote;
using Gremlin.Net.Process;
using Gremlin.Net.Process.Traversal;
using Gremlin.Net.Structure;
using static Gremlin.Net.Process.Traversal.AnonymousTraversalSource;
using static Gremlin.Net.Process.Traversal.__;
using static Gremlin.Net.Process.Traversal.P;
using static Gremlin.Net.Process.Traversal.Order;
using static Gremlin.Net.Process.Traversal.Operator;
using static Gremlin.Net.Process.Traversal.Pop;
using static Gremlin.Net.Process.Traversal.Scope;
using static Gremlin.Net.Process.Traversal.TextP;
using static Gremlin.Net.Process.Traversal.Column;
using static Gremlin.Net.Process.Traversal.Direction;
using static Gremlin.Net.Process.Traversal.T;
using Amazon.Runtime.CredentialManagement;
using Amazon.Runtime;
using Amazon;
using Amazon.Util;
using Amazon.Neptune.Gremlin.Driver;

namespace NeptuneExample
{
    class Program
    {
        static void Main(string[] args)
        {
            /*
                Include your Neptune endpoint and port below.
            */
            var neptune_host = "neptune-endpoint"; // ex: mycluster.cluster.us-east-1.neptune.amazonaws.com
            var neptune_port = 8182;

            var gremlinServer = new GremlinServer(neptune_host, neptune_port);
            var gremlinClient = new GremlinClient(gremlinServer, webSocketConfiguration: new SigV4RequestSigner().signRequest(neptune_host, neptune_port));
            var remoteConnection = new DriverRemoteConnection(gremlinClient);
            var g = Traversal().WithRemote(remoteConnection);

            /* Example code to pull the first 5 vertices in a graph. */
            Console.WriteLine("Get List of Node Labels:");
            Int32 limitValue = 5;
            var output = g.V().Limit<Vertex>(limitValue).ToList();
            foreach(var item in output) {
                Console.WriteLine(item);
            }
        }
    }
}
```

# Mengelola akses ke database Amazon Neptunus menggunakan kebijakan IAM
<a name="security-iam-access-manage"></a>

[Kebijakan IAM](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html) adalah objek JSON yang menentukan izin untuk menggunakan tindakan dan sumber daya.

Anda mengontrol akses AWS dengan membuat kebijakan dan melampirkannya ke AWS identitas atau sumber daya. Kebijakan menentukan izin saat dikaitkan dengan identitas atau sumber daya. AWS mengevaluasi kebijakan ini ketika kepala sekolah membuat permintaan. Sebagian besar kebijakan disimpan AWS sebagai dokumen JSON. Untuk informasi selengkapnya tentang dokumen kebijakan JSON, lihat [Gambaran umum kebijakan JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) dalam *Panduan Pengguna IAM*.

Menggunakan kebijakan, administrator menentukan siapa yang memiliki akses ke apa dengan mendefinisikan **principal** mana yang dapat melakukan **tindakan** pada **sumber daya** apa, dan dalam **kondisi** apa.

Secara default, pengguna dan peran tidak memiliki izin. Administrator IAM membuat kebijakan IAM dan menambahkannya ke peran, yang kemudian dapat diambil oleh pengguna. Kebijakan IAM mendefinisikan izin terlepas dari metode yang Anda gunakan untuk melakukan operasinya.

## Kebijakan Berbasis Identitas
<a name="security_iam_access-manage-id-based-policies"></a>

Kebijakan berbasis identitas adalah dokumen kebijakan izin JSON yang Anda lampirkan ke identitas (pengguna, grup, atau peran). Kebijakan ini mengontrol tindakan apa yang bisa dilakukan oleh identitas tersebut, terhadap sumber daya yang mana, dan dalam kondisi apa. Untuk mempelajari cara membuat kebijakan berbasis identitas, lihat [Tentukan izin IAM kustom dengan kebijakan yang dikelola pelanggan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dalam *Panduan Pengguna IAM*.

Kebijakan berbasis identitas dapat berupa *kebijakan inline* (disematkan langsung ke dalam satu identitas) atau *kebijakan terkelola* (kebijakan mandiri yang dilampirkan pada banyak identitas). Untuk mempelajari cara memilih antara kebijakan terkelola dan kebijakan inline, lihat [Pilih antara kebijakan terkelola dan kebijakan inline](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html) dalam *Panduan Pengguna IAM*.

## Menggunakan Kebijakan Kontrol Layanan (SCP) dengan organisasi AWS
<a name="security_iam_access-manage-scp"></a>

Kebijakan kontrol layanan (SCPs) adalah kebijakan JSON yang menentukan izin maksimum untuk organisasi atau unit organisasi (OU) di. [AWS Organizations](https://aws.amazon.com/organizations/) AWS Organizations adalah layanan untuk mengelompokkan dan mengelola beberapa AWS akun secara terpusat yang dimiliki bisnis Anda. Jika Anda mengaktifkan semua fitur dalam suatu organisasi, maka Anda dapat menerapkan kebijakan kontrol layanan (SCPs) ke salah satu atau semua akun Anda. SCP membatasi izin untuk entitas di akun anggota, termasuk setiap pengguna root AWS akun. Untuk informasi selengkapnya tentang Organizations dan SCPs, lihat [Cara SCPs kerja](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_about-scps.html) di Panduan AWS Organizations Pengguna.

Pelanggan yang menggunakan Amazon Neptunus di Akun AWS dalam Organisasi SCPs dapat memanfaatkan untuk mengontrol akun AWS mana yang dapat menggunakan Neptunus. Untuk memastikan akses ke Neptunus dalam akun anggota, pastikan untuk:
+  Izinkan akses ke `rds:*` dan `neptune-db:*` untuk operasi basis data Neptunus. Lihat [Mengapa izin dan sumber daya Amazon RDS diperlukan untuk menggunakan Database Neptunus](https://aws.amazon.com/neptune/faqs/)? untuk detail tentang mengapa izin Amazon RDS diperlukan untuk database Neptunus. 
+  Izinkan akses `neptune-graph:*` untuk operasi Neptune Analytics. 

## Izin Diperlukan untuk Menggunakan Konsol Amazon Neptune
<a name="security-iam-access-manage-console"></a>

Agar pengguna dapat bekerja dengan konsol Amazon Neptune, pengguna tersebut harus memiliki set izin minimum. Izin ini memungkinkan pengguna untuk menjelaskan sumber daya Neptune untuk akun AWS mereka dan untuk menyediakan informasi terkait lainnya, termasuk informasi keamanan dan jaringan Amazon EC2.

Jika Anda membuat kebijakan IAM yang lebih ketat daripada izin minimum yang diperlukan, konsol tidak akan berfungsi sebagaimana mestinya bagi pengguna dengan kebijakan IAM tersebut. Untuk memastikan bahwa pengguna tersebut masih dapat menggunakan konsol Neptune, lampirkan juga kebijakan `NeptuneReadOnlyAccess` yang dikelola kepada pengguna, sebagaimana dijelaskan dalam [Menggunakan kebijakan AWS terkelola untuk mengakses database Amazon Neptunus](security-iam-access-managed-policies.md).

Anda tidak perlu mengizinkan izin konsol minimum untuk pengguna yang melakukan panggilan hanya ke API Amazon Neptunus AWS CLI atau Amazon Neptunus.

## Melampirkan Kebijakan IAM ke pengguna IAM
<a name="iam-auth-policy-attaching"></a>

Untuk menerapkan kebijakan terkelola atau kustom, Anda melampirkannya ke pengguna IAM. Untuk tutorial tentang topik ini, lihat [ Buat dan Lampirkan Kebijakan Pengelolaan Pelanggan Pertama Anda](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html) dalam *Panduan Pengguna IAM*.

Saat mengikuti tutorial ini, Anda dapat menggunakan salah satu contoh kebijakan yang ditunjukkan dalam bagian ini sebagai titik awal dan menyesuaikannya dengan kebutuhan Anda. Di akhir tutorial, Anda memiliki seorang pengguna IAM dengan kebijakan terlampir yang dapat menggunakan tindakan `neptune-db:*`.

**penting**  
Perubahan kebijakan IAM memakan waktu hingga 10 menit untuk diterapkan ke sumber daya Neptune yang ditentukan.
Kebijakan IAM diterapkan ke klaster DB Neptune berlaku untuk semua instans dalam klaster itu.

## Menggunakan berbagai jenis kebijakan IAM untuk mengontrol akses ke Neptunus
<a name="iam-auth-policy"></a>

Untuk menyediakan akses ke tindakan administratif Neptunus atau ke data dalam klaster DB Neptunus, Anda melampirkan kebijakan ke pengguna atau peran IAM. Untuk informasi tentang cara melampirkan kebijakan IAM ke pengguna, lihat[Melampirkan Kebijakan IAM ke pengguna IAM](#iam-auth-policy-attaching). Untuk informasi tentang melampirkan kebijakan ke peran, lihat [Menambahkan dan Menghapus Kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) dalam *Panduan Pengguna IAM*.

[Untuk akses umum ke Neptunus, Anda dapat menggunakan salah satu kebijakan terkelola Neptunus.](security-iam-access-managed-policies.md) Untuk akses yang lebih terbatas, Anda dapat membuat kebijakan kustom Anda sendiri menggunakan [tindakan administratif](neptune-iam-admin-actions.md) dan [sumber daya yang didukung](iam-admin-resources.md) Neptunus..

Dalam kebijakan IAM kustom, Anda dapat menggunakan dua jenis pernyataan kebijakan berbeda yang mengontrol mode akses yang berbeda ke kluster DB Neptunus:
+ [Pernyataan kebijakan administratif — Pernyataan](iam-admin-policies.md) kebijakan administratif menyediakan akses ke APIs manajemen [Neptunus](api.md) yang Anda gunakan untuk membuat, mengonfigurasi, dan mengelola klaster DB dan instance-instance-nya.

  Karena Neptunus berbagi fungsionalitas dengan Amazon RDS, tindakan administratif, sumber daya, dan kunci kondisi dalam kebijakan Neptunus menggunakan awalan berdasarkan desain. `rds:`
+ [Pernyataan kebijakan akses data — Pernyataan](iam-data-access-policies.md) kebijakan akses data menggunakan [tindakan akses data](iam-dp-actions.md), [sumber daya](iam-data-resources.md), dan [kunci kondisi](iam-data-condition-keys.md#iam-neptune-condition-keys) untuk mengontrol akses data yang berisi kluster DB.

  Tindakan akses data Neptunus, sumber daya, dan kunci kondisi menggunakan awalan. `neptune-db:`

## Menggunakan kunci konteks kondisi IAM di Amazon Neptunus
<a name="iam-using-condition-keys"></a>

Anda dapat menentukan kondisi dalam pernyataan kebijakan IAM yang mengontrol akses ke Neptunus. Pernyataan kebijakan kemudian berlaku hanya jika kondisinya benar.

Misalnya, Anda mungkin ingin pernyataan kebijakan berlaku hanya setelah tanggal tertentu, atau mengizinkan akses hanya jika nilai tertentu ada dalam permintaan.

Untuk menyatakan kondisi, Anda menggunakan kunci kondisi yang telah ditentukan dalam [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)elemen pernyataan kebijakan, bersama dengan [operator kebijakan kondisi IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) seperti sama atau kurang dari.

Jika Anda menentukan beberapa elemen `Condition` dalam sebuah pernyataan, atau beberapa kunci dalam elemen `Condition` tunggal, maka AWS akan mengevaluasinya menggunakan operasi `AND` logis. Jika Anda menentukan beberapa nilai untuk satu kunci kondisi, AWS mengevaluasi kondisi menggunakan `OR` operasi logis. Semua kondisi harus dipenuhi sebelum izin pernyataan diberikan.

 Anda juga dapat menggunakan variabel placeholder saat menentukan kondisi. Sebagai contoh, Anda dapat memberikan izin kepada pengguna IAM untuk mengakses sumber daya hanya jika izin tersebut mempunyai tanda yang sesuai dengan nama pengguna IAM mereka. Untuk informasi lebih lanjut, lihat [Elemen Kebijakan IAM: Variabel dan Tanda](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html) dalam *Panduan Pengguna IAM*.

Tipe data dari kunci kondisi menentukan operator kondisi yang dapat Anda gunakan untuk membandingkan nilai dalam permintaan dengan nilai dalam pernyataan kebijakan. Jika Anda menggunakan operator kondisi yang tidak kompatibel dengan tipe data tersebut, kecocokan selalu gagal dan pernyataan kebijakan tidak pernah berlaku.

Neptunus mendukung kumpulan kunci kondisi yang berbeda untuk pernyataan kebijakan administratif daripada untuk pernyataan kebijakan akses data:
+ [Kunci kondisi untuk pernyataan kebijakan administratif](iam-admin-condition-keys.md)
+ [Kunci kondisi untuk pernyataan kebijakan akses data](iam-data-condition-keys.md#iam-neptune-condition-keys)

## Dukungan untuk kebijakan IAM dan fitur kontrol akses di Amazon Neptunus
<a name="neptune-iam-policy-support"></a>

Tabel berikut menunjukkan fitur IAM yang didukung Neptunus untuk pernyataan kebijakan administratif dan pernyataan kebijakan akses data:


**Fitur IAM yang dapat Anda gunakan dengan Neptunus**  

| Fitur IAM | Administratif | Akses data | 
| --- | --- | --- | 
| [Kebijakan berbasis identitas](#security_iam_access-manage-id-based-policies) | Ya | Ya | 
| [Kebijakan berbasis sumber daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html) | Tidak | Tidak | 
| [Tindakan kebijakan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_action.html) | Ya | Ya | 
| [Sumber daya kebijakan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html) | Ya | Ya | 
| [Kunci kondisi global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) | Ya | (subset) | 
| [Kunci kondisi berbasis tag](iam-admin-condition-keys.md#iam-rds-tag-based-condition-keys) | Ya | Tidak | 
| [Daftar Kontrol Akses (ACLs)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acls.html) | Tidak | Tidak | 
| [Kebijakan kontrol layanan (SCPs)](#security_iam_access-manage-scp) | Ya | Ya | 
| [Peran terkait layanan](security-iam-service-linked-roles.md) | Ya | Tidak | 

## Keterbatasan Kebijakan IAM
<a name="iam-policy-limits"></a>

Perubahan kebijakan IAM memakan waktu hingga 10 menit untuk diterapkan ke sumber daya Neptune yang ditentukan.

Kebijakan IAM diterapkan ke klaster DB Neptune berlaku untuk semua instans dalam klaster itu.

Neptunus saat ini tidak mendukung kontrol akses lintas akun di tingkat bidang data. Kontrol akses lintas akun hanya didukung saat pemuatan massal dan dengan menggunakan rantai peran. Untuk informasi lebih lanjut, lihat [Tutorial pemuatan massal](https://docs.aws.amazon.com//neptune/latest/userguide/bulk-load-tutorial-chain-roles.html#bulk-load-tutorial-chain-cross-account).

# Menggunakan kebijakan AWS terkelola untuk mengakses database Amazon Neptunus
<a name="security-iam-access-managed-policies"></a>

AWS mengatasi banyak kasus penggunaan umum dengan menyediakan kebijakan IAM mandiri yang dibuat dan dikelola oleh. AWS Kebijakan terkelola memberikan izin yang diperlukan untuk kasus penggunaan umum sehingga Anda tidak perlu menyelidiki izin apa yang diperlukan. Untuk informasi selengkapnya, lihat [Kebijakan Terkelola AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) dalam *Panduan Pengguna IAM*.

Kebijakan AWS terkelola berikut, yang dapat Anda lampirkan ke pengguna di akun Anda, adalah untuk menggunakan manajemen Amazon Neptunus APIs:
+ **[NeptuneReadOnlyAccess](read-only-access-iam-managed-policy.md)**— Memberikan akses hanya-baca ke semua sumber daya Neptunus untuk tujuan administratif dan akses data di akun root. AWS 
+ **[NeptuneFullAccess](full-access-iam-managed-policy.md)**— Memberikan akses penuh ke semua sumber daya Neptunus untuk tujuan administratif dan akses data di akun root. AWS Ini disarankan jika Anda memerlukan akses Neptunus penuh dari atau SDK, AWS CLI tetapi tidak untuk akses. Konsol Manajemen AWS 
+ **[NeptuneConsoleFullAccess](console-full-access-iam-managed-policy.md)**— Memberikan akses penuh di AWS akun root ke semua tindakan dan sumber daya administratif Neptunus, tetapi tidak untuk tindakan atau sumber daya akses data apa pun. Ini juga mencakup izin tambahan untuk menyederhanakan akses Neptunus dari konsol, termasuk izin IAM dan Amazon EC2 (VPC) terbatas.
+ **[NeptuneGraphReadOnlyAccess ](graph-read-only-access-iam-managed-policy.md)**— Menyediakan akses hanya-baca ke semua sumber daya Amazon Neptunus Analytics bersama dengan izin hanya-baca untuk layanan dependen
+ **[AWSServiceRoleForNeptuneGraphPolicy](aws-service-role-for-neptune-graph-policy.md)**— Memungkinkan grafik Neptunus Analytics untuk CloudWatch mempublikasikan metrik dan log operasional dan penggunaan.

Peran dan kebijakan IAM Neptune memberikan beberapa akses ke sumber daya Amazon RDS, karena Neptune berbagi teknologi operasional dengan Amazon RDS untuk fitur manajemen tertentu. Ini termasuk izin API administratif, itulah sebabnya tindakan administratif Neptunus memiliki awalan. `rds:`

## Pembaruan kebijakan terkelola AWS Neptunus
<a name="neptune-managed-policy-updates"></a>

Tabel berikut melacak pembaruan kebijakan terkelola Neptunus mulai dari saat Neptunus mulai melacak perubahan ini:


| Kebijakan | Deskripsi | Date | 
| --- | --- | --- | 
| AWS kebijakan terkelola untuk Amazon Neptunus - perbarui ke kebijakan yang ada | Kebijakan `NeptuneReadOnlyAcess` dan `NeptuneFullAccess` terkelola sekarang menyertakan `Sid` (ID pernyataan) sebagai pengenal dalam pernyataan kebijakan. | 2024-01-22 | 
| [NeptuneGraphReadOnlyAccess](read-only-access-iam-managed-policy.md)(dirilis) | Dirilis untuk menyediakan akses hanya-baca ke grafik dan sumber daya Neptunus Analytics. | 2023-11-29 | 
| [AWSServiceRoleForNeptuneGraphPolicy](aws-service-role-for-neptune-graph-policy.md)(dirilis) | Dirilis untuk memungkinkan akses grafik Neptunus Analytics CloudWatch untuk mempublikasikan metrik dan log operasional dan penggunaan. Lihat [Menggunakan peran terkait layanan (SLRs) di Neptunus](https://docs.aws.amazon.com/neptune-analytics/latest/userguide/nan-service-linked-roles.html) Analytics. | 2023-11-29 | 
| [NeptuneConsoleFullAccess](console-full-access-iam-managed-policy.md)(izin tambahan) | Izin tambahan menyediakan semua akses yang diperlukan untuk berinteraksi dengan grafik Neptunus Analytics. | 2023-11/29 | 
| [NeptuneFullAccess](full-access-iam-managed-policy.md)(izin tambahan) | Menambahkan izin akses data, dan izin untuk database global baru. APIs | 2022-07-28 | 
| [NeptuneConsoleFullAccess](console-full-access-iam-managed-policy.md)(izin tambahan) | Menambahkan izin untuk database APIs global baru. | 2022-07-21 | 
| Neptunus mulai melacak perubahan | Neptunus mulai melacak perubahan kebijakan yang dikelola. AWS  | 2022-07-21 | 

# Pemberian database `NeptuneReadOnlyAccess` Amazon Neptunus menggunakan kebijakan terkelola AWS
<a name="read-only-access-iam-managed-policy"></a>

Kebijakan [NeptuneReadOnlyAccess](https://console.aws.amazon.com/iam/home#policies/NeptuneReadOnlyAccess)terkelola di bawah ini memberikan akses hanya-baca ke semua tindakan dan sumber daya Neptunus untuk tujuan administratif dan akses data.

**catatan**  
Kebijakan ini diperbarui pada 2022-07-21 untuk menyertakan izin akses data hanya-baca serta izin administratif hanya-baca dan menyertakan izin untuk tindakan database global.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowReadOnlyPermissionsForRDS",
            "Effect": "Allow",
            "Action": [
                "rds:DescribeAccountAttributes",
                "rds:DescribeCertificates",
                "rds:DescribeDBClusterParameterGroups",
                "rds:DescribeDBClusterParameters",
                "rds:DescribeDBClusterSnapshotAttributes",
                "rds:DescribeDBClusterSnapshots",
                "rds:DescribeDBClusters",
                "rds:DescribeDBEngineVersions",
                "rds:DescribeDBInstances",
                "rds:DescribeDBLogFiles",
                "rds:DescribeDBParameterGroups",
                "rds:DescribeDBParameters",
                "rds:DescribeDBSubnetGroups",
                "rds:DescribeEventCategories",
                "rds:DescribeEventSubscriptions",
                "rds:DescribeEvents",
                "rds:DescribeGlobalClusters",
                "rds:DescribeOrderableDBInstanceOptions",
                "rds:DescribePendingMaintenanceActions",
                "rds:DownloadDBLogFilePortion",
                "rds:ListTagsForResource"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowReadOnlyPermissionsForCloudwatch",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:ListMetrics"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowReadOnlyPermissionsForEC2",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeInternetGateways",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcAttribute",
                "ec2:DescribeVpcs"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowReadOnlyPermissionsForKMS",
            "Effect": "Allow",
            "Action": [
                "kms:ListKeys",
                "kms:ListRetirableGrants",
                "kms:ListAliases",
                "kms:ListKeyPolicies"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowReadOnlyPermissionsForLogs",
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogStreams",
                "logs:GetLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:*:*:log-group:/aws/rds/*:log-stream:*",
                "arn:aws:logs:*:*:log-group:/aws/neptune/*:log-stream:*"
            ]
        },
        {
            "Sid": "AllowReadOnlyPermissionsForNeptuneDB",
            "Effect": "Allow",
            "Action": [
                "neptune-db:Read*",
                "neptune-db:Get*",
                "neptune-db:List*"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

# Pemberian database `NeptuneFullAccess` Amazon Neptunus menggunakan kebijakan terkelola AWS
<a name="full-access-iam-managed-policy"></a>

Kebijakan [NeptuneFullAccess](https://console.aws.amazon.com/iam/home#policies/NeptuneFullAccess)terkelola di bawah ini memberikan akses penuh ke semua tindakan dan sumber daya Neptunus untuk tujuan administratif dan akses data. Disarankan jika Anda memerlukan akses penuh dari AWS CLI atau dari SDK, tetapi tidak dari Konsol Manajemen AWS.

**catatan**  
Kebijakan ini diperbarui pada 2022-07-21 untuk menyertakan izin akses data lengkap serta izin administratif penuh dan untuk menyertakan izin untuk tindakan database global.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowNeptuneCreate",
            "Effect": "Allow",
            "Action": [
                "rds:CreateDBCluster",
                "rds:CreateDBInstance"
            ],
            "Resource": [
                "arn:aws:rds:*:*:*"
            ],
            "Condition": {
                "StringEquals": {
                    "rds:DatabaseEngine": [
                        "graphdb",
                        "neptune"
                    ]
                }
            }
        },
        {
            "Sid": "AllowManagementPermissionsForRDS",
            "Effect": "Allow",
            "Action": [
                "rds:AddRoleToDBCluster",
                "rds:AddSourceIdentifierToSubscription",
                "rds:AddTagsToResource",
                "rds:ApplyPendingMaintenanceAction",
                "rds:CopyDBClusterParameterGroup",
                "rds:CopyDBClusterSnapshot",
                "rds:CopyDBParameterGroup",
                "rds:CreateDBClusterEndpoint",
                "rds:CreateDBClusterParameterGroup",
                "rds:CreateDBClusterSnapshot",
                "rds:CreateDBParameterGroup",
                "rds:CreateDBSubnetGroup",
                "rds:CreateEventSubscription",
                "rds:CreateGlobalCluster",
                "rds:DeleteDBCluster",
                "rds:DeleteDBClusterEndpoint",
                "rds:DeleteDBClusterParameterGroup",
                "rds:DeleteDBClusterSnapshot",
                "rds:DeleteDBInstance",
                "rds:DeleteDBParameterGroup",
                "rds:DeleteDBSubnetGroup",
                "rds:DeleteEventSubscription",
                "rds:DeleteGlobalCluster",
                "rds:DescribeDBClusterEndpoints",
                "rds:DescribeAccountAttributes",
                "rds:DescribeCertificates",
                "rds:DescribeDBClusterParameterGroups",
                "rds:DescribeDBClusterParameters",
                "rds:DescribeDBClusterSnapshotAttributes",
                "rds:DescribeDBClusterSnapshots",
                "rds:DescribeDBClusters",
                "rds:DescribeDBEngineVersions",
                "rds:DescribeDBInstances",
                "rds:DescribeDBLogFiles",
                "rds:DescribeDBParameterGroups",
                "rds:DescribeDBParameters",
                "rds:DescribeDBSecurityGroups",
                "rds:DescribeDBSubnetGroups",
                "rds:DescribeEngineDefaultClusterParameters",
                "rds:DescribeEngineDefaultParameters",
                "rds:DescribeEventCategories",
                "rds:DescribeEventSubscriptions",
                "rds:DescribeEvents",
                "rds:DescribeGlobalClusters",
                "rds:DescribeOptionGroups",
                "rds:DescribeOrderableDBInstanceOptions",
                "rds:DescribePendingMaintenanceActions",
                "rds:DescribeValidDBInstanceModifications",
                "rds:DownloadDBLogFilePortion",
                "rds:FailoverDBCluster",
                "rds:FailoverGlobalCluster",
                "rds:ListTagsForResource",
                "rds:ModifyDBCluster",
                "rds:ModifyDBClusterEndpoint",
                "rds:ModifyDBClusterParameterGroup",
                "rds:ModifyDBClusterSnapshotAttribute",
                "rds:ModifyDBInstance",
                "rds:ModifyDBParameterGroup",
                "rds:ModifyDBSubnetGroup",
                "rds:ModifyEventSubscription",
                "rds:ModifyGlobalCluster",
                "rds:PromoteReadReplicaDBCluster",
                "rds:RebootDBInstance",
                "rds:RemoveFromGlobalCluster",
                "rds:RemoveRoleFromDBCluster",
                "rds:RemoveSourceIdentifierFromSubscription",
                "rds:RemoveTagsFromResource",
                "rds:ResetDBClusterParameterGroup",
                "rds:ResetDBParameterGroup",
                "rds:RestoreDBClusterFromSnapshot",
                "rds:RestoreDBClusterToPointInTime",
                "rds:StartDBCluster",
                "rds:StopDBCluster"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "AllowOtherDepedentPermissions",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:ListMetrics",
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcAttribute",
                "ec2:DescribeVpcs",
                "kms:ListAliases",
                "kms:ListKeyPolicies",
                "kms:ListKeys",
                "kms:ListRetirableGrants",
                "logs:DescribeLogStreams",
                "logs:GetLogEvents",
                "sns:ListSubscriptions",
                "sns:ListTopics",
                "sns:Publish"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "AllowPassRoleForNeptune",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:passedToService": "rds.amazonaws.com"
                }
            }
        },
        {
            "Sid": "AllowCreateSLRForNeptune",
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS",
            "Condition": {
                "StringLike": {
                    "iam:AWSServiceName": "rds.amazonaws.com"
                }
            }
        },
        {
            "Sid": "AllowDataAccessForNeptune",
            "Effect": "Allow",
            "Action": [
                "neptune-db:*"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

# Pemberian `NeptuneConsoleFullAccess` menggunakan kebijakan AWS terkelola
<a name="console-full-access-iam-managed-policy"></a>

Kebijakan [NeptuneConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/NeptuneConsoleFullAccess)terkelola di bawah ini memberikan akses penuh ke semua tindakan dan sumber daya Neptunus untuk tujuan administratif, tetapi tidak untuk tujuan akses data. Ini juga mencakup izin tambahan untuk menyederhanakan akses Neptunus dari konsol, termasuk izin IAM dan Amazon EC2 (VPC) terbatas.

**catatan**  
Kebijakan ini diperbarui pada 2023-11-29 untuk menyertakan izin yang diperlukan untuk berinteraksi dengan grafik Neptunus Analytics.  
Itu diperbarui pada 2022-07-21 untuk menyertakan izin untuk tindakan database global.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowNeptuneCreate",
      "Effect": "Allow",
      "Action": [
        "rds:CreateDBCluster",
        "rds:CreateDBInstance"
      ],
      "Resource": [
        "arn:aws:rds:*:*:*"
      ],
      "Condition": {
        "StringEquals": {
          "rds:DatabaseEngine": [
            "graphdb",
            "neptune"
          ]
        }
      }
    },
    {
      "Sid": "AllowManagementPermissionsForRDS",
      "Action": [
        "rds:AddRoleToDBCluster",
        "rds:AddSourceIdentifierToSubscription",
        "rds:AddTagsToResource",
        "rds:ApplyPendingMaintenanceAction",
        "rds:CopyDBClusterParameterGroup",
        "rds:CopyDBClusterSnapshot",
        "rds:CopyDBParameterGroup",
        "rds:CreateDBClusterParameterGroup",
        "rds:CreateDBClusterSnapshot",
        "rds:CreateDBParameterGroup",
        "rds:CreateDBSubnetGroup",
        "rds:CreateEventSubscription",
        "rds:DeleteDBCluster",
        "rds:DeleteDBClusterParameterGroup",
        "rds:DeleteDBClusterSnapshot",
        "rds:DeleteDBInstance",
        "rds:DeleteDBParameterGroup",
        "rds:DeleteDBSubnetGroup",
        "rds:DeleteEventSubscription",
        "rds:DescribeAccountAttributes",
        "rds:DescribeCertificates",
        "rds:DescribeDBClusterParameterGroups",
        "rds:DescribeDBClusterParameters",
        "rds:DescribeDBClusterSnapshotAttributes",
        "rds:DescribeDBClusterSnapshots",
        "rds:DescribeDBClusters",
        "rds:DescribeDBEngineVersions",
        "rds:DescribeDBInstances",
        "rds:DescribeDBLogFiles",
        "rds:DescribeDBParameterGroups",
        "rds:DescribeDBParameters",
        "rds:DescribeDBSecurityGroups",
        "rds:DescribeDBSubnetGroups",
        "rds:DescribeEngineDefaultClusterParameters",
        "rds:DescribeEngineDefaultParameters",
        "rds:DescribeEventCategories",
        "rds:DescribeEventSubscriptions",
        "rds:DescribeEvents",
        "rds:DescribeOptionGroups",
        "rds:DescribeOrderableDBInstanceOptions",
        "rds:DescribePendingMaintenanceActions",
        "rds:DescribeValidDBInstanceModifications",
        "rds:DownloadDBLogFilePortion",
        "rds:FailoverDBCluster",
        "rds:ListTagsForResource",
        "rds:ModifyDBCluster",
        "rds:ModifyDBClusterParameterGroup",
        "rds:ModifyDBClusterSnapshotAttribute",
        "rds:ModifyDBInstance",
        "rds:ModifyDBParameterGroup",
        "rds:ModifyDBSubnetGroup",
        "rds:ModifyEventSubscription",
        "rds:PromoteReadReplicaDBCluster",
        "rds:RebootDBInstance",
        "rds:RemoveRoleFromDBCluster",
        "rds:RemoveSourceIdentifierFromSubscription",
        "rds:RemoveTagsFromResource",
        "rds:ResetDBClusterParameterGroup",
        "rds:ResetDBParameterGroup",
        "rds:RestoreDBClusterFromSnapshot",
        "rds:RestoreDBClusterToPointInTime"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "AllowOtherDepedentPermissions",
      "Action": [
        "cloudwatch:GetMetricStatistics",
        "cloudwatch:ListMetrics",
        "ec2:AllocateAddress",
        "ec2:AssignIpv6Addresses",
        "ec2:AssignPrivateIpAddresses",
        "ec2:AssociateAddress",
        "ec2:AssociateRouteTable",
        "ec2:AssociateSubnetCidrBlock",
        "ec2:AssociateVpcCidrBlock",
        "ec2:AttachInternetGateway",
        "ec2:AttachNetworkInterface",
        "ec2:CreateCustomerGateway",
        "ec2:CreateDefaultSubnet",
        "ec2:CreateDefaultVpc",
        "ec2:CreateInternetGateway",
        "ec2:CreateNatGateway",
        "ec2:CreateNetworkInterface",
        "ec2:CreateRoute",
        "ec2:CreateRouteTable",
        "ec2:CreateSecurityGroup",
        "ec2:CreateSubnet",
        "ec2:CreateVpc",
        "ec2:CreateVpcEndpoint",
        "ec2:CreateVpcEndpoint",
        "ec2:DescribeAccountAttributes",
        "ec2:DescribeAccountAttributes",
        "ec2:DescribeAddresses",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeCustomerGateways",
        "ec2:DescribeInstances",
        "ec2:DescribeNatGateways",
        "ec2:DescribeNetworkInterfaces",
        "ec2:DescribePrefixLists",
        "ec2:DescribeRouteTables",
        "ec2:DescribeSecurityGroupReferences",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSubnets",
        "ec2:DescribeSubnets",
        "ec2:DescribeVpcAttribute",
        "ec2:DescribeVpcAttribute",
        "ec2:DescribeVpcEndpoints",
        "ec2:DescribeVpcs",
        "ec2:DescribeVpcs",
        "ec2:ModifyNetworkInterfaceAttribute",
        "ec2:ModifySubnetAttribute",
        "ec2:ModifyVpcAttribute",
        "ec2:ModifyVpcEndpoint",
        "iam:ListRoles",
        "kms:ListAliases",
        "kms:ListKeyPolicies",
        "kms:ListKeys",
        "kms:ListRetirableGrants",
        "logs:DescribeLogStreams",
        "logs:GetLogEvents",
        "sns:ListSubscriptions",
        "sns:ListTopics",
        "sns:Publish"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "AllowPassRoleForNeptune",
      "Action": "iam:PassRole",
      "Effect": "Allow",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "iam:passedToService": "rds.amazonaws.com"
        }
      }
    },
    {
      "Sid": "AllowCreateSLRForNeptune",
      "Action": "iam:CreateServiceLinkedRole",
      "Effect": "Allow",
      "Resource": "arn:aws:iam::*:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS",
      "Condition": {
        "StringLike": {
          "iam:AWSServiceName": "rds.amazonaws.com"
        }
      }
    },
    {
      "Sid": "AllowManagementPermissionsForNeptuneAnalytics",
      "Effect": "Allow",
      "Action": [
        "neptune-graph:CreateGraph",
        "neptune-graph:DeleteGraph",
        "neptune-graph:GetGraph",
        "neptune-graph:ListGraphs",
        "neptune-graph:UpdateGraph",
        "neptune-graph:ResetGraph",
        "neptune-graph:CreateGraphSnapshot",
        "neptune-graph:DeleteGraphSnapshot",
        "neptune-graph:GetGraphSnapshot",
        "neptune-graph:ListGraphSnapshots",
        "neptune-graph:RestoreGraphFromSnapshot",
        "neptune-graph:CreatePrivateGraphEndpoint",
        "neptune-graph:GetPrivateGraphEndpoint",
        "neptune-graph:ListPrivateGraphEndpoints",
        "neptune-graph:DeletePrivateGraphEndpoint",
        "neptune-graph:CreateGraphUsingImportTask",
        "neptune-graph:GetImportTask",
        "neptune-graph:ListImportTasks",
        "neptune-graph:CancelImportTask"
      ],
      "Resource": [
        "arn:aws:neptune-graph:*:*:*"
      ]
    },
    {
      "Sid": "AllowPassRoleForNeptuneAnalytics",
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "iam:passedToService": "neptune-graph.amazonaws.com"
        }
      }
    },
    {
      "Sid": "AllowCreateSLRForNeptuneAnalytics",
      "Effect": "Allow",
      "Action": "iam:CreateServiceLinkedRole",
      "Resource": "arn:aws:iam::*:role/aws-service-role/neptune-graph.amazonaws.com/AWSServiceRoleForNeptuneGraph",
      "Condition": {
        "StringLike": {
          "iam:AWSServiceName": "neptune-graph.amazonaws.com"
        }
      }
    }
  ]
}
```

------

# Pemberian `NeptuneGraphReadOnlyAccess` menggunakan kebijakan AWS terkelola
<a name="graph-read-only-access-iam-managed-policy"></a>

Kebijakan [NeptuneGraphReadOnlyAccess](https://console.aws.amazon.com/iam/home#policies/NeptuneGraphReadOnlyAccess)terkelola di bawah ini menyediakan akses hanya baca ke semua sumber daya Amazon Neptunus Analytics bersama dengan izin baca saja untuk layanan dependen.

Kebijakan ini mencakup izin untuk melakukan hal berikut:
+ **Untuk Amazon EC2** — Ambil informasi tentang VPCs, subnet, grup keamanan, dan zona ketersediaan.
+ **Untuk AWS KMS** - Ambil informasi tentang kunci dan alias KMS.
+ **Untuk CloudWatch** — Ambil informasi tentang CloudWatch metrik.
+ **Untuk CloudWatch Log** - Ambil informasi tentang aliran CloudWatch log dan peristiwa.

**catatan**  
Kebijakan ini dirilis pada 2023-11-29.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowReadOnlyPermissionsForNeptuneGraph",
      "Effect": "Allow",
      "Action": [
        "neptune-graph:Get*",
        "neptune-graph:List*",
        "neptune-graph:Read*"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadOnlyPermissionsForEC2",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeVpcEndpoints",
        "ec2:DescribeVpcAttribute",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSubnets",
        "ec2:DescribeVpcs",
        "ec2:DescribeAvailabilityZones"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadOnlyPermissionsForKMS",
      "Effect": "Allow",
      "Action": [
        "kms:ListKeys",
        "kms:ListAliases"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadOnlyPermissionsForCloudwatch",
      "Effect": "Allow",
      "Action": [
        "cloudwatch:GetMetricData",
        "cloudwatch:ListMetrics",
        "cloudwatch:GetMetricStatistics"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadOnlyPermissionsForLogs",
      "Effect": "Allow",
      "Action": [
        "logs:DescribeLogStreams",
        "logs:GetLogEvents"
      ],
      "Resource": [
        "arn:aws:logs:*:*:log-group:/aws/neptune/*:log-stream:*"
      ]
    }
  ]
}
```

------

# Memberikan akses ke grafik Neptunus menggunakan `AWSServiceRoleForNeptuneGraphPolicy`
<a name="aws-service-role-for-neptune-graph-policy"></a>

Kebijakan [AWSServiceRoleForNeptuneGraphPolicy](https://console.aws.amazon.com/iam/home#policies/AWSServiceRoleForNeptuneGraphPolicy)terkelola di bawah ini memberikan akses grafik CloudWatch untuk mempublikasikan metrik dan log operasional dan penggunaan. Lihat [nan-service-linked-roles](https://docs.aws.amazon.com/neptune-analytics/latest/userguide/nan-service-linked-roles.html).

**catatan**  
Kebijakan ini dirilis pada 2023-11-29.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "GraphMetrics",
      "Effect": "Allow",
      "Action": [
        "cloudwatch:PutMetricData"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "cloudwatch:namespace": [
            "AWS/Neptune",
            "AWS/Usage"
          ]
        }
      }
    },
    {
      "Sid": "GraphLogGroup",
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup"
      ],
      "Resource": [
        "arn:aws:logs:*:*:log-group:/aws/neptune/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "GraphLogEvents",
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogStreams"
      ],
      "Resource": [
        "arn:aws:logs:*:*:log-group:/aws/neptune/*:log-stream:*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    }
  ]
}
```

------



# Menyesuaikan akses ke sumber daya Amazon Neptunus menggunakan kunci konteks kondisi IAM
<a name="iam-condition-keys"></a>

Anda dapat menentukan kondisi dalam kebijakan IAM yang mengontrol akses ke tindakan dan sumber daya manajemen Neptunus. Pernyataan kebijakan kemudian berlaku hanya jika kondisinya benar.

Misalnya, Anda mungkin ingin pernyataan kebijakan berlaku hanya setelah tanggal tertentu, atau mengizinkan akses hanya jika nilai tertentu ada dalam permintaan API.

Untuk menyatakan kondisi, Anda menggunakan kunci kondisi yang telah ditentukan dalam [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)elemen pernyataan kebijakan, bersama dengan [operator kebijakan kondisi IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) seperti sama atau kurang dari.

Jika Anda menentukan beberapa elemen `Condition` dalam sebuah pernyataan, atau beberapa kunci dalam elemen `Condition` tunggal, maka AWS akan mengevaluasinya menggunakan operasi `AND` logis. Jika Anda menentukan beberapa nilai untuk satu kunci kondisi, AWS mengevaluasi kondisi menggunakan `OR` operasi logis. Semua kondisi harus dipenuhi sebelum izin pernyataan diberikan.

 Anda juga dapat menggunakan variabel placeholder saat menentukan kondisi. Sebagai contoh, Anda dapat memberikan izin kepada pengguna IAM untuk mengakses sumber daya hanya jika izin tersebut mempunyai tanda yang sesuai dengan nama pengguna IAM mereka. Untuk informasi lebih lanjut, lihat [Elemen Kebijakan IAM: Variabel dan Tanda](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html) dalam *Panduan Pengguna IAM*.

Tipe data dari kunci kondisi menentukan operator kondisi yang dapat Anda gunakan untuk membandingkan nilai dalam permintaan dengan nilai dalam pernyataan kebijakan. Jika Anda menggunakan operator kondisi yang tidak kompatibel dengan tipe data tersebut, kecocokan selalu gagal dan pernyataan kebijakan tidak pernah berlaku. 

**Kunci kondisi IAM untuk pernyataan kebijakan administratif Neptunus**
+ [Kunci kondisi global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) - Anda dapat menggunakan sebagian besar kunci kondisi AWS global dalam pernyataan kebijakan administratif Neptunus.
+ [Kunci kondisi khusus layanan](iam-admin-condition-keys.md) — Ini adalah kunci yang ditentukan untuk layanan tertentu AWS . Yang didukung Neptunus untuk pernyataan kebijakan administratif tercantum dalam. [Kunci kondisi IAM untuk mengelola Amazon Neptunus](iam-admin-condition-keys.md)

**Kunci kondisi IAM untuk pernyataan kebijakan akses data Neptunus**
+ [Kunci kondisi global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) - Subset dari kunci ini yang didukung Neptunus dalam pernyataan kebijakan akses data tercantum dalam. [AWS kunci konteks kondisi global yang didukung oleh Neptunus dalam pernyataan kebijakan akses data](iam-data-condition-keys.md#iam-data-global-condition-keys)
+ Kunci kondisi khusus layanan yang didefinisikan Neptunus untuk pernyataan kebijakan akses data dicantumkan di dalamnya. [Kunci kondisi](iam-data-condition-keys.md)

# Membuat pernyataan kebijakan IAM khusus untuk mengelola Amazon Neptunus
<a name="iam-admin-policies"></a>

Pernyataan kebijakan administratif memungkinkan Anda mengontrol apa yang dapat dilakukan pengguna IAM untuk mengelola database Neptunus.

Pernyataan kebijakan administratif Neptunus memberikan akses ke satu atau [lebih tindakan administratif dan [sumber daya administratif](iam-admin-resources.md)](neptune-iam-admin-actions.md) yang didukung Neptunus. Anda juga dapat menggunakan [Kunci kondisi](iam-admin-condition-keys.md) untuk membuat izin administratif lebih spesifik.

**catatan**  
Karena Neptunus berbagi fungsionalitas dengan Amazon RDS, tindakan administratif, sumber daya, dan kunci kondisi khusus layanan dalam pernyataan kebijakan administratif menggunakan awalan berdasarkan desain. `rds:`

**Topics**
+ [Tindakan IAM untuk mengelola Amazon Neptunus](neptune-iam-admin-actions.md)
+ [Jenis sumber daya IAM untuk mengelola Amazon Neptunus](iam-admin-resources.md)
+ [Kunci kondisi IAM untuk mengelola Amazon Neptunus](iam-admin-condition-keys.md)
+ [Membuat pernyataan kebijakan administratif IAM untuk Amazon Neptunus](iam-admin-policy-examples.md)

# Tindakan IAM untuk mengelola Amazon Neptunus
<a name="neptune-iam-admin-actions"></a>

Anda dapat menggunakan tindakan administratif yang tercantum di bawah ini dalam `Action` elemen pernyataan kebijakan IAM untuk mengontrol akses ke manajemen [Neptunus](api.md). APIs Saat Anda menggunakan sebuah tindakan dalam sebuah kebijakan, Anda biasanya mengizinkan atau menolak akses ke operasi API atau perintah CLI dengan nama yang sama. Namun, dalam beberapa kasus, satu tindakan tunggal mengontrol akses ke lebih dari satu operasi. Atau, beberapa operasi memerlukan beberapa tindakan yang berbeda.

`Resource type`Bidang dalam daftar di bawah ini menunjukkan apakah setiap tindakan mendukung izin tingkat sumber daya. Jika tidak ada nilai di bidang ini, Anda harus menentukan semua sumber daya (“\$1”) dalam `Resource` elemen pernyataan kebijakan Anda. Jika kolom menyertakan jenis sumber daya, maka Anda dapat menentukan ARN sumber daya dari jenis itu dalam pernyataan dengan tindakan itu. [Jenis sumber daya administratif Neptunus tercantum di halaman ini.](iam-admin-resources.md)

Sumber daya yang diperlukan ditunjukkan dalam daftar di bawah ini dengan tanda bintang (\$1). Jika Anda menentukan ARN izin tingkat sumber daya dalam pernyataan dengan menggunakan tindakan ini, maka izinnya harus jenis ini. Beberapa tindakan mendukung berbagai jenis sumber daya. Jika jenis sumber daya adalah opsional (dengan kata lain, tidak ditandai dengan tanda bintang), maka Anda tidak perlu memasukkannya.

Untuk informasi selengkapnya tentang bidang yang tercantum di sini, lihat [tabel tindakan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_actions-resources-contextkeys.html#actions_table) di [Panduan Pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/).

## rds: AddRoleTo DBCluster
<a name="neptune-iam-admin-actions-AddRoleToDBCluster"></a>

`AddRoleToDBCluster` mengaitkan IAM role dengan klaster DB Neptune.

*Tingkat akses:* `Write`.

*Tindakan bergantung:* `iam:PassRole`.

*Jenis sumber daya:* [klaster](iam-admin-resources.md#neptune-cluster-resource) (wajib).

## rds: AddSourceIdentifierToSubscription
<a name="neptune-iam-admin-actions-AddSourceIdentifierToSubscription"></a>

`AddSourceIdentifierToSubscription` menambahkan pengidentifikasi sumber ke langganan notifikasi Neptune yang ada.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [es](iam-admin-resources.md#neptune-es-resource) (wajib).

## rds: AddTagsToResource
<a name="neptune-iam-admin-actions-AddTagsToResource"></a>

`AddTagsToResource` mengaitkan IAM role dengan klaster DB Neptune.

*Tingkat akses:* `Write`.

*Jenis sumber daya:*
+ [db](iam-admin-resources.md#neptune-db-resource)
+ [es](iam-admin-resources.md#neptune-es-resource)
+ [pg](iam-admin-resources.md#neptune-pg-resource)
+ [cuplikan cluster](iam-admin-resources.md#neptune-cluster-snapshot-resource)
+ [subgrp](iam-admin-resources.md#neptune-subgrp-resource)

*Kunci Kondisi:*
+ [aws:RequestTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [aws: TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## rds: ApplyPendingMaintenanceAction
<a name="neptune-iam-admin-actions-ApplyPendingMaintenanceAction"></a>

`ApplyPendingMaintenanceAction` menerapkan tindakan pemeliharaan tertunda ke sumber daya.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [db](iam-admin-resources.md#neptune-db-resource) (wajib).

## RDS: Salin DBCluster ParameterGroup
<a name="neptune-iam-admin-actions-CopyDBClusterParameterGroup"></a>

`Salin DBCluster ParameterGroup` menyalin grup parameter klaster DB yang ditentukan.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource) (wajib).

## RDSDBCluster: Salin Snapshot
<a name="neptune-iam-admin-actions-CopyDBClusterSnapshot"></a>

`Salin DBCluster Snapshot` menyalin snapshot dari klaster DB.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource) (wajib).

## RDSDBParameter: Grup Salin
<a name="neptune-iam-admin-actions-CopyDBParameterGroup"></a>

`Salin DBParameter Grup` menyalin grup parameter DB yang ditentukan.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [pg](iam-admin-resources.md#neptune-pg-resource) (wajib).

## RDS: Buat DBCluster
<a name="neptune-iam-admin-actions-CreateDBCluster"></a>

`Buat DBCluster` menciptakan sebuah klaster DB Neptune baru.

*Tingkat akses:* `Tagging`.

*Tindakan bergantung:* `iam:PassRole`.

*Jenis sumber daya:*
+ [cluster](iam-admin-resources.md#neptune-cluster-resource) (wajib).
+ [cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource) (wajib).
+ [subgrp](iam-admin-resources.md#neptune-subgrp-resource) (wajib).

*Kunci Kondisi:*
+ [aws:RequestTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [aws: TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)
+ [neptunus-rds\$1 DatabaseEngine](iam-admin-condition-keys.md#admin-rds_DatabaseEngine)

## RDS: Buat DBCluster ParameterGroup
<a name="neptune-iam-admin-actions-CreateDBClusterParameterGroup"></a>

`Buat DBCluster ParameterGroup` membuat grup parameter klaster DB baru.

*Tingkat akses:* `Tagging`.

*Jenis sumber daya:* [cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource) (wajib).

*Kunci Kondisi:*
+ [aws:RequestTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [aws: TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDSDBCluster: Buat Snapshot
<a name="neptune-iam-admin-actions-CreateDBClusterSnapshot"></a>

`Buat DBCluster Snapshot` membuat snapshot klaster DB.

*Tingkat akses:* `Tagging`.

*Jenis sumber daya:*
+ [cluster](iam-admin-resources.md#neptune-cluster-resource) (wajib).
+ [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource) (wajib).

*Kunci Kondisi:*
+ [aws:RequestTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [aws: TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDS: Buat DBInstance
<a name="neptune-iam-admin-actions-CreateDBInstance"></a>

`Buat DBInstance` menciptakan instans DB baru.

*Tingkat akses:* `Tagging`.

*Tindakan bergantung:* `iam:PassRole`.

*Jenis sumber daya:*
+ [db](iam-admin-resources.md#neptune-db-resource) (wajib).
+ [pg](iam-admin-resources.md#neptune-pg-resource) (wajib).
+ [subgrp](iam-admin-resources.md#neptune-subgrp-resource) (wajib).

*Kunci Kondisi:*
+ [aws:RequestTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [aws: TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDSDBParameter: Buat Grup
<a name="neptune-iam-admin-actions-CreateDBParameterGroup"></a>

`Buat DBParameter Grup` membuat grup parameter DB baru.

*Tingkat akses:* `Tagging`.

*Jenis sumber daya:* [pg](iam-admin-resources.md#neptune-pg-resource) (wajib).

*Kunci Kondisi:*
+ [aws:RequestTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [aws: TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDSDBSubnet: Buat Grup
<a name="neptune-iam-admin-actions-CreateDBSubnetGroup"></a>

`Buat DBSubnet Grup` membuat grup subnet DB baru.

*Tingkat akses:* `Tagging`.

*Jenis sumber daya:* [subgrp](iam-admin-resources.md#neptune-subgrp-resource) (wajib).

*Kunci Kondisi:*
+ [aws:RequestTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [aws: TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## rds: CreateEventSubscription
<a name="neptune-iam-admin-actions-CreateEventSubscription"></a>

`CreateEventSubscription` menciptakan langganan notifikasi peristiwa Neptune.

*Tingkat akses:* `Tagging`.

*Jenis sumber daya:* [es](iam-admin-resources.md#neptune-es-resource) (wajib).

*Kunci Kondisi:*
+ [aws:RequestTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [aws: TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDS: Hapus DBCluster
<a name="neptune-iam-admin-actions-DeleteDBCluster"></a>

`Hapus DBCluster` menghapus klaster DB Neptune yang ada.

*Tingkat akses:* `Write`.

*Jenis sumber daya:*
+ [cluster](iam-admin-resources.md#neptune-cluster-resource) (wajib).
+ [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource) (wajib).

## RDS: Hapus DBCluster ParameterGroup
<a name="neptune-iam-admin-actions-DeleteDBClusterParameterGroup"></a>

`Hapus DBCluster ParameterGroup` menghapus grup parameter klaster DB yang ditentukan.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource) (wajib).

## RDSDBCluster: Hapus Snapshot
<a name="neptune-iam-admin-actions-DeleteDBClusterSnapshot"></a>

`Hapus DBCluster Snapshot` menghapus snapshot klaster DB.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource) (wajib).

## RDS: Hapus DBInstance
<a name="neptune-iam-admin-actions-DeleteDBInstance"></a>

`Hapus DBInstance` menghapus instans DB yang ditentukan.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [db](iam-admin-resources.md#neptune-db-resource) (wajib).

## RDSDBParameter: Hapus Grup
<a name="neptune-iam-admin-actions-DeleteDBParameterGroup"></a>

`Hapus DBParameter Grup`menghapus DBParameter Grup tertentu.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [pg](iam-admin-resources.md#neptune-pg-resource) (wajib).

## RDSDBSubnet: Hapus Grup
<a name="neptune-iam-admin-actions-DeleteDBSubnetGroup"></a>

`Hapus DBSubnet Grup` menghapus grup subnet DB.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [subgrp](iam-admin-resources.md#neptune-subgrp-resource) (wajib).

## rds: DeleteEventSubscription
<a name="neptune-iam-admin-actions-DeleteEventSubscription"></a>

`DeleteEventSubscription` menghapus langganan pemberitahuan kejadian.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [es](iam-admin-resources.md#neptune-es-resource) (wajib).

## RDS: jelaskan DBCluster ParameterGroups
<a name="neptune-iam-admin-actions-DescribeDBClusterParameterGroups"></a>

`Jelaskan DBCluster ParameterGroups`mengembalikan daftar DBCluster ParameterGroup deskripsi.

*Tingkat akses:* `List`.

*Jenis sumber daya:* [cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource) (wajib).

## RDSDBCluster: Jelaskan Parameter
<a name="neptune-iam-admin-actions-DescribeDBClusterParameters"></a>

`Jelaskan DBCluster Parameter` mengembalikan daftar parameter detail untuk grup parameter kluster DB tertentu.

*Tingkat akses:* `List`.

*Jenis sumber daya:* [cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource) (wajib).

## RDS: jelaskan DBCluster SnapshotAttributes
<a name="neptune-iam-admin-actions-DescribeDBClusterSnapshotAttributes"></a>

`Jelaskan DBCluster SnapshotAttributes` mengembalikan daftar nama atribut dan nilao snapshot klaster DB untuk snapshot klaster DB manual.

*Tingkat akses:* `List`.

*Jenis sumber daya:* [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource) (wajib).

## RDSDBCluster: Jelaskan Snapshots
<a name="neptune-iam-admin-actions-DescribeDBClusterSnapshots"></a>

`Jelaskan DBCluster Snapshots` mengembalikan informasi tentang snapshot klaster DB.

*Tingkat akses:* `Read`.

## RDS: jelaskan DBClusters
<a name="neptune-iam-admin-actions-DescribeDBClusters"></a>

`Jelaskan DBClusters` mengembalikan informasi tentang klaster DB Neptune yang disediakan.

*Tingkat akses:* `List`.

*Jenis sumber daya:* [klaster](iam-admin-resources.md#neptune-cluster-resource) (wajib).

## RDSDBEngine: Jelaskan Versi
<a name="neptune-iam-admin-actions-DescribeDBEngineVersions"></a>

`Jelaskan DBEngine Versi` mengembalikan daftar mesin DB yang tersedia.

*Tingkat akses:* `List`.

*Jenis sumber daya:* [pg](iam-admin-resources.md#neptune-pg-resource) (wajib).

## RDS: jelaskan DBInstances
<a name="neptune-iam-admin-actions-DescribeDBInstances"></a>

`Jelaskan DBInstances` mengembalikan informasi tentang instans DB.

*Tingkat akses:* `List`.

*Jenis sumber daya:* [es](iam-admin-resources.md#neptune-es-resource) (wajib).

## RDSDBParameter: Jelaskan Grup
<a name="neptune-iam-admin-actions-DescribeDBParameterGroups"></a>

`Jelaskan DBParameter Grup`mengembalikan daftar deskripsi DBParameter Grup.

*Tingkat akses:* `List`.

*Jenis sumber daya:* [pg](iam-admin-resources.md#neptune-pg-resource) (wajib).

## RDS: jelaskan DBParameters
<a name="neptune-iam-admin-actions-DescribeDBParameters"></a>

`Jelaskan DBParameters` mengembalikan daftar parameter detail untuk grup parameter DB tertentu.

*Tingkat akses:* `List`.

*Jenis sumber daya:* [pg](iam-admin-resources.md#neptune-pg-resource) (wajib).

## RDSDBSubnet: Jelaskan Grup
<a name="neptune-iam-admin-actions-DescribeDBSubnetGroups"></a>

`Jelaskan DBSubnet Grup`mengembalikan daftar deskripsi DBSubnet Grup.

*Tingkat akses:* `List`.

*Jenis sumber daya:* [subgrp](iam-admin-resources.md#neptune-subgrp-resource) (wajib).

## rds: DescribeEventCategories
<a name="neptune-iam-admin-actions-DescribeEventCategories"></a>

`DescribeEventCategories` mengembalikan daftar kategori untuk semua jenis sumber peristiwa, atau, jika ditentukan, untuk jenis sumber yang tertentu.

*Tingkat akses:* `List`.

## rds: DescribeEventSubscriptions
<a name="neptune-iam-admin-actions-DescribeEventSubscriptions"></a>

`DescribeEventSubscriptions` mencantumkan semua deskripsi langganan untuk akun pelanggan.

*Tingkat akses:* `List`.

*Jenis sumber daya:* [es](iam-admin-resources.md#neptune-es-resource) (wajib).

## rds: DescribeEvents
<a name="neptune-iam-admin-actions-DescribeEvents"></a>

`DescribeEvents` mengembalikan peristiwa yang terkait dengan instans DB, grup keamanan DB, dan grup parameter DB selama 14 hari terakhir.

*Tingkat akses:* `List`.

*Jenis sumber daya:* [es](iam-admin-resources.md#neptune-es-resource) (wajib).

## rds: Pilihan DescribeOrderable DBInstance
<a name="neptune-iam-admin-actions-DescribeOrderableDBInstanceOptions"></a>

`DescribeOrderableDBInstancePilihan` mengembalikan daftar opsi instans DB yang dapat diurutkan untuk mesin yang ditentukan.

*Tingkat akses:* `List`.

## rds: DescribePendingMaintenanceActions
<a name="neptune-iam-admin-actions-DescribePendingMaintenanceActions"></a>

`DescribePendingMaintenanceActions` mengembalikan daftar sumber daya (misalnya, instans DB) yang memiliki setidaknya satu tindakan pemeliharaan tertunda.

*Tingkat akses:* `List`.

*Jenis sumber daya:* [db](iam-admin-resources.md#neptune-db-resource) (wajib).

## rds: DescribeValid DBInstance Modifikasi
<a name="neptune-iam-admin-actions-DescribeValidDBInstanceModifications"></a>

`DescribeValidDBInstanceModifikasi` mencantumkan modifikasi yang tersedia yang dapat Anda buat pada instans DB Anda.

*Tingkat akses:* `List`.

*Jenis sumber daya:* [db](iam-admin-resources.md#neptune-db-resource) (wajib).

## RDS: Failover DBCluster
<a name="neptune-iam-admin-actions-FailoverDBCluster"></a>

`Kegagalan DBCluster` memaksakan failover untuk klaster DB.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [klaster](iam-admin-resources.md#neptune-cluster-resource) (wajib).

## rds: ListTagsForResource
<a name="neptune-iam-admin-actions-ListTagsForResource"></a>

`ListTagsForResource` mencantumkan semua tanda pada sumber daya Neptune.

*Tingkat akses:* `Read`.

*Jenis sumber daya:*
+ [cuplikan cluster](iam-admin-resources.md#neptune-cluster-snapshot-resource)
+ [db](iam-admin-resources.md#neptune-db-resource)
+ [es](iam-admin-resources.md#neptune-es-resource)
+ [pg](iam-admin-resources.md#neptune-pg-resource)
+ [subgrp](iam-admin-resources.md#neptune-subgrp-resource)

## RDS: memodifikasi DBCluster
<a name="neptune-iam-admin-actions-ModifyDBCluster"></a>

`Memodifikasi DBCluster`

Memodifikasi pengaturan untuk klaster DB Neptune.

*Tingkat akses:* `Write`.

*Tindakan bergantung:* `iam:PassRole`.

*Jenis sumber daya:*
+ [cluster](iam-admin-resources.md#neptune-cluster-resource) (wajib).
+ [cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource) (wajib).

## RDS: memodifikasi DBCluster ParameterGroup
<a name="neptune-iam-admin-actions-ModifyDBClusterParameterGroup"></a>

`Memodifikasi DBCluster ParameterGroup` mengubah parameter grup parameter klaster DB.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource) (wajib).

## RDS: memodifikasi DBCluster SnapshotAttribute
<a name="neptune-iam-admin-actions-ModifyDBClusterSnapshotAttribute"></a>

`Memodifikasi DBCluster SnapshotAttribute` menambahkan atribut dan nilai-nilai ke, atau menghapus atribut dan nilai-nilai dari, snapshot klaster DB manual.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource) (wajib).

## RDS: memodifikasi DBInstance
<a name="neptune-iam-admin-actions-ModifyDBInstance"></a>

`Memodifikasi DBInstance` mengubah pengaturan untuk instans DB.

*Tingkat akses:* `Write`.

*Tindakan bergantung:* `iam:PassRole`.

*Jenis sumber daya:*
+ [db](iam-admin-resources.md#neptune-db-resource) (wajib).
+ [pg](iam-admin-resources.md#neptune-pg-resource) (wajib).

## RDSDBParameter: Modifikasi Grup
<a name="neptune-iam-admin-actions-ModifyDBParameterGroup"></a>

`Ubah DBParameter Grup` mengubah parameter dari grup parameter DB.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [pg](iam-admin-resources.md#neptune-pg-resource) (wajib).

## RDSDBSubnet: Modifikasi Grup
<a name="neptune-iam-admin-actions-ModifyDBSubnetGroup"></a>

`Ubah DBSubnet Grup` mengubah grup subnet DB yang ada.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [subgrp](iam-admin-resources.md#neptune-subgrp-resource) (wajib).

## rds: ModifyEventSubscription
<a name="neptune-iam-admin-actions-ModifyEventSubscription"></a>

`ModifyEventSubscription` memodifikasi langganan notifikasi peristiwa Neptune yang ada.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [es](iam-admin-resources.md#neptune-es-resource) (wajib).

## RDS: Reboot DBInstance
<a name="neptune-iam-admin-actions-RebootDBInstance"></a>

`Reboot DBInstance` memulai ulang layanan mesin basis data untuk instans.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [db](iam-admin-resources.md#neptune-db-resource) (wajib).

## rds: RemoveRoleFrom DBCluster
<a name="neptune-iam-admin-actions-RemoveRoleFromDBCluster"></a>

`RemoveRoleFromDBCluster`memisahkan peran AWS Identity and Access Management (IAM) and Access Management (IAM) dari kluster Amazon Neptune DB.

*Tingkat akses:* `Write`.

*Tindakan bergantung:* `iam:PassRole`.

*Jenis sumber daya:* [klaster](iam-admin-resources.md#neptune-cluster-resource) (wajib).

## rds: RemoveSourceIdentifierFromSubscription
<a name="neptune-iam-admin-actions-RemoveSourceIdentifierFromSubscription"></a>

`RemoveSourceIdentifierFromSubscription` menghapus pengidentifikasi sumber dari langganan notifikasi peristiwa Neptune yang ada.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [es](iam-admin-resources.md#neptune-es-resource) (wajib).

## rds: RemoveTagsFromResource
<a name="neptune-iam-admin-actions-RemoveTagsFromResource"></a>

`RemoveTagsFromResource` menghapus tanda metadata dari sumber daya Neptune.

*Tingkat akses:* `Tagging`.

*Jenis sumber daya:*
+ [cuplikan cluster](iam-admin-resources.md#neptune-cluster-snapshot-resource)
+ [db](iam-admin-resources.md#neptune-db-resource)
+ [es](iam-admin-resources.md#neptune-es-resource)
+ [pg](iam-admin-resources.md#neptune-pg-resource)
+ [subgrp](iam-admin-resources.md#neptune-subgrp-resource)

*Kunci Kondisi:*
+ [aws:RequestTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [aws: TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDS: Atur ulang DBCluster ParameterGroup
<a name="neptune-iam-admin-actions-ResetDBClusterParameterGroup"></a>

`Setel ulang DBCluster ParameterGroup` memodifikasi parameter dari grup parameter klaster DB ke nilai default.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource) (wajib).

## RDSDBParameter: Atur Ulang Grup
<a name="neptune-iam-admin-actions-ResetDBParameterGroup"></a>

`Setel Ulang DBParameter Grup`memodifikasi parameter grup parameter DB ke nilai engine/system default.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [pg](iam-admin-resources.md#neptune-pg-resource) (wajib).

## RDS: Kembalikan DBCluster FromSnapshot
<a name="neptune-iam-admin-actions-RestoreDBClusterFromSnapshot"></a>

`Kembalikan DBCluster FromSnapshot` membuat klaster DB baru dari snapshot klaster DB.

*Tingkat akses:* `Write`.

*Tindakan bergantung:* `iam:PassRole`.

*Jenis sumber daya:*
+ [cluster](iam-admin-resources.md#neptune-cluster-resource) (wajib).
+ [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource) (wajib).

*Kunci Kondisi:*
+ [aws:RequestTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [aws: TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDS: Kembalikan DBCluster ToPointInTime
<a name="neptune-iam-admin-actions-RestoreDBClusterToPointInTime"></a>

`Kembalikan DBCluster ToPointInTime` memulihkan klaster DB ke titik waktu yang arbitrer.

*Tingkat akses:* `Write`.

*Tindakan bergantung:* `iam:PassRole`.

*Jenis sumber daya:*
+ [cluster](iam-admin-resources.md#neptune-cluster-resource) (wajib).
+ [subgrp](iam-admin-resources.md#neptune-subgrp-resource) (wajib).

*Kunci Kondisi:*
+ [aws:RequestTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [aws: TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDS: Mulai DBCluster
<a name="neptune-iam-admin-actions-StartDBCluster"></a>

`Mulai DBCluster` memulai klaster DB yang ditentukan.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [klaster](iam-admin-resources.md#neptune-cluster-resource) (wajib).

## RDS: berhenti DBCluster
<a name="neptune-iam-admin-actions-StopDBCluster"></a>

`Berhenti DBCluster` menghentikan klaster DB yang ditentukan.

*Tingkat akses:* `Write`.

*Jenis sumber daya:* [klaster](iam-admin-resources.md#neptune-cluster-resource) (wajib).

# Jenis sumber daya IAM untuk mengelola Amazon Neptunus
<a name="iam-admin-resources"></a>

Neptunus mendukung jenis sumber daya dalam tabel berikut untuk digunakan dalam elemen pernyataan kebijakan `Resource` administrasi IAM. Untuk informasi selengkapnya tentang elemen `Resource`, lihat [Elemen Kebijakan IAM JSON: Sumber Daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html).

[Daftar tindakan administrasi Neptunus](neptune-iam-admin-actions.md) mengidentifikasi jenis sumber daya yang dapat ditentukan dengan setiap tindakan. Jenis sumber daya juga menentukan kunci kondisi mana yang dapat Anda sertakan dalam kebijakan, sebagaimana ditentukan dalam kolom terakhir tabel di bawah.

`ARN`Kolom dalam tabel di bawah ini menentukan format Amazon Resource Name (ARN) yang harus Anda gunakan untuk referensi sumber daya jenis ini. Bagian yang didahului oleh a ` $ ` harus diganti dengan nilai aktual untuk skenario Anda. Misalnya, jika Anda melihat `$user-name` di ARN, Anda harus mengganti string itu baik dengan nama pengguna IAM yang sebenarnya atau dengan variabel kebijakan yang berisi nama pengguna IAM. Untuk informasi lebih lanjut tentang ARNs, lihat [IAM ARNs](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns), dan[Bekerja dengan administrasi ARNs di Amazon Neptunus](tagging-arns.md).

Kolom ` Condition Keys ` menentukan kunci konteks kondisi yang dapat Anda sertakan dalam pernyataan kebijakan IAM hanya ketika kedua sumber daya ini dan tindakan pendukung yang kompatibel disertakan dalam pernyataan.


****  

| Jenis Sumber Daya | ARN | Kunci kondisi | 
| --- | --- | --- | 
|  `cluster` (klaster DB)  | arn:partition:rds:region:account-id:cluster:instance-name |  [aws:ResourceTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_ResourceTag) [rds: tag-klaster/*tag-key*](iam-admin-condition-keys.md#admin-rds_cluster-tag)  | 
|  `cluster-pg` (Grup parameter klaster DB)  | arn:partition:rds:region:account-id:cluster-pg:neptune-DBClusterParameterGroupName |  [aws:ResourceTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_ResourceTag)  | 
|  `cluster-snapshot` (snapshot klaster DB)  | arn:partition:rds:region:account-id:cluster-snapshot:neptune-DBClusterSnapshotName |  [aws:ResourceTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_ResourceTag) [rds:/cluster-snapshot-tag*tag-key*](iam-admin-condition-keys.md#admin-rds_cluster-snapshot-tag)  | 
|  `db` (instans DB)  | arn:partition:rds:region:account-id:db:neptune-DbInstanceName |  [aws:ResourceTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_ResourceTag) [rds: DatabaseClass](iam-admin-condition-keys.md#admin-rds_DatabaseClass) [rds: DatabaseEngine](iam-admin-condition-keys.md#admin-rds_DatabaseEngine) [rds:db-tag/ *tag-key*](iam-admin-condition-keys.md#admin-rds_db-tag)  | 
|  `es` (langganan peristiwa)  | arn:partition:rds:region:account-id:es:neptune-CustSubscriptionId  |  [aws:ResourceTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_ResourceTag) [rds:es-tag/ *tag-key*](iam-admin-condition-keys.md#admin-rds_es-tag)  | 
|  `pg` (Grup parameter DB)  | arn:partition:rds:region:account-id:pg:neptune-ParameterGroupName |  [aws:ResourceTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_ResourceTag) [rds: pg-tag/ *tag-key*](iam-admin-condition-keys.md#admin-rds_pg-tag)  | 
|  `subgrp` (grup subnet DB)  | arn:partition:rds:region:account-id:subgrp:neptune-DBSubnetGroupName\$1 |  [aws:ResourceTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_ResourceTag) [rds:subgrp-tag/ *tag-key*](iam-admin-condition-keys.md#admin-rds_subgrp-tag)  | 

# Kunci kondisi IAM untuk mengelola Amazon Neptunus
<a name="iam-admin-condition-keys"></a>

[Menggunakan kunci kondisi](security-iam-access-manage.md#iam-using-condition-keys), Anda dapat menentukan kondisi dalam pernyataan kebijakan IAM sehingga pernyataan hanya berlaku ketika kondisi benar. Kunci kondisi yang dapat Anda gunakan dalam pernyataan kebijakan administratif Neptunus termasuk dalam kategori berikut:
+ [Kunci kondisi global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) — Ini didefinisikan oleh AWS untuk penggunaan umum dengan AWS layanan. Sebagian besar dapat digunakan dalam pernyataan kebijakan administratif Neptunus.
+ [Kunci kondisi properti sumber daya administratif](#iam-rds-property-condition-keys) — Kunci ini, tercantum [di bawah ini](#iam-rds-property-condition-keys), didasarkan pada properti sumber daya administratif.
+ [Kunci kondisi akses berbasis tag — Kunci](#iam-rds-tag-based-condition-keys) ini, tercantum [di bawah](#iam-rds-tag-based-condition-keys) ini, didasarkan pada [AWS tag](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) yang dilampirkan ke sumber daya administratif.

## Kunci kondisi properti sumber daya administratif Neptunus
<a name="iam-rds-property-condition-keys"></a>


| Kunci syarat | Deskripsi | Tipe | 
| --- | --- | --- | 
| rds:DatabaseClass | Memfilter akses berdasarkan jenis kelas instans DB. | String | 
| rds:DatabaseEngine | Memfilter akses oleh mesin database. Untuk nilai yang mungkin, lihat parameter engine di Create DBInstance API | String | 
| rds:DatabaseName | Memfilter akses dengan nama database yang ditentukan pengguna pada instans DB | String | 
| rds:EndpointType | Memfilter akses berdasarkan jenis titik akhir. Salah satu dari: PEMBACA, PENULIS, CUSTOM | String | 
| rds:Vpc | Memfilter akses berdasarkan nilai yang menentukan apakah instans DB berjalan di Amazon Virtual Private Cloud (Amazon VPC). Untuk menunjukkan bahwa instans DB berjalan di VPC Amazon, tentukan. true | Boolean | 

## Kunci kondisi berbasis tag administratif
<a name="iam-rds-tag-based-condition-keys"></a>

Amazon Neptune mendukung ketentuan yang menentukan dalam kebijakan IAM menggunakan tanda khusus, untuk mengontrol akses ke Neptune melalui [Referensi API Manajemen](api.md).

Misalnya, jika Anda menambahkan tanda bernama `environment` ke instans DB Anda, dengan nilai-nilai seperti `beta`, `staging`, dan `production`, Anda kemudian dapat membuat kebijakan yang membatasi akses ke instans berdasarkan nilai tanda tersebut.

**penting**  
Jika Anda mengelola akses ke sumber daya Neptune Anda menggunakan penandaan, pastikan untuk mengamankan akses ke tanda tersebut. Anda dapat membatasi akses untuk tag dengan membuat kebijakan untuk tindakan `AddTagsToResource` dan `RemoveTagsFromResource`.  
Misalnya, Anda bisa menggunakan kebijakan berikut untuk menolak daftar tugas pengguna untuk menambah atau menghapus tag semua sumber daya. Anda kemudian dapat membuat kebijakan untuk memungkinkan pengguna tertentu untuk menambahkan atau menghapus tag.  

****  

```
{ "Version":"2012-10-17",		 	 	 
  "Statement":[
    { "Sid": "DenyTagUpdates",
      "Effect": "Deny",
      "Action": [
        "rds:AddTagsToResource",
        "rds:RemoveTagsFromResource"
      ],
      "Resource":"*"
    }
  ]
}
```

Kunci kondisi berbasis tag berikut hanya bekerja dengan sumber daya administratif dalam pernyataan kebijakan administratif.


**Kunci kondisi administratif berbasis tag**  

| Kunci syarat | Deskripsi | Tipe | 
| --- | --- | --- | 
|   [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag)  | Memfilter akses berdasarkan keberadaan pasangan nilai kunci tag dalam permintaan. | String | 
|   [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag)  | Memfilter akses berdasarkan pasangan nilai kunci tag yang dilampirkan ke sumber daya. | String | 
|   [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keyss](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keyss)  | Memfilter akses berdasarkan keberadaan kunci tag dalam permintaan. | String | 
| rds:cluster-pg-tag/\$1\$1TagKey\$1 | Memfilter akses dengan tag yang dilampirkan ke grup parameter cluster DB. | String | 
| rds:cluster-snapshot-tag/\$1\$1TagKey\$1 | Memfilter akses dengan tag yang dilampirkan ke snapshot cluster DB. | String | 
| rds:cluster-tag/\$1\$1TagKey\$1 | Memfilter akses dengan tag yang dilampirkan ke cluster DB. | String | 
| rds:db-tag/\$1\$1TagKey\$1 | Memfilter akses dengan tag yang dilampirkan ke instance DB. | String | 
| rds:es-tag/\$1\$1TagKey\$1 | Memfilter akses dengan tag yang dilampirkan ke langganan acara. | String | 
| rds:pg-tag/\$1\$1TagKey\$1 | Memfilter akses dengan tag yang dilampirkan ke grup parameter DB. | String | 
| rds:req-tag/\$1\$1TagKey\$1 | Memfilter akses dengan kumpulan kunci tag dan nilai yang dapat digunakan untuk menandai sumber daya. | String | 
| rds:secgrp-tag/\$1\$1TagKey\$1 | Memfilter akses dengan tag yang dilampirkan ke grup keamanan DB. | String | 
| rds:snapshot-tag/\$1\$1TagKey\$1 | Memfilter akses dengan tag yang dilampirkan ke snapshot DB. | String | 
| rds:subgrp-tag/\$1\$1TagKey\$1 | Memfilter akses dengan tag yang dilampirkan ke grup subnet DB | String | 

# Membuat pernyataan kebijakan administratif IAM untuk Amazon Neptunus
<a name="iam-admin-policy-examples"></a>

## Contoh kebijakan administrasi umum
<a name="iam-admin-policy-general-examples"></a>

Contoh berikut menunjukkan cara membuat kebijakan administratif Neptunus yang memberikan izin untuk mengambil berbagai tindakan manajemen pada cluster DB.

### Kebijakan yang mencegah pengguna IAM menghapus instans DB tertentu
<a name="iam-admin-policy-not-delete-instance"></a>

Berikut ini adalah contoh kebijakan yang mencegah pengguna IAM menghapus instance DB Neptunus tertentu:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyDeleteOneInstance",
      "Effect": "Deny",
      "Action": "rds:DeleteDBInstance",
      "Resource": "arn:aws:rds:us-west-2:123456789012:db:my-instance-name"
    }
  ]
}
```

------

### Kebijakan yang memberikan izin untuk membuat instans DB baru
<a name="iam-admin-policy-to-create-instances"></a>

Berikut ini adalah contoh kebijakan yang memungkinkan pengguna IAM untuk membuat instance DB di cluster DB Neptunus tertentu:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowCreateInstance",
      "Effect": "Allow",
      "Action": "rds:CreateDBInstance",
      "Resource": "arn:aws:rds:us-west-2:123456789012:cluster:my-cluster"
    }
  ]
}
```

------

### Kebijakan yang memberikan izin untuk membuat instance DB baru yang menggunakan grup parameter DB tertentu
<a name="iam-admin-policy-to-create-instances-with-pg"></a>

Berikut ini adalah contoh kebijakan yang memungkinkan pengguna IAM untuk membuat instance DB dalam cluster DB tertentu (di sini`us-west-2`) di cluster DB Neptunus tertentu hanya menggunakan grup parameter DB tertentu.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowCreateInstanceWithPG",
      "Effect": "Allow",
      "Action": "rds:CreateDBInstance",
      "Resource": [
        "arn:aws:rds:us-west-2:123456789012:cluster:my-cluster",
        "arn:aws:rds:us-west-2:123456789012:pg:my-instance-pg"
      ]
    }
  ]
}
```

------

### Kebijakan yang memberikan izin untuk mendeskripsikan sumber daya apa pun
<a name="iam-admin-policy-to-describe"></a>

Berikut ini adalah contoh kebijakan yang memungkinkan pengguna IAM untuk menggambarkan sumber daya Neptunus apa pun.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowDescribe",
            "Effect": "Allow",
            "Action": "rds:Describe*",
            "Resource": "*"
        }
    ]
}
```

------

## Contoh kebijakan administratif berbasis tag
<a name="iam-admin-policy-tagging-examples"></a>

Contoh berikut menunjukkan cara membuat kebijakan administratif Neptunus yang memberi tag untuk memfilter izin untuk berbagai tindakan manajemen pada cluster DB.

### Contoh 1: Berikan izin untuk tindakan atas sumber daya menggunakan tanda kustom yang dapat mengambil beberapa nilai
<a name="security-iam-tag-examples-1"></a>

Kebijakan di bawah ini memungkinkan penggunaan `ModifyDBInstance`, `CreateDBInstance` atau API `DeleteDBInstance` pada setiap instans DB yang memiliki tanda `env` diatur ke salah satu dari `dev` atau `test`:

------
#### [ JSON ]

****  

```
{ "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowDevTestAccess",
      "Effect": "Allow",
      "Action": [
        "rds:ModifyDBInstance",
        "rds:CreateDBInstance",
        "rds:DeleteDBInstance"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "rds:db-tag/env": [
              "dev",
              "test"
          ],
          "rds:DatabaseEngine": "neptune"
        }
      }
    }
  ]
}
```

------

### Contoh 2: Batasan set kunci dan nilai tag yang dapat digunakan untuk menandai suatu sumber daya
<a name="security-iam-tag-examples-2"></a>

Kebijakan ini menggunakan kunci `Condition` untuk mengizinkan tanda yang memiliki kunci `env` dan nilai `test`, `qa`, atau `dev` yang akan ditambahkan ke sumber daya:

------
#### [ JSON ]

****  

```
{ "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowTagAccessForDevResources",
      "Effect": "Allow",
      "Action": [
        "rds:AddTagsToResource",
        "rds:RemoveTagsFromResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "rds:req-tag/env": [
            "test",
            "qa",
            "dev"
          ],
          "rds:DatabaseEngine": "neptune"
        }
      }
    }
  ]
}
```

------

### Contoh 3: Izinkan akses penuh ke sumber daya Neptunus berdasarkan `aws:ResourceTag`
<a name="security-iam-tag-examples-3"></a>

Kebijakan berikut ini mirip dengan contoh pertama di atas, tetapi menggunakan `aws:ResourceTag` sebagai gantinya:

------
#### [ JSON ]

****  

```
{ "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowFullAccessToDev",
      "Effect": "Allow",
      "Action": [
        "rds:*"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/env": "dev",
          "rds:DatabaseEngine": "neptune"
        }
      }
    }
  ]
}
```

------

# 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.

# Tindakan IAM untuk akses data di Amazon Neptunus
<a name="iam-dp-actions"></a>

Perhatikan bahwa tindakan akses data Neptunus memiliki awalan, sedangkan tindakan administratif di Neptunus memiliki `neptune-db:` awalan. `rds:`

Nama Sumber Daya Amazon (ARN) untuk sumber daya data di IAM tidak sama dengan ARN yang ditetapkan ke cluster saat pembuatan. Anda harus membangun ARN seperti yang ditunjukkan [dalam Menentukan](iam-data-resources.md) sumber daya data. Sumber daya data tersebut ARNs dapat menggunakan wildcard untuk menyertakan beberapa sumber daya.

Pernyataan kebijakan akses data juga dapat menyertakan kunci QueryLanguage kondisi [neptune-db:](iam-data-condition-keys.md#iam-neptune-condition-keys) untuk membatasi akses menurut bahasa kueri.

[Dimulai dengan[Rilis: 1.2.0.0 (2022-07-21)](engine-releases-1.2.0.0.md), Neptunus mendukung pembatasan izin untuk satu atau lebih tindakan Neptunus tertentu.](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonneptune.html) Ini memberikan kontrol akses yang lebih terperinci daripada yang mungkin sebelumnya.

**penting**  
Perubahan kebijakan IAM memakan waktu hingga 10 menit untuk diterapkan ke sumber daya Neptune yang ditentukan.
Kebijakan IAM yang diterapkan ke klaster DB Neptune berlaku untuk semua contoh dalam klaster itu.

## *Tindakan akses data berbasis kueri*
<a name="iam-dp-actions-queries"></a>

**catatan**  
Tidak selalu jelas izin apa yang diperlukan untuk menjalankan kueri tertentu, karena kueri berpotensi mengambil lebih dari satu tindakan tergantung pada data yang mereka proses. Untuk informasi selengkapnya, lihat [Menggunakan tindakan kueri](iam-data-access-policies.md#iam-data-query-actions).

## `neptune-db:ReadDataViaQuery`
<a name="readdataviaquery"></a>

`ReadDataViaQuery`memungkinkan pengguna untuk membaca data dari database Neptunus dengan mengirimkan kueri.

*Grup tindakan:* baca-saja, baca-tulis.

*Kunci konteks tindakan:*`neptune-db:QueryLanguage`.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:WriteDataViaQuery`
<a name="writedataviaquery"></a>

`WriteDataViaQuery`memungkinkan pengguna untuk menulis data ke database Neptunus dengan mengirimkan kueri.

*Grup aksi:* baca-tulis.

*Kunci konteks tindakan:*`neptune-db:QueryLanguage`.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:DeleteDataViaQuery`
<a name="deletedataviaquery"></a>

`DeleteDataViaQuery`memungkinkan pengguna untuk menghapus data dari database Neptunus dengan mengirimkan kueri.

*Grup aksi:* baca-tulis.

*Kunci konteks tindakan:*`neptune-db:QueryLanguage`.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:GetQueryStatus`
<a name="getquerystatus"></a>

`GetQueryStatus`memungkinkan pengguna untuk memeriksa status semua kueri aktif.

*Grup tindakan:* baca-saja, baca-tulis.

*Kunci konteks tindakan:*`neptune-db:QueryLanguage`.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:GetStreamRecords`
<a name="getstreamrecords"></a>

`GetStreamRecords`memungkinkan pengguna untuk mengambil catatan aliran dari Neptunus.

*Grup aksi:* baca-tulis.

*Kunci konteks tindakan:*`neptune-db:QueryLanguage`.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:CancelQuery`
<a name="cancelquery"></a>

`CancelQuery`memungkinkan pengguna untuk membatalkan kueri.

*Grup aksi:* baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## *Tindakan akses data umum*
<a name="iam-dp-actions-general"></a>

## `neptune-db:GetEngineStatus`
<a name="getenginestatus"></a>

`GetEngineStatus`memungkinkan pengguna untuk memeriksa status mesin Neptunus.

*Grup tindakan:* baca-saja, baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:GetStatisticsStatus`
<a name="getstatisticsstatus"></a>

`GetStatisticsStatus`memungkinkan pengguna untuk memeriksa status statistik yang dikumpulkan untuk database.

*Grup tindakan:* baca-saja, baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:GetGraphSummary`
<a name="getgraphsummary"></a>

`GetGraphSummary`API ringkasan grafik memungkinkan Anda untuk mengambil ringkasan hanya-baca dari grafik Anda.

*Grup tindakan:* baca-saja, baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:ManageStatistics`
<a name="managestatistics"></a>

`ManageStatistics`memungkinkan pengguna untuk mengelola pengumpulan statistik untuk database.

*Grup aksi:* baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:DeleteStatistics`
<a name="deletestatistics"></a>

`DeleteStatistics`memungkinkan pengguna untuk menghapus semua statistik dalam database.

*Grup aksi:* baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:ResetDatabase`
<a name="resetdatabase"></a>

`ResetDatabase`memungkinkan pengguna untuk mendapatkan token yang diperlukan untuk reset dan mengatur ulang database Neptunus.

*Grup aksi:* baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## *Tindakan akses data pemuat massal*
<a name="iam-dp-actions-loader"></a>

## `neptune-db:StartLoaderJob`
<a name="startloaderjob"></a>

`StartLoaderJob`memungkinkan pengguna untuk memulai pekerjaan bulk-loader.

*Grup aksi:* baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:GetLoaderJobStatus`
<a name="getloaderjobstatus"></a>

`GetLoaderJobStatus`memungkinkan pengguna untuk memeriksa status pekerjaan bulk-loader.

*Grup tindakan:* baca-saja, baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:ListLoaderJobs`
<a name="listloaderjobs"></a>

`ListLoaderJobs`memungkinkan pengguna untuk membuat daftar semua pekerjaan bulk-loader.

*Grup tindakan:* hanya daftar, hanya-baca, baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:CancelLoaderJob`
<a name="cancelloaderjob"></a>

`CancelLoaderJob`memungkinkan pengguna untuk membatalkan pekerjaan loader.

*Grup aksi:* baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## *Tindakan akses data pembelajaran mesin*
<a name="iam-dp-actions-ml"></a>

## `neptune-db:StartMLDataProcessingJob`
<a name="startmldataprocessingjob"></a>

`StartMLDataProcessingJob`memungkinkan pengguna untuk memulai pekerjaan pemrosesan data Neptunus Neptunus.

*Grup aksi:* baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:StartMLModelTrainingJob`
<a name="startmlmodeltrainingjob"></a>

`StartMLModelTrainingJob`memungkinkan pengguna untuk memulai pekerjaan pelatihan model ML.

*Grup aksi:* baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:StartMLModelTransformJob`
<a name="startmlmodeltransformjob"></a>

`StartMLModelTransformJob`memungkinkan pengguna untuk memulai pekerjaan transformasi model ML.

*Grup aksi:* baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:CreateMLEndpoint`
<a name="createmlendpoint"></a>

`CreateMLEndpoint`memungkinkan pengguna untuk membuat titik akhir Neptunus ML.

*Grup aksi:* baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:GetMLDataProcessingJobStatus`
<a name="getmldataprocessingjobstatus"></a>

`GetMLDataProcessingJobStatus`memungkinkan pengguna untuk memeriksa status pekerjaan pemrosesan data Neptunus ML.

*Grup tindakan:* baca-saja, baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:GetMLModelTrainingJobStatus`
<a name="getmlmodeltrainingjobstatus"></a>

`GetMLModelTrainingJobStatus`memungkinkan pengguna untuk memeriksa status pekerjaan pelatihan model Neptunus ML.

*Grup tindakan:* baca-saja, baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:GetMLModelTransformJobStatus`
<a name="getmlmodeltransformjobstatus"></a>

`GetMLModelTransformJobStatus`memungkinkan pengguna untuk memeriksa status pekerjaan transformasi model Neptunus ML.

*Grup tindakan:* baca-saja, baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:GetMLEndpointStatus`
<a name="getmlendpointstatus"></a>

`GetMLEndpointStatus`memungkinkan pengguna untuk memeriksa status titik akhir Neptunus ML.

*Grup tindakan:* baca-saja, baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:ListMLDataProcessingJobs`
<a name="listmldataprocessingjobs"></a>

`ListMLDataProcessingJobs`memungkinkan pengguna untuk membuat daftar semua pekerjaan pemrosesan data Neptunus Neptunus.

*Grup tindakan:* hanya daftar, hanya-baca, baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:ListMLModelTrainingJobs`
<a name="listmlmodeltrainingjobs"></a>

`ListMLModelTrainingJobs`memungkinkan pengguna untuk membuat daftar semua pekerjaan pelatihan model Neptunus ML.

*Grup tindakan:* hanya daftar, hanya-baca, baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:ListMLModelTransformJobs`
<a name="listmlmodeltransformjobs"></a>

`ListMLModelTransformJobs`memungkinkan pengguna untuk membuat daftar semua pekerjaan transformasi model ML.

*Grup tindakan:* hanya daftar, hanya-baca, baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:ListMLEndpoints`
<a name="listmlendpoints"></a>

`ListMLEndpoints`memungkinkan pengguna untuk membuat daftar semua titik akhir Neptunus ML.

*Grup tindakan:* hanya daftar, hanya-baca, baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:CancelMLDataProcessingJob`
<a name="cancelmldataprocessingjob"></a>

`CancelMLDataProcessingJob`memungkinkan pengguna untuk membatalkan pekerjaan pemrosesan data Neptunus Neptunus.

*Grup aksi:* baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:CancelMLModelTrainingJob`
<a name="cancelmlmodeltrainingjob"></a>

`CancelMLModelTrainingJob`memungkinkan pengguna untuk membatalkan pekerjaan pelatihan model Neptunus ML.

*Grup aksi:* baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:CancelMLModelTransformJob`
<a name="cancelmlmodeltransformjob"></a>

`CancelMLModelTransformJob`memungkinkan pengguna untuk membatalkan pekerjaan transformasi model Neptunus ML.

*Grup aksi:* baca-tulis.

*Sumber daya yang dibutuhkan:* database.

## `neptune-db:DeleteMLEndpoint`
<a name="deletemlendpoint"></a>

`DeleteMLEndpoint`memungkinkan pengguna untuk menghapus titik akhir Neptunus ML.

*Grup aksi:* baca-tulis.

*Sumber daya yang dibutuhkan:* database.

# Jenis sumber daya IAM untuk mengakses data di Amazon Neptunus
<a name="iam-data-resources"></a>

Sumber daya data, seperti tindakan data, memiliki `neptune-db:` awalan.

Dalam kebijakan akses data Neptunus, Anda menentukan cluster DB yang Anda berikan akses ke dalam ARN dengan format berikut:

```
arn:aws:neptune-db:region:account-id:cluster-resource-id/*
```

Sumber daya seperti ARN berisi bagian-bagian berikut:
+ `region`adalah AWS Wilayah untuk cluster DB Amazon Neptunus.
+ `account-id` adalah nomor rekening AWS untuk klaster DB.
+ `cluster-resource-id` adalah id sumber daya untuk klaster DB.
**penting**  
`cluster-resource-id` berbeda dari pengidentifikasi klaster. Untuk menemukan ID sumber daya cluster di Konsol Manajemen AWS Neptunus, lihat di bagian **Konfigurasi** untuk cluster DB yang dimaksud.

# Kunci kondisi IAM untuk mengakses data di Amazon Neptunus
<a name="iam-data-condition-keys"></a>

[Menggunakan kunci kondisi](security-iam-access-manage.md#iam-using-condition-keys), Anda dapat menentukan kondisi dalam pernyataan kebijakan IAM sehingga pernyataan hanya berlaku ketika kondisi benar.

Kunci kondisi yang dapat Anda gunakan dalam pernyataan kebijakan akses data Neptunus termasuk dalam kategori berikut:
+ [Kunci kondisi global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) [- Subset kunci kondisi AWS global yang didukung Neptunus dalam pernyataan kebijakan akses data tercantum di bawah ini.](#iam-data-global-condition-keys)
+ [Kunci kondisi khusus layanan — Ini adalah kunci](#iam-neptune-condition-keys) yang ditentukan oleh Neptunus khusus untuk digunakan dalam pernyataan kebijakan akses data. Saat ini hanya ada satu, [neptune-db: QueryLanguage](#neptune-db-query-language), yang memberikan akses hanya jika bahasa kueri tertentu sedang digunakan.

## AWS kunci konteks kondisi global yang didukung oleh Neptunus dalam pernyataan kebijakan akses data
<a name="iam-data-global-condition-keys"></a>

Tabel berikut mencantumkan subset [kunci konteks kondisi AWS global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) yang didukung Amazon Neptunus untuk digunakan dalam pernyataan kebijakan akses data:


**Kunci kondisi global yang dapat Anda gunakan dalam pernyataan kebijakan akses data**  

| Kunci kondisi | Deskripsi | Tipe | 
| --- | --- | --- | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-currenttime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-currenttime) | Memfilter akses berdasarkan tanggal dan waktu permintaan saat ini. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-epochtime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-epochtime) | Memfilter akses berdasarkan tanggal dan waktu permintaan dinyatakan sebagai nilai epoch UNIX. | Numeric | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalaccount) | Memfilter akses oleh akun tempat kepala sekolah yang meminta berada. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalarn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalarn) | Memfilter akses oleh ARN dari kepala sekolah yang membuat permintaan. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalisawsservice](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalisawsservice) | Memungkinkan akses hanya jika panggilan dilakukan langsung oleh kepala AWS layanan. | Boolean | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid) | Memfilter akses oleh pengenal AWS organisasi dalam Organizations yang menjadi milik prinsipal yang meminta. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgpaths](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgpaths) | Memfilter akses oleh jalur AWS Organizations untuk kepala sekolah yang membuat permintaan. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag) | Memfilter akses dengan tag yang dilampirkan pada prinsipal yang membuat permintaan. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltype](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltype) | Memfilter akses berdasarkan jenis prinsipal yang membuat permintaan. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requestedregion](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requestedregion) | Memfilter akses oleh AWS Wilayah yang dipanggil dalam permintaan. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport) | Mengizinkan akses hanya jika permintaan dikirim menggunakan SSL. | Boolean | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip) | Memfilter akses dengan alamat IP pemohon. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tokenissuetime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tokenissuetime) | Memfilter akses berdasarkan tanggal dan waktu kredensyal keamanan sementara dikeluarkan. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-useragent](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-useragent) | Filter mengakses oleh aplikasi klien pemohon. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-userid](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-userid) | Memfilter akses oleh pengenal utama pemohon. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-viaawsservice](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-viaawsservice) | Memungkinkan akses hanya jika AWS layanan membuat permintaan atas nama Anda. | Boolean | 

## Kunci kondisi khusus layanan Neptunus
<a name="iam-neptune-condition-keys"></a>

Neptunus mendukung kunci kondisi khusus layanan berikut untuk kebijakan IAM:


**Kunci kondisi khusus layanan Neptunus**  

| Kunci kondisi | Deskripsi | Tipe | 
| --- | --- | --- | 
| neptune-db:QueryLanguage |  Memfilter akses data dengan bahasa kueri yang digunakan. Nilai yang valid adalah:`Gremlin`,`OpenCypher`, dan`Sparql`. Tindakan yang didukung adalah`ReadDataViaQuery`,`WriteDataViaQuery`,`DeleteDataViaQuery`,`GetQueryStatus`, dan`CancelQuery`.  | String | 

# Membuat kebijakan akses data IAM di Amazon Neptunus
<a name="iam-data-access-examples"></a>

[Contoh berikut menunjukkan cara membuat kebijakan IAM khusus yang menggunakan kontrol akses berbutir halus bidang data dan APIs tindakan, yang diperkenalkan dalam rilis mesin Neptunus versi 1.2.0.0.](engine-releases-1.2.0.0.md) 

## Contoh kebijakan yang memungkinkan akses tidak terbatas ke data dalam cluster DB Neptunus
<a name="iam-auth-data-policy-example-general"></a>

Contoh kebijakan berikut memungkinkan pengguna IAM untuk terhubung ke cluster DB Neptunus menggunakan otentikasi database IAM, dan menggunakan `*` "" karakter untuk mencocokkan semua tindakan yang tersedia.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "neptune-db:*",
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

Contoh sebelumnya mencakup ARN sumber daya dalam format yang khusus untuk autentikasi IAM Neptune. Untuk membangun ARN, [lihat Menentukan](iam-data-resources.md) sumber daya data. Perhatikan bahwa ARN yang digunakan untuk otorisasi `Resource` IAM tidak sama dengan ARN yang ditetapkan ke cluster pada pembuatan.

## Contoh kebijakan yang memungkinkan akses hanya-baca ke cluster DB Neptunus
<a name="iam-auth-data-policy-example-read-only"></a>

Kebijakan berikut memberikan izin untuk akses hanya-baca penuh ke data dalam klaster DB Neptunus: 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect": "Allow",
      "Action": [
        "neptune-db:Read*",
        "neptune-db:Get*",
        "neptune-db:List*"
      ],
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

## Contoh kebijakan yang menolak semua akses ke cluster DB Neptunus
<a name="iam-auth-data-policy-example-deny"></a>

Tindakan IAM default adalah menolak akses ke klaster DB kecuali *Efek* `Allow` diberikan. Namun, kebijakan berikut menolak semua akses ke klaster DB untuk AWS akun dan Wilayah tertentu, yang kemudian diutamakan daripada efek apa pun. `Allow`

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "neptune-db:*",
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

## Contoh kebijakan yang memberikan akses baca melalui kueri
<a name="iam-auth-data-policy-example-read-query"></a>

Kebijakan berikut hanya memberikan izin untuk membaca dari klaster DB Neptunus menggunakan kueri: 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "neptune-db:ReadDataViaQuery",
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

## Contoh kebijakan yang hanya mengizinkan kueri Gremlin
<a name="iam-auth-data-policy-example-gremlin-only"></a>

Kebijakan berikut menggunakan kunci `neptune-db:QueryLanguage` kondisi untuk memberikan izin untuk menanyakan Neptunus hanya menggunakan bahasa kueri Gremlin: 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "neptune-db:ReadDataViaQuery",
        "neptune-db:WriteDataViaQuery",
        "neptune-db:DeleteDataViaQuery"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "neptune-db:QueryLanguage": "Gremlin"
        }
      }
    }
  ]
}
```

------

## Contoh kebijakan yang memungkinkan semua akses kecuali ke manajemen model Neptunus Neptunus
<a name="iam-auth-data-policy-example-all-but-ml"></a>

Kebijakan berikut memberikan akses penuh ke operasi grafik Neptunus kecuali untuk fitur manajemen model Neptunus ML:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect": "Allow",
      "Action": [
        "neptune-db:CancelLoaderJob",
        "neptune-db:CancelQuery",
        "neptune-db:DeleteDataViaQuery",
        "neptune-db:DeleteStatistics",
        "neptune-db:GetEngineStatus",
        "neptune-db:GetLoaderJobStatus",
        "neptune-db:GetQueryStatus",
        "neptune-db:GetStatisticsStatus",
        "neptune-db:GetStreamRecords",
        "neptune-db:ListLoaderJobs",
        "neptune-db:ManageStatistics",
        "neptune-db:ReadDataViaQuery",
        "neptune-db:ResetDatabase",
        "neptune-db:StartLoaderJob",
        "neptune-db:WriteDataViaQuery"
      ],
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

## Contoh kebijakan yang memungkinkan akses ke manajemen model Neptunus ML
<a name="iam-auth-data-policy-example-ml"></a>

Kebijakan ini memberikan akses ke fitur manajemen model Neptunus ML:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect": "Allow",
      "Action": [
        "neptune-db:CancelMLDataProcessingJob",
        "neptune-db:CancelMLModelTrainingJob",
        "neptune-db:CancelMLModelTransformJob",
        "neptune-db:CreateMLEndpoint",
        "neptune-db:DeleteMLEndpoint",
        "neptune-db:GetMLDataProcessingJobStatus",
        "neptune-db:GetMLEndpointStatus",
        "neptune-db:GetMLModelTrainingJobStatus",
        "neptune-db:GetMLModelTransformJobStatus",
        "neptune-db:ListMLDataProcessingJobs",
        "neptune-db:ListMLEndpoints",
        "neptune-db:ListMLModelTrainingJobs",
        "neptune-db:ListMLModelTransformJobs",
        "neptune-db:StartMLDataProcessingJob",
        "neptune-db:StartMLModelTrainingJob",
        "neptune-db:StartMLModelTransformJob"
      ],
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

## Contoh kebijakan yang memberikan akses kueri penuh
<a name="iam-auth-data-policy-example-full-query"></a>

Kebijakan berikut memberikan akses penuh ke operasi kueri grafik Neptunus, tetapi tidak ke fitur seperti reset cepat, aliran, pemuat massal, manajemen model Neptunus, dan sebagainya:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect": "Allow",
      "Action": [
        "neptune-db:ReadDataViaQuery",
        "neptune-db:WriteDataViaQuery",
        "neptune-db:DeleteDataViaQuery",
        "neptune-db:GetEngineStatus",
        "neptune-db:GetQueryStatus",
        "neptune-db:CancelQuery"
      ],
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

## Contoh kebijakan yang memberikan akses penuh untuk kueri Gremlin saja
<a name="iam-auth-data-policy-example-full-gremlin-access"></a>

Kebijakan berikut memberikan akses penuh ke operasi kueri grafik Neptunus menggunakan bahasa kueri Gremlin, tetapi tidak ke kueri dalam bahasa lain, dan bukan ke fitur seperti reset cepat, aliran, pemuat massal, manajemen model Neptunus, dan sebagainya:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect": "Allow",
      "Action": [
        "neptune-db:ReadDataViaQuery",
        "neptune-db:WriteDataViaQuery",
        "neptune-db:DeleteDataViaQuery",
        "neptune-db:GetEngineStatus",
        "neptune-db:GetQueryStatus",
        "neptune-db:CancelQuery"
      ],
      "Resource": [
        "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
      ],
      "Condition": {
        "StringEquals": {
           "neptune-db:QueryLanguage":"Gremlin"
        }
      }
    }
  ]
}
```

------

## Contoh kebijakan yang memberikan akses penuh kecuali untuk reset cepat
<a name="iam-auth-data-policy-example-all-but-fast-reset"></a>

Kebijakan berikut memberikan akses penuh ke klaster DB Neptunus kecuali untuk menggunakan reset cepat:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "neptune-db:*",
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    },
    {
      "Effect": "Deny",
      "Action": "neptune-db:ResetDatabase",
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

# Menggunakan peran terkait layanan untuk Amazon Neptunus
<a name="security-iam-service-linked-roles"></a>

[Amazon Neptunus AWS Identity and Access Management menggunakan peran terkait layanan (IAM).](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) Peran tertaut layanan adalah tipe IAM role unik yang tertaut langsung ke Neptune. Peran terkait layanan telah ditentukan sebelumnya oleh Neptunus dan mencakup semua izin yang diperlukan layanan untuk memanggil layanan lain atas nama Anda. AWS 

**penting**  
Untuk fitur pengelolaan tertentu, Amazon Neptune menggunakan teknologi operasional yang dibagi dengan Amazon RDS. Fitur ini mencakup *peran yang terhubung dengan layanan* dan izin API manajemen.

Peran terkait layanan memudahkan penggunaan Neptune karena Anda tidak perlu menambahkan izin yang diperlukan secara manual. Neptune menentukan izin peran terkait layanan, kecuali jika ditentukan berbeda, hanya Neptune yang dapat mengasumsikan perannya. Izin yang ditentukan mencakup kebijakan kepercayaan dan kebijakan izin, serta bahwa kebijakan izin tidak dapat dilampirkan ke entitas IAM lainnya.

Anda dapat menghapus peran hanya setelah terlebih dahulu menghapus sumber daya terkaitnya. Ini melindungi sumber daya Neptune karena Anda tidak dapat secara tidak sengaja menghapus izin untuk mengakses sumber daya.

Untuk informasi tentang layanan lain yang mendukung peran terkait layanan, lihat [Layanan AWS yang Berfungsi dengan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) dan cari layanan yang memiliki **Ya** di kolom **Peran Terkait Layanan**. Pilih **Ya** dengan sebuah tautan untuk melihat dokumentasi peran terkait layanan untuk layanan tersebut.

## Izin Peran yang Terhubung Dengan Layanan untuk Neptune
<a name="service-linked-role-permissions"></a>

Neptunus menggunakan peran terkait layanan `AWSServiceRoleForRDS` untuk memungkinkan Neptunus dan Amazon AWS RDS memanggil layanan atas nama instans database Anda. Peran terkait layanan `AWSServiceRoleForRDS` memercayai layanan `rds.amazonaws.com` untuk menjalankan peran.

Kebijakan izin peran memungkinkan Neptune untuk menyelesaikan tindakan berikut pada sumber daya yang ditentukan:
+ Tindakan pada `ec2`:
  + `AssignPrivateIpAddresses`
  + `AuthorizeSecurityGroupIngress`
  + `CreateNetworkInterface`
  + `CreateSecurityGroup`
  + `DeleteNetworkInterface`
  + `DeleteSecurityGroup`
  + `DescribeAvailabilityZones`
  + `DescribeInternetGateways`
  + `DescribeSecurityGroups`
  + `DescribeSubnets`
  + `DescribeVpcAttribute`
  + `DescribeVpcs`
  + `ModifyNetworkInterfaceAttribute`
  + `RevokeSecurityGroupIngress`
  + `UnassignPrivateIpAddresses`
+ Tindakan pada `sns`:
  + `ListTopic`
  + `Publish`
+ Tindakan pada `cloudwatch`:
  + `PutMetricData`
  + `GetMetricData`
  + `CreateLogStream`
  + `PullLogEvents`
  + `DescribeLogStreams`
  + `CreateLogGroup`

**catatan**  
Anda harus mengonfigurasi izin agar entitas IAM (seperti pengguna, grup, atau peran) dapat membuat, mengedit, atau menghapus peran terkait layanan. Anda mungkin menemukan pesan kesalahan berikut ini:  
Tidak dapat membuat sumber daya. Verifikasi bahwa Anda memiliki izin untuk membuat peran terkait layanan. Jika tidak, tunggu dan coba lagi nanti.  
Jika Anda melihat pesan ini, pastikan bahwa Anda mengaktifkan izin berikut:   

```
{
    "Action": "iam:CreateServiceLinkedRole",
    "Effect": "Allow",
    "Resource": "arn:aws:iam::*:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS",
    "Condition": {
        "StringLike": {
            "iam:AWSServiceName":"rds.amazonaws.com"
        }
    }
}
```
 Untuk informasi selengkapnya, silakan lihat [Izin Peran Tertaut Layanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions) di *Panduan Pengguna IAM*.

## Membuat Peran Terkait Layanan untuk Neptune
<a name="create-service-linked-role"></a>

Anda tidak perlu membuat peran terkait layanan secara manual. Saat Anda membuat instans atau klaster, Neptune menciptakan peran terkait layanan untuk Anda.

**penting**  
Untuk informasi lebih lanjut, lihat [Peran baru yang muncul di akun IAM saya](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared) di *Panduan Pengguna IAM*.

Jika Anda menghapus peran tertaut layanan ini dan ingin membuatnya lagi, Anda dapat mengulangi proses yang sama untuk membuat kembali peran tersebut di akun Anda. Saat Anda membuat instans atau klaster Neptune menciptakan peran terkait layanan untuk Anda.

## Menyunting Peran Terkait Layanan untuk Neptune
<a name="edit-service-linked-role"></a>

Neptune tidak mengizinkan Anda untuk mengedit peran terkait layanan `AWSServiceRoleForRDS`. Setelah membuat peran terkait layanan, Anda tidak dapat mengubah nama peran karena berbagai entitas mungkin merujuk peran tersebut. Namun, Anda dapat mengedit penjelasan peran menggunakan IAM. Untuk informasi selengkapnya, lihat [Mengedit Peran Tertaut Layanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role) dalam *Panduan Pengguna IAM*.

## Menghapus Peran Terkait Layanan untuk Neptune
<a name="delete-service-linked-role"></a>

Jika Anda tidak lagi perlu menggunakan fitur atau layanan yang memerlukan peran tertaut layanan, sebaiknya hapus peran tersebut. Dengan begitu, Anda tidak perlu lagi memantau atau memelihara entitas yang tidak digunakan. Namun, Anda harus menghapus semua instans dan kluster Anda sebelum Anda dapat menghapus peran terkait layanan.

### Membersihkan Peran Terkait Layanan Sebelum Menghapus
<a name="delete-service-linked-role-cleanup"></a>

Sebelum dapat menggunakan IAM untuk menghapus peran tertaut layanan, Anda harus mengonfirmasi terlebih dahulu bahwa peran tersebut tidak memiliki sesi aktif dan menghapus sumber daya yang digunakan oleh peran tersebut.

**Untuk memeriksa apakah peran terkait layanan memiliki sesi aktif di konsol IAM**

1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Di panel navigasi konsol IAM, pilih **Peran**. Lalu pilih nama (bukan kotak centang) dari peran `AWSServiceRoleForRDS`.

1. Pada halaman **Ringkasan** untuk peran yang dipilih, pilih tab **Penasihat Akses**.

1. Di tab **Penasihat Akses**, ‍tinjau aktivitas terbaru untuk peran terkait layanan tersebut.
**catatan**  
Jika Anda tidak yakin apakah Neptune menggunakan peran `AWSServiceRoleForRDS` tersebut, coba hapus peran tersebut. Jika layanan ini menggunakan peran tersebut, peran tidak dapat dihapus dan Anda dapat melihat Wilayah tempat peran tersebut digunakan. Jika peran tersebut sedang digunakan, Anda harus menunggu hingga sesi ini berakhir sebelum dapat menghapus peran tersebut. Anda tidak dapat mencabut sesi untuk peran terkait layanan. 

Jika Anda ingin menghapus peran `AWSServiceRoleForRDS` Anda harus terlebih dahulu menghapus *semua* instans dan kluster Anda.

#### Menghapus Semua Instans Anda
<a name="delete-service-linked-role-instances"></a>

Gunakan salah satu dari prosedur ini untuk menghapus setiap instans Anda.

**Untuk menghapus sebuah instans (konsol)**

1. Buka konsol Amazon RDS di [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Di panel navigasi, pilih **Instans**.

1. Di daftar **Instans**, pilih instans yang ingin Anda hapus.

1. Pilih **Tindakan Instans**, lalu pilih **Hapus**.

1. Jika Anda diminta untuk **Buat Snapshot akhir?**, pilih **Ya** atau **Tidak**.

1. Jika Anda memilih **Ya** pada langkah sebelumnya, untuk **Nama snapshot akhir** masukkan nama snapshot akhir Anda.

1. Pilih **Hapus**.

**Untuk menghapus suatu instans (AWS CLI)**  
Lihat `[delete-db-instance](https://docs.aws.amazon.com/cli/latest/reference/neptune/delete-db-instance.html)` dalam *Referensi Perintah AWS CLI *.

**Untuk menghapus sebuah instans (API)**  
Lihat `[DeleteDBInstance](&doc-domaiAPI_DeleteDBInstance.html)`.

#### Menghapus Semua Klaster Anda
<a name="delete-service-linked-role-clusters"></a>

Gunakan salah satu prosedur berikut untuk menghapus satu kluster, dan kemudian ulangi prosedur untuk setiap kluster Anda.

**Untuk menghapus sebuah klaster (konsol)**

1. [Masuk ke Konsol AWS Manajemen, dan buka konsol Amazon Neptunus di rumah. https://console.aws.amazon.com/neptune/](https://console.aws.amazon.com/neptune/home)

1. Di daftar **Klaster** pilih klaster yang ingin Anda hapus.

1. Pilih **Tindakan Klaster**, lalu pilih **Hapus**.

1. Pilih **Hapus**.

**Untuk menghapus sebuah klaster (CLI)**  
Lihat `[delete-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/neptune/delete-db-cluster.html)` dalam *Referensi Perintah AWS CLI *.

**Untuk menghapus sebuah klaster (API)**  
Lihat `[DeleteDBCluster](API_DeleteDBCluster.html)`

Anda dapat menggunakan konsol IAM, IAM CLI, atau IAM API untuk menghapus `AWSServiceRoleForRDS`-peran terkait layanan. Untuk informasi selengkapnya, silakan lihat [Menghapus Peran Terkait Layanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role) di *Panduan Pengguna IAM*.

# Menggunakan kredensi sementara untuk terhubung ke Amazon Neptunus
<a name="iam-auth-temporary-credentials"></a>

Amazon Neptune mendukung autentikasi IAM menggunakan kredensials sementara.

Anda dapat menggunakan peran yang diasumsikan untuk mengautentikasi menggunakan kebijakan autentikasi IAM, seperti salah satu contoh kebijakan di bagian sebelumnya.

Jika Anda menggunakan kredensial sementara, Anda harus menentukan `AWS_SESSION_TOKEN` selain `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, dan `SERVICE_REGION`.

**catatan**  
Kredensial sementara kedaluwarsa setelah interval tertentu, *termasuk token sesinya*.  
Anda harus memperbarui token sesi Anda ketika Anda meminta kredensial baru. Untuk informasi selengkapnya, lihat [Menggunakan Kredensil Keamanan Sementara untuk Meminta Akses ke AWS Sumber Daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html).

Bagian berikut menjelaskan cara mengizinkan akses dan mengambil kredensial sementara.

**Untuk mengautentikasi menggunakan kredensial sementara**

1. Buat IAM role dengan izin untuk mengakses kluster Neptune. Untuk informasi lebih lanjut tentang pembuatan peran, lihat [Menggunakan berbagai jenis kebijakan IAM untuk mengontrol akses ke Neptunus](security-iam-access-manage.md#iam-auth-policy).

1. Tambahkan hubungan kepercayaan ke peran yang memungkinkan akses ke kredensialnya.

   Mengambil kredensial sementara, termasuk `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, dan `AWS_SESSION_TOKEN`.

1. Sambungkan ke klaster Neptune dan tandatangani permintaan menggunakan kredensial sementara. Untuk informasi selengkapnya tentang menyambungkan dann menandatangani permintaan, lihat [Menghubungkan ke database Amazon Neptunus Anda menggunakan otentikasi AWS Identity and Access Management](iam-auth-connecting.md).

Ada berbagai metode untuk mengambil kredensial sementara tergantung pada lingkungan.

**Topics**
+ [Mendapatkan Kredensyal Sementara Menggunakan AWS CLI](#iam-auth-temporary-credentials-cli)
+ [Menyiapkan AWS Lambda untuk Otentikasi IAM Neptunus](#iam-auth-temporary-credentials-lambda)
+ [Menyiapkan Amazon EC2 untuk Autentikasi IAM Neptune](#iam-auth-temporary-credentials-ec2)

## Mendapatkan Kredensyal Sementara Menggunakan AWS CLI
<a name="iam-auth-temporary-credentials-cli"></a>

Untuk mendapatkan kredensil menggunakan AWS Command Line Interface (AWS CLI), pertama-tama Anda perlu menambahkan hubungan kepercayaan yang memberikan izin untuk mengambil peran kepada AWS pengguna yang akan menjalankan perintah. AWS CLI 

Tambahkan hubungan kepercayaan berikut ke peran autentikasi IAM Neptune. Jika Anda tidak memiliki peran autentikasi IAM Neptune, lihat [Menggunakan berbagai jenis kebijakan IAM untuk mengontrol akses ke Neptunus](security-iam-access-manage.md#iam-auth-policy).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:user/test"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

Untuk informasi tentang menambahkan hubungan kepercayaan ke peran, lihat [Mengedit Hubungan Kepercayaan untuk Peran yang Ada](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/edit_trust.html) dalam *Panduan Administrasi AWS Directory Service *.

Jika kebijakan Neptune belum melekat pada peran, buat peran baru. Lampirkan kebijakan autentikasi IAM Neptune, dan kemudian tambahkan kebijakan kepercayaan. Untuk informasi selengkapnya tentang membuat peran baru, lihat [Membuat Peran Baru](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/create_role.html).

**catatan**  
Bagian berikut mengasumsikan bahwa Anda telah AWS CLI menginstal.

**Untuk menjalankan secara AWS CLI manual**

1. Masukkan perintah berikut untuk meminta kredensials menggunakan AWS CLI. Ganti ARN peran, nama sesi, dan profil dengan nilai-nilai Anda sendiri.

   ```
   aws sts assume-role  --role-arn  arn:aws:iam::123456789012:role/NeptuneIAMAuthRole --role-session-name test --profile testprofile
   ```

1. Contoh berikut menunjukkan output dari perintah. Bagian `Credentials` berisi nilai-nilai yang Anda butuhkan.
**catatan**  
Rekam nilai `Expiration` karena Anda perlu untuk mendapatkan kredensial baru setelah waktu ini.

   ```
   {
       "AssumedRoleUser": {
           "AssumedRoleId": "AROA3XFRBF535PLBIFPI4:s3-access-example",
           "Arn": "arn:aws:sts::123456789012:assumed-role/xaccounts3access/s3-access-example"
       },
       "Credentials": {
           "SecretAccessKey": "9drTJvcXLB89EXAMPLELB8923FB892xMFI",
           "SessionToken": "AQoXdzELDDY//////////wEaoAK1wvxJY12r2IrDFT2IvAzTCn3zHoZ7YNtpiQLF0MqZye/qwjzP2iEXAMPLEbw/m3hsj8VBTkPORGvr9jM5sgP+w9IZWZnU+LWhmg+a5fDi2oTGUYcdg9uexQ4mtCHIHfi4citgqZTgco40Yqr4lIlo4V2b2Dyauk0eYFNebHtYlFVgAUj+7Indz3LU0aTWk1WKIjHmmMCIoTkyYp/k7kUG7moeEYKSitwQIi6Gjn+nyzM+PtoA3685ixzv0R7i5rjQi0YE0lf1oeie3bDiNHncmzosRM6SFiPzSvp6h/32xQuZsjcypmwsPSDtTPYcs0+YN/8BRi2/IcrxSpnWEXAMPLEXSDFTAQAM6Dl9zR0tXoybnlrZIwMLlMi1Kcgo5OytwU=",
           "Expiration": "2016-03-15T00:05:07Z",
           "AccessKeyId": "ASIAJEXAMPLEXEG2JICEA"
       }
   }
   ```

1. Atur variabel lingkungan menggunakan kredensial yang dikembalikan.

   ```
   export AWS_ACCESS_KEY_ID=ASIAJEXAMPLEXEG2JICEA
   export AWS_SECRET_ACCESS_KEY=9drTJvcXLB89EXAMPLELB8923FB892xMFI
   export AWS_SESSION_TOKEN=AQoXdzELDDY//////////wEaoAK1wvxJY12r2IrDFT2IvAzTCn3zHoZ7YNtpiQLF0MqZye/qwjzP2iEXAMPLEbw/m3hsj8VBTkPORGvr9jM5sgP+w9IZWZnU+LWhmg+a5fDi2oTGUYcdg9uexQ4mtCHIHfi4citgqZTgco40Yqr4lIlo4V2b2Dyauk0eYFNebHtYlFVgAUj+7Indz3LU0aTWk1WKIjHmmMCIoTkyYp/k7kUG7moeEYKSitwQIi6Gjn+nyzM+PtoA3685ixzv0R7i5rjQi0YE0lf1oeie3bDiNHncmzosRM6SFiPzSvp6h/32xQuZsjcypmwsPSDtTPYcs0+YN/8BRi2/IcrxSpnWEXAMPLEXSDFTAQAM6Dl9zR0tXoybnlrZIwMLlMi1Kcgo5OytwU=
   
   export SERVICE_REGION=us-east-1 or us-east-2 or us-west-1 or us-west-2 or ca-central-1 or
                         ca-west-1 or sa-east-1 or eu-north-1 or eu-south-2 or eu-west-1 or eu-west-2 or eu-west-3 or
                         eu-central-1 or me-south-1 or me-central-1 or il-central-1 or af-south-1 or ap-east-1 or
                         ap-northeast-1 or ap-northeast-2 or ap-northeast-3 or ap-southeast-1 or ap-southeast-2 or
                         ap-southeast-3 or ap-southeast-4 or ap-southeast-5 or ap-south-1 or ap-south-2 or
                         cn-north-1 or cn-northwest-1 or
                         us-gov-east-1 or us-gov-west-1
   ```

1. Sambungkan menggunakan salah satu metode berikut.
   + [Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan konsol Gremlin](iam-auth-connecting-gremlin-console.md)
   + [Menghubungkan ke database Amazon Neptunus menggunakan IAM dengan Gremlin Java](iam-auth-connecting-gremlin-java.md)
   + [Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan Java dan SPARQL](iam-auth-connecting-sparql-java.md)
   + [Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan Python](iam-auth-connecting-python.md)

**Untuk menggunakan skrip untuk mendapatkan kredensialnya**

1. Jalankan perintah berikut untuk menginstal perintah **jq**. Script menggunakan perintah ini untuk mengurai output dari AWS CLI perintah.

   ```
   sudo yum -y install jq
   ```

1. Buat file bernama `credentials.sh` di editor teks dan tambahkan teks berikut. Ganti Wilayah layanan, ARN peran, nama sesi, dan profil dengan nilai-nilai Anda sendiri.

   ```
   #!/bin/bash
   
   creds_json=$(aws sts assume-role  --role-arn  arn:aws:iam::123456789012:role/NeptuneIAMAuthRole --role-session-name test --profile testprofile)
   
   export AWS_ACCESS_KEY_ID=$(echo "$creds_json" | jq .Credentials.AccessKeyId |tr -d '"')
   export AWS_SECRET_ACCESS_KEY=$(echo "$creds_json" | jq .Credentials.SecretAccessKey| tr -d '"')
   export AWS_SESSION_TOKEN=$(echo "$creds_json" | jq .Credentials.SessionToken|tr -d '"')
   
   export SERVICE_REGION=us-east-1 or us-east-2 or us-west-1 or us-west-2 or ca-central-1 or
                         ca-west-1 or sa-east-1 or eu-north-1 or eu-south-2 or eu-west-1 or eu-west-2 or eu-west-3 or
                         eu-central-1 or me-south-1 or me-central-1 or il-central-1 or af-south-1 or ap-east-1 or
                         ap-northeast-1 or ap-northeast-2 or ap-northeast-3 or ap-southeast-1 or ap-southeast-2 or
                         ap-southeast-3 or ap-southeast-4 or ap-southeast-5 or ap-south-1 or ap-south-2 or
                         cn-north-1 or cn-northwest-1 or
                         us-gov-east-1 or us-gov-west-1
   ```

1. Sambungkan menggunakan salah satu metode berikut.
   + [Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan konsol Gremlin](iam-auth-connecting-gremlin-console.md)
   + [Menghubungkan ke database Amazon Neptunus menggunakan IAM dengan Gremlin Java](iam-auth-connecting-gremlin-java.md)
   + [Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan Java dan SPARQL](iam-auth-connecting-sparql-java.md)
   + [Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan Python](iam-auth-connecting-python.md)

## Menyiapkan AWS Lambda untuk Otentikasi IAM Neptunus
<a name="iam-auth-temporary-credentials-lambda"></a>

AWS Lambda menyertakan kredensyal secara otomatis setiap kali fungsi Lambda dijalankan.

Pertama Anda menambahkan hubungan kepercayaan yang memberikan izin untuk mengambil peran untuk layanan Lambda.

Tambahkan hubungan kepercayaan berikut ke peran autentikasi IAM Neptune. Jika Anda tidak memiliki peran autentikasi IAM Neptune, lihat [Menggunakan berbagai jenis kebijakan IAM untuk mengontrol akses ke Neptunus](security-iam-access-manage.md#iam-auth-policy).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

Untuk informasi tentang menambahkan hubungan kepercayaan ke peran, lihat [Mengedit Hubungan Kepercayaan untuk Peran yang Ada](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/edit_trust.html) dalam *Panduan Administrasi AWS Directory Service*.

Jika kebijakan Neptune belum melekat pada peran, buat peran baru. Lampirkan kebijakan autentikasi IAM Neptune, dan kemudian tambahkan kebijakan kepercayaan. Untuk informasi tentang pembuatan peran baru, lihat [Membuat Peran Baru](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/create_role.html) dalam *Panduan Administrasi AWS Directory Service *.

**Untuk mengakses Neptune dari Lambda**

1. Masuk ke Konsol Manajemen AWS dan buka AWS Lambda konsol di [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Buat fungsi Lambda baru untuk Python versi 3.6.

1. Tetapkan peran `AWSLambdaVPCAccessExecutionRole` ke fungsi Lambda. Ini diperlukan untuk mengakses sumber daya Neptune, yang hanya berupa VPC.

1. Tetapkan IAM role autentikasi Neptune ke fungsi Lambda.

   Untuk informasi lebih lanjut, lihat [Izin Lambda AWS](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html) dalam *Panduan Developer AWS Lambda *.

1.  Salin sampel Python autentikasi IAM ke dalam kode fungsi Lambda.

   Untuk informasi selengkapnya tentang sampel dan kode sampel, lihat [Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan Python](iam-auth-connecting-python.md).

## Menyiapkan Amazon EC2 untuk Autentikasi IAM Neptune
<a name="iam-auth-temporary-credentials-ec2"></a>

Amazon EC2 memungkinkan Anda untuk menggunakan profil instans untuk secara otomatis memberikan kredensial. Untuk informasi lebih lanjut, lihat [Menggunakan Profil Instans](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) dalam *Panduan Pengguna IAM*.

Pertama, Anda menambahkan hubungan kepercayaan yang memberikan izin untuk mengambil peran ke layanan Amazon EC2.

Tambahkan hubungan kepercayaan berikut ke peran autentikasi IAM Neptune. Jika Anda tidak memiliki peran autentikasi IAM Neptune, lihat [Menggunakan berbagai jenis kebijakan IAM untuk mengontrol akses ke Neptunus](security-iam-access-manage.md#iam-auth-policy).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

Untuk informasi tentang menambahkan hubungan kepercayaan ke peran, lihat [Mengedit Hubungan Kepercayaan untuk Peran yang Ada](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/edit_trust.html) dalam *Panduan Administrasi AWS Directory Service *.

Jika kebijakan Neptune belum melekat pada peran, buat peran baru. Lampirkan kebijakan autentikasi IAM Neptune, dan kemudian tambahkan kebijakan kepercayaan. Untuk informasi tentang pembuatan peran baru, lihat [Membuat Peran Baru](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/create_role.html) dalam *Panduan Administrasi AWS Directory Service *.

**Untuk menggunakan skrip untuk mendapatkan kredensialnya**

1. Jalankan perintah berikut untuk menginstal perintah **jq**. Script menggunakan perintah ini untuk mengurai output dari perintah **curl**.

   ```
   sudo yum -y install jq
   ```

1. Buat file bernama `credentials.sh` di editor teks dan tambahkan teks berikut. Ganti Wilayah layanan dengan nilai Anda sendiri.

   ```
   TOKEN=$( curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" )
   role_name=$( curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/security-credentials/ )
   creds_json=$( curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/security-credentials/${role_name} )
   
   export AWS_ACCESS_KEY_ID=$(echo "$creds_json" | jq .AccessKeyId |tr -d '"')
   export AWS_SECRET_ACCESS_KEY=$(echo "$creds_json" | jq .SecretAccessKey| tr -d '"')
   export AWS_SESSION_TOKEN=$(echo "$creds_json" | jq .Token|tr -d '"')
   
   export SERVICE_REGION=us-east-1 or us-east-2 or us-west-1 or us-west-2 or ca-central-1 or
                         ca-west-1 or sa-east-1 or eu-north-1 or eu-south-2 or eu-west-1 or eu-west-2 or eu-west-3 or
                         eu-central-1 or me-south-1 or me-central-1 or il-central-1 or af-south-1 or ap-east-1 or
                         ap-northeast-1 or ap-northeast-2 or ap-northeast-3 or ap-southeast-1 or ap-southeast-2 or
                         ap-southeast-3 or ap-southeast-4 or ap-southeast-5 or ap-south-1 or ap-south-2 or
                         cn-north-1 or cn-northwest-1 or
                         us-gov-east-1 or us-gov-west-1
   ```

1. Jalankan skrip di shell `bash` menggunakan perintah `source`:

   ```
   source credentials.sh
   ```

   Lebih baik lagi adalah menambahkan perintah dalam script ini ke file `.bashrc` pada instans EC2 Anda sehingga mereka akan dipanggil secara otomatis ketika Anda login, membuat kredensial sementara tersedia untuk konsol Gremlin.

1. Sambungkan menggunakan salah satu metode berikut.
   + [Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan konsol Gremlin](iam-auth-connecting-gremlin-console.md)
   + [Menghubungkan ke database Amazon Neptunus menggunakan IAM dengan Gremlin Java](iam-auth-connecting-gremlin-java.md)
   + [Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan Java dan SPARQL](iam-auth-connecting-sparql-java.md)
   + [Menghubungkan ke database Amazon Neptunus menggunakan otentikasi IAM dengan Python](iam-auth-connecting-python.md)

# Pencatatan dan pemantauan penggunaan dan kinerja di Amazon Neptunus
<a name="security-monitoring"></a>

Amazon Neptune mendukung berbagai metode untuk memantau kinerja dan penggunaan:
+ **Status klaster**— Periksa kesehatan mesin database grafik klaster Neptune. Untuk informasi selengkapnya, lihat [Periksa Status Kondisi Instans Neptune](access-graph-status.md).
+ **Amazon CloudWatch** — Neptunus secara otomatis mengirim metrik CloudWatch ke dan juga mendukung Alarm. CloudWatch Untuk informasi selengkapnya, lihat [Memantau Neptunus Menggunakan Amazon CloudWatch](cloudwatch.md).
+ **File log audit**— Lihat, unduh, atau tonton file log basis data menggunakan konsol Neptune. Untuk informasi selengkapnya, lihat [Menggunakan Log Audit dengan Klaster Amazon Neptune](auditing.md).
+ **Menerbitkan log ke Amazon CloudWatch Logs** — Anda dapat mengonfigurasi cluster DB Neptunus untuk mempublikasikan data log audit ke grup log di Amazon Logs. CloudWatch Dengan CloudWatch Log, Anda dapat melakukan analisis real-time dari data log, digunakan CloudWatch untuk membuat alarm dan melihat metrik, dan menggunakan CloudWatch Log untuk menyimpan catatan log Anda dalam penyimpanan yang sangat tahan lama. Untuk informasi selengkapnya, lihat [Log Neptunus CloudWatch ](cloudwatch-logs.md).
+ **AWS CloudTrail**- Neptunus mendukung pencatatan API menggunakan. CloudTrail Untuk informasi selengkapnya, lihat [Mencatat Panggilan API Amazon Neptunus dengan AWS CloudTrail](cloudtrail.md).
+ **Penandaan**— Gunakan tanda untuk menambahkan metadata ke sumber daya Neptune Anda dan lacak penggunaan berdasarkan tanda. Untuk informasi selengkapnya, lihat [Menandai sumber daya Amazon Neptunus](tagging.md).

# Amazon Neptunus dan titik akhir VPC antarmuka ()AWS PrivateLink
<a name="vpc-interface-endpoints"></a>

Anda dapat menggunakan [AWS PrivateLink](https://aws.amazon.com/privatelink/)untuk membuat koneksi pribadi antara VPC dan titik akhir API Amazon Neptunus. Anda dapat mengakses operasi API Amazon Neptunus seolah-olah ada di VPC Anda, tanpa menggunakan gateway internet, perangkat NAT, koneksi VPN, atau koneksi. Lalu lintas antara VPC Anda dan Amazon Neptunus tetap berada dalam jaringan Amazon.

Amazon Neptune membagikan infrastruktur API dengan Amazon Relational Database Service. *Untuk menyiapkan titik akhir VPC antarmuka untuk Amazon Neptunus, ikuti petunjuk di Amazon [RDS API dan antarmuka VPC endpoint](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/vpc-interface-endpoints.html) () di Panduan Pengguna Amazon Aurora.AWS PrivateLink*

# Pertimbangan kepatuhan untuk Amazon Neptunus
<a name="neptune-compliance"></a>

Untuk mempelajari apakah an Layanan AWS berada dalam lingkup program kepatuhan tertentu, lihat [Layanan AWS di Lingkup oleh Program Kepatuhan Layanan AWS](https://aws.amazon.com/compliance/services-in-scope/) dan pilih program kepatuhan yang Anda minati. Untuk informasi umum, lihat [Program AWS Kepatuhan Program AWS](https://aws.amazon.com/compliance/programs/) .

Anda dapat mengunduh laporan audit pihak ketiga menggunakan AWS Artifact. Untuk informasi selengkapnya, lihat [Mengunduh Laporan di AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html) .

Tanggung jawab kepatuhan Anda saat menggunakan Layanan AWS ditentukan oleh sensitivitas data Anda, tujuan kepatuhan perusahaan Anda, dan hukum dan peraturan yang berlaku. Untuk informasi selengkapnya tentang tanggung jawab kepatuhan Anda saat menggunakan Layanan AWS, lihat [Dokumentasi AWS Keamanan](https://docs.aws.amazon.com/security/).

# Membangun penyebaran Amazon Neptunus yang tangguh dan toleran terhadap bencana
<a name="disaster-recovery-resiliency"></a>

Infrastruktur AWS global dibangun di sekitar AWS Wilayah dan Zona Ketersediaan. AWS Wilayah menyediakan beberapa Availability Zone yang terpisah secara fisik dan terisolasi, yang terhubung dengan latensi rendah, throughput tinggi, dan jaringan yang sangat redundan. Dengan Zona Ketersediaan, Anda dapat merancang dan mengoperasikan aplikasi dan basis data yang secara otomatis melakukan failover di antara Zona Ketersediaan tanpa gangguan. Zona Ketersediaan memiliki ketersediaan dan toleransi kesalahan yang lebih baik, dan dapat diskalakan dibandingkan infrastruktur biasa yang terdiri dari satu atau beberapa pusat data. 

Sebuah klaster DB Amazon Neptune hanya dapat dibuat dalam Amazon VPC yang memiliki setidaknya dua subnet di setidaknya dua Availability Zone. Dengan mendistribusikan instans klaster di setidaknya dua Availability Zone, Neptune membantu memastikan bahwa ada instans yang tersedia di klaster Anda apabila terjadi kegagalan Availability Zone yang tidak dimungkinkan. Volume klaster untuk klaster DB Neptune Anda selalu mencakup tiga Availability Zone untuk menyediakan penyimpanan yang tahan lama dengan kemungkinan kehilangan data yang lebih sedikit.

Untuk informasi selengkapnya tentang AWS Wilayah dan Availability Zone, lihat [Infrastruktur AWS Global](https://aws.amazon.com/about-aws/global-infrastructure/).