

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

# Menggunakan SSL/TLS dan mengonfigurasi LDAPS dengan Presto di Amazon EMR
<a name="presto-ssl"></a>

Dengan Amazon EMR rilis versi 5.6.0 dan yang lebih baru, Anda dapat mengaktifkan SSL/TLS untuk membantu [mengamankan komunikasi internal antara](https://prestodb.io/docs/current/security/internal-communication.html) node Presto. Anda melakukannya dengan menyiapkan konfigurasi keamanan untuk enkripsi dalam transit. Untuk informasi selengkapnya, lihat [Opsi enkripsi](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-data-encryption-options.html) dan [Menggunakan konfigurasi keamanan untuk mengatur keamanan cluster](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-security-configurations.html) dalam *Amazon EMR*.

Ketika Anda menggunakan konfigurasi keamanan dengan di-transit enkripsi, Amazon EMR melakukan hal berikut untuk Presto:
+ Mendistribusikan artefak enkripsi, atau sertifikat, yang Anda tentukan untuk di-transit enkripsi di seluruh cluster Presto. Untuk informasi selengkapnya, lihat [Menyediakan sertifikat untuk enkripsi data in-transit](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-enable.html#emr-encryption-certificates).
+ Menetapkan properti berikut menggunakan klasifikasi konfigurasi `presto-config`, yang sesuai dengan file `config.properties` untuk Presto:
  + Sets `http-server.http.enabled` ke `false` pada semua node, yang menonaktifkan HTTP mendukung HTTPS. Hal ini mengharuskan Anda untuk memberikan sertifikat yang berfungsi untuk DNS publik dan pribadi saat menyiapkan konfigurasi keamanan untuk enkripsi dalam transit. Salah satu cara untuk melakukannya adalah dengan menggunakan SAN (nama alternatif subjek) sertifikat yang mendukung beberapa domain.
  + Sets `http-server.https.*` nilai. Untuk detail konfigurasi, lihat [Autentikasi LDAP](https://prestodb.io/docs/current/security/ldap.html) dalam dokumentasi Presto.

Selain itu, dengan rilis Amazon EMR versi 5.10.0 dan yang lebih baru, Anda dapat mengatur [Autentikasi LDAP](https://prestodb.io/docs/current/security/ldap.html) untuk koneksi klien ke koordinator Presto menggunakan HTTPS. Penataan ini menggunakan LDAP aman (LDAPS). TLS harus diaktifkan pada server LDAP Anda, dan gugus Presto harus menggunakan konfigurasi keamanan dengan enkripsi data di-transit diaktifkan. Konfigurasi tambahan diperlukan. Pilihan konfigurasi berbeda tergantung pada versi rilis Amazon EMR yang Anda gunakan. Untuk informasi selengkapnya, lihat [Menggunakan otentikasi LDAP untuk Presto on Amazon EMR](emr-presto-ldap.md).

Presto on Amazon EMR menggunakan port 8446 untuk HTTPS internal secara default. Port yang digunakan untuk komunikasi internal harus port yang sama digunakan untuk klien HTTPS akses ke koordinator Presto. Parameter `http-server.https.port` Properti di properti `presto-config` klasifikasi konfigurasi menentukan port.

# Menggunakan otentikasi LDAP untuk Presto on Amazon EMR
<a name="emr-presto-ldap"></a>

Ikuti langkah-langkah dalam bagian ini untuk mengkonfigurasi LDAP. Lihat setiap langkah untuk contoh dan tautan ke informasi lebih lanjut.

**Topics**
+ [Langkah 1: Mengumpulkan informasi tentang server LDAP Anda dan menyalin sertifikat server ke Amazon S3](#emr-presto-ldap-server-prereq)
+ [Langkah 2: Mengatur konfigurasi keamanan](#emr-presto-ldap-seccfg)
+ [Langkah 3: Buat konfigurasi JSON dengan properti Presto untuk LDAP](#emr-presto-ldap-prestoconfig)
+ [Langkah 4: Buat script untuk menyalin sertifikat server LDAP dan meng-upload ke Amazon S3](#emr-presto-ldap-servercert)
+ [Langkah 5: Membuat cluster](#emr-presto-ldap-createcluster)

## Langkah 1: Mengumpulkan informasi tentang server LDAP Anda dan menyalin sertifikat server ke Amazon S3
<a name="emr-presto-ldap-server-prereq"></a>

Anda akan memerlukan informasi dan item di bagian berikut dari server LDAP Anda untuk mengkonfigurasi otentikasi LDAP.

### Alamat IP atau nama host server LDAP
<a name="w2aac60c39c13b7b5"></a>

Koordinator Presto pada Amazon EMR master node harus mampu mencapai server LDAP di alamat IP tertentu atau nama host. Secara default, Presto berkomunikasi dengan server LDAP menggunakan LDAPS melalui port 636. Jika implementasi LDAP Anda memerlukan port kustom, Anda dapat menentukan menggunakan `ldap.url` dengan Amazon EMR 5.16.0 atau yang lebih baru, atau menggunakan `authentication.ldap.url` dengan versi sebelumnya. Mengganti port kustom untuk `636` seperti yang ditunjukkan dalam `presto-config` contoh klasifikasi konfigurasi di [Langkah 3: Buat konfigurasi JSON dengan properti Presto untuk LDAP](#emr-presto-ldap-prestoconfig). Pastikan bahwa firewall dan grup keamanan memungkinkan lalu lintas masuk dan keluar pada port 636 (atau port kustom Anda) dan juga port 8446 (atau port kustom Anda), yang digunakan untuk komunikasi cluster internal.

### Sertifikat server LDAP
<a name="w2aac60c39c13b7b7"></a>

Anda harus meng-upload file sertifikat ke lokasi yang aman di Amazon S3. Untuk informasi selengkapnya, lihat [Bagaimana cara mengunggah file dan folder ke Bucket S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) di *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*. Anda membuat bootstrap tindakan yang menyalin sertifikat ini dari Amazon S3 untuk setiap node dalam gugus ketika kluster meluncurkan. Masuk [Langkah 4: Buat script untuk menyalin sertifikat server LDAP dan meng-upload ke Amazon S3](#emr-presto-ldap-servercert). Contoh sertifikat adalah*s3://amzn-s3-demo-bucket/ldap\$1server.crt*.

### Pengaturan server LDAP untuk pengikatan anonim
<a name="w2aac60c39c13b7b9"></a>

Jika anonim mengikat dinonaktifkan pada PrestoDB, Anda memerlukan ID pengguna (UID) dan password dari account dengan izin untuk mengikat ke server LDAP sehingga server PrestoDB dapat membuat sambungan. Anda menentukan UID dan sandi menggunakan `internal-communication.authentication.ldap.user` dan `internal-communication.authentication.ldap.password` properti di properti `presto-config` Konfigurasi klasifikasi. Amazon EMR 5.10.0 tidak mendukung pengaturan ini, sehingga anonim mengikat harus didukung pada server LDAP ketika Anda menggunakan versi rilis ini.

Perhatikan bahwa Trino tidak memerlukan konfigurasi pengikatan anonim.

**Untuk mendapatkan status pengikatan anonim pada server LDAP**
+ Penggunaan[ldapwhoami](https://linux.die.net/man/1/ldapwhoami)Perintah dari klien Linux, seperti yang ditunjukkan dalam contoh berikut:

  ```
  ldapwhoami -x -H ldaps://LDAPServerHostNameOrIPAddress
  ```

  Jika anonim mengikat tidak diperbolehkan, perintah mengembalikan berikut:

  ```
  ldap_bind: Inappropriate authentication (48)
  additional info: anonymous bind disallowed
  ```

**Untuk memverifikasi bahwa account memiliki izin ke server LDAP yang menggunakan otentikasi sederhana**
+ Penggunaan[ldapwhoami](https://linux.die.net/man/1/ldapwhoami)Perintah dari klien Linux, seperti yang ditunjukkan dalam contoh berikut. Contoh ini menggunakan pengguna fiktif,*presto*, disimpan di server Open LDAP yang berjalan pada instance EC2 dengan nama host fiktif. *ip-xxx-xxx-xxx-xxx.ec2.internal* Pengguna dikaitkan dengan unit organisasi (OU) *admins* dan dengan kata sandi*123456*:

  ```
  ldapwhoami -x -w "123456" -D uid=presto,ou=admins,dc=ec2,dc=internal -H ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal 
  ```

  Jika akun valid dan memiliki izin yang sesuai, perintah kembali:

  ```
  dn:uid=presto,ou=admins,dc=ec2,dc=internal
  ```

Konfigurasi contoh dalam [Langkah 3: Buat konfigurasi JSON dengan properti Presto untuk LDAP](#emr-presto-ldap-prestoconfig) sertakan akun ini untuk kejelasan, dengan pengecualian contoh 5.10.0, di mana tidak didukung. Jika server LDAP menggunakan pengikatan anonim, hapus `internal-communication.authentication.ldap.user` dan `internal-communication.authentication.ldap.password` name/value pasangkan.

### Nama dibedakan LDAP (DN) untuk pengguna Presto
<a name="w2aac60c39c13b7c11"></a>

Ketika Anda menentukan konfigurasi LDAP untuk Presto, Anda menentukan pola bind yang terdiri dari `${USER}` bersama dengan unit organisasi (OU) dan komponen domain tambahan (). DCs Presto menggantikan `${USER}` dengan sebenarnya User ID (UID) dari setiap pengguna selama otentikasi sandi untuk mencocokkan nama dibedakan (DN) yang pola mengikat ini menentukan. Anda membutuhkan pengguna OUs yang memenuhi syarat milik dan milik mereka DCs. Misalnya, untuk memungkinkan pengguna dari `admins` OU di `corp.example.com` domain untuk otentikasi ke Presto, Anda tentukan `${USER},ou=admins,dc=corp,dc=example,dc=com` sebagai pola mengikat pengguna.

**catatan**  
Saat Anda menggunakan AWS CloudFormation, Anda perlu menggunakan fungsi Fn: :Sub untuk mengganti `${USER}` dengan User ID (UID) yang sebenarnya. Untuk informasi selengkapnya, lihat topik [Fn: :Sub](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-sub.html) di *AWS CloudFormation Panduan Pengguna*.

Bila menggunakan Amazon EMR 5.10.0, Anda dapat menentukan hanya satu pola seperti itu. Menggunakan Amazon EMR 5.11.0 atau yang lebih baru, Anda dapat menentukan beberapa pola dipisahkan oleh titik dua (:). Pengguna mencoba untuk mengotentikasi ke Presto dibandingkan dengan pola pertama, maka yang kedua, dan seterusnya. Sebagai contoh, lihat [Langkah 3: Buat konfigurasi JSON dengan properti Presto untuk LDAP](#emr-presto-ldap-prestoconfig).

## Langkah 2: Mengatur konfigurasi keamanan
<a name="emr-presto-ldap-seccfg"></a>

Buat konfigurasi keamanan dengan enkripsi dalam transit diaktifkan. Untuk informasi selengkapnya, lihat [Membuat konfigurasi keamanan](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-create-security-configuration.html) dalam *Amazon EMR*. Artefak enkripsi yang Anda berikan ketika Anda mengatur di-transit enkripsi yang digunakan untuk mengenkripsi komunikasi internal antara Presto node. Untuk informasi selengkapnya, lihat [Menyediakan sertifikat untuk enkripsi data in-transit](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-enable.html#emr-encryption-certificates). Sertifikat server LDAP digunakan untuk mengotentikasi koneksi klien ke Presto server.

## Langkah 3: Buat konfigurasi JSON dengan properti Presto untuk LDAP
<a name="emr-presto-ldap-prestoconfig"></a>

Anda menggunakan `presto-config` klasifikasi konfigurasi untuk mengatur properti Presto untuk LDAP. Format dan isinya sedikit berbeda tergantung pada versi rilis Amazon EMR dan instalasi Presto (PrestoDB atau Trino). `presto-config` Contoh perbedaan konfigurasi disediakan nanti dalam bagian ini. Untuk informasi selengkapnya, lihat [Konfigurasikan aplikasi](emr-configure-apps.md).

Langkah-langkah berikut mengasumsikan bahwa Anda menyimpan data JSON ke file,*MyPrestoConfig.json*. Jika Anda menggunakan konsol, meng-upload file ke lokasi aman di Amazon S3 sehingga Anda dapat referensi ketika Anda membuat cluster. Jika Anda menggunakan AWS CLI, Anda dapat mereferensikan file secara lokal.

**Example Amazon EMR 6.1.0 dan yang lebih baru dengan PrestosQL (Trino)**  
Contoh berikut menggunakan nama host LDAP dari [Langkah 1: Mengumpulkan informasi tentang server LDAP Anda dan menyalin sertifikat server ke Amazon S3](#emr-presto-ldap-server-prereq) untuk mengotentikasi ke server LDAP untuk mengikat. Dua pola ikatan pengguna ditentukan, yang menunjukkan bahwa pengguna dalam `admins` OU dan `datascientists` OU pada server LDAP memenuhi syarat untuk otentikasi ke server Trino sebagai pengguna. Pola mengikat dipisahkan oleh titik dua (`:`).  
Amazon EMR versi 6.4.0 dan yang lebih baru menggunakan nama baru Trino alih-alih PrestosQL. Jika Anda menggunakan Trino, ganti *`prestosql-config`* dalam klasifikasi konfigurasi berikut dengan `trino-config` dan `prestosql-password-authenticator` dengan`trino-password-authenticator`.  

```
[
   {
      "Classification":"prestosql-config",
      "Properties":{
         "http-server.authentication.type":"PASSWORD"
      }
   },
   {
      "Classification":"prestosql-password-authenticator",
      "Properties":{
         "password-authenticator.name":"ldap",
         "ldap.url":"ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636",
         "ldap.user-bind-pattern": "uid=${USER},ou=admins,dc=ec2,dc=internal:uid=${USER},ou=datascientists,dc=ec2,dc=internal"
      }
   }
]
```

**Example Amazon EMR 5.16.0 dan versi yang lebih tinggi**  
Contoh berikut menggunakan LDAP user ID dan password, dan nama host LDAP dari [Langkah 1: Mengumpulkan informasi tentang server LDAP Anda dan menyalin sertifikat server ke Amazon S3](#emr-presto-ldap-server-prereq) untuk mengotentikasi ke server LDAP untuk mengikat. Dua pola mengikat pengguna ditentukan, yang menunjukkan bahwa pengguna dalam `admins` OU dan `datascientists` OU pada LDAP server memenuhi syarat untuk otentikasi ke Presto server sebagai pengguna. Pola mengikat dipisahkan oleh titik dua (`:`).  

```
[{
        "Classification": "presto-config",
                "Properties": {
                        "http-server.authentication.type": "PASSWORD"
                }
        },
        {
                "Classification": "presto-password-authenticator",
                "Properties": {
                        "password-authenticator.name": "ldap",
                        "ldap.url": "ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636",
                        "ldap.user-bind-pattern": "uid=${USER},ou=admins,dc=ec2,dc=internal:uid=${USER},ou=datascientists,dc=ec2,dc=internal",
                        "internal-communication.authentication.ldap.user": "presto",
                        "internal-communication.authentication.ldap.password": "123456"
                }
        }]
```

**Example Amazon EMR 5.11.0 melalui 5.15.0**  
Formatnya `presto-config ` klasifikasi konfigurasi sedikit berbeda untuk versi rilis ini. Contoh berikut menentukan parameter yang sama seperti contoh sebelumnya.  

```
[{
        "Classification": "presto-config",
                "Properties": {
                        "http-server.authentication.type": "LDAP",
                        "authentication.ldap.url": "ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636",
                        "authentication.ldap.user-bind-pattern": "uid=${USER},ou=admins,dc=ec2,dc=internal:uid=${USER},ou=datascientists,dc=ec2,dc=internal",
                        "internal-communication.authentication.ldap.user": "presto",
                        "internal-communication.authentication.ldap.password": "123456"
                }
        }]
```

**Example EMR Amazon 5.10.0**  
Amazon EMR 5.10.0 mendukung anonim mengikat hanya, sehingga entri tersebut dihilangkan. Selain itu, hanya pola pengikat tunggal yang bisa ditentukan.  

```
[{
        "Classification": "presto-config",
                "Properties": {
                        "http-server.authentication.type": "LDAP",
                        "authentication.ldap.url": "ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636",
                        "ldap.user-bind-pattern": "uid=${USER},ou=prestousers,dc=ec2,dc=internal"
                }
        }]
```

## Langkah 4: Buat script untuk menyalin sertifikat server LDAP dan meng-upload ke Amazon S3
<a name="emr-presto-ldap-servercert"></a>

Membuat script yang menyalin file sertifikat untuk setiap node dalam gugus dan menambahkan ke keystore. Buat skrip menggunakan editor teks, simpan, dan kemudian muat naik ke Amazon S3. Dalam[Langkah 5: Membuat cluster](#emr-presto-ldap-createcluster), file skrip direferensikan sebagai*s3://amzn-s3-demo-bucket/LoadLDAPCert.sh*.

Contoh skrip berikut menggunakan password keystore default,*changeit*. Kami merekomendasikan bahwa Anda menyambung ke node master setelah Anda membuat cluster dan mengubah sandi keystore menggunakan perintah keytool.

```
#!/bin/bash
aws s3 cp s3://amzn-s3-demo-bucket/ldap_server.crt .
sudo keytool -import -keystore /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/lib/security/cacerts -trustcacerts -alias ldap_server -file ./ldap_server.crt -storepass changeit -noprompt
```



## Langkah 5: Membuat cluster
<a name="emr-presto-ldap-createcluster"></a>

Ketika Anda membuat cluster, Anda menentukan Presto dan aplikasi lain yang Anda inginkan Amazon EMR untuk menginstal. Contoh berikut juga referensi properti klasifikasi konfigurasi dalam JSON, tetapi Anda juga dapat menentukan inline klasifikasi konfigurasi.

**Untuk membuat cluster Presto dengan otentikasi LDAP menggunakan konsol Amazon EMR**

1. Arahkan ke konsol EMR Amazon baru dan pilih **Beralih ke konsol lama** dari navigasi samping. Untuk informasi selengkapnya tentang apa yang diharapkan saat beralih ke konsol lama, lihat [Menggunakan konsol lama](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html#console-opt-in).

1. Pilih **Buat Kluster**, **Buka opsi tingkat lanjut**.

1. Pilih**Presto**bersama dengan aplikasi lain untuk Amazon EMR untuk menginstal, dan di bawah**Konfigurasi Software**, pilih**Rilis**dari Amazon EMR untuk digunakan. Otentikasi LDAP didukung hanya dengan Amazon EMR 5.10.0 dan kemudian.

1. Di bawah **Mengedit setelan perangkat lunak**, pilih **Muat JSON dari S3**, masukkan lokasi di Amazon S3 dari file konfigurasi JSON yang Anda buat [Langkah 3: Buat konfigurasi JSON dengan properti Presto untuk LDAP](#emr-presto-ldap-prestoconfig), lalu pilih **Selanjutnya**.

1. Mengkonfigurasi cluster perangkat keras dan jaringan, dan kemudian pilih**Selanjutnya**.

1. Pilih**Tindakan Bootstrap**. Untuk**Tambahkan tindakan bootstrap**, pilih**Tindakan kustom**, lalu pilih**Konfigurasikan dan tambahkan**.

1. Masukkan **Nama** untuk tindakan bootstrap, masukkan **lokasi Script** yang Anda buat[Langkah 4: Buat script untuk menyalin sertifikat server LDAP dan meng-upload ke Amazon S3](#emr-presto-ldap-servercert), misalnya **s3://amzn-s3-demo-bucket/Load LDAPCert .sh**, lalu pilih **Tambah**.

1. Di bawah**Pilihan umum**,**Tag**, dan**Opsi tambahan**pilih pengaturan yang sesuai untuk aplikasi Anda, dan kemudian pilih**Selanjutnya**.

1. Pilih**Autentikasi dan enkripsi**, dan kemudian pilih**Konfigurasi keamanan**yang Anda buat di [Langkah 2: Mengatur konfigurasi keamanan](#emr-presto-ldap-seccfg).

1. Pilih opsi keamanan lain yang sesuai untuk aplikasi Anda, dan kemudian pilih**Buat gugus**.

**Untuk membuat cluster Presto dengan otentikasi LDAP menggunakan AWS CLI**
+ Gunakan perintah `aws emr create-cluster`. Minimal, tentukan aplikasi Presto, dan juga klasifikasi konfigurasi Presto, skrip bootstrap, dan konfigurasi keamanan yang Anda buat pada langkah-langkah sebelumnya. Contoh berikut referensi file konfigurasi sebagai file JSON disimpan dalam direktori yang sama di mana Anda menjalankan perintah. Skrip bootstrap, di sisi lain, harus disimpan di Amazon S3. Contoh berikut menggunakan `s3://amzn-s3-demo-bucket/LoadLDAPCert.sh`.
**catatan**  
Karakter kelanjutan baris Linux (\$1) disertakan untuk memudahkan pembacaan. Karakter ini bisa dihapus atau digunakan dalam perintah Linux. Untuk Windows, hapus atau ganti dengan tanda sisipan (^).

  ```
  aws emr create-cluster  --applications Name=presto --release-label emr-5.16.0 \
  --use-default-roles --ec2-attributes KeyName=MyKeyPair,SubnetId=subnet-1234ab5 \ --instance-count 3 --instance-type m5.xlarge --region us-west-2 --name "MyPrestoWithLDAPAuth" \
  --bootstrap-actions Name="Distribute LDAP server cert",Path="s3://amzn-s3-demo-bucket/LoadLDAPCert.sh" \
  --security-configuration MyPrestoLDAPSecCfg --configurations file://MyPrestoConfig.json
  ```