

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

# 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 kredensi 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 kredensyal persisten dengan`awscurl`, seperti kredensyal pengguna IAM atau bahkan kredensyal root, tetapi ini tidak disarankan. [Sebagai gantinya, buat kredensi 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 kredensil 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
```