Menggunakan LDAP otentikasi untuk Presto di Amazon EMR - Amazon EMR

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

Menggunakan LDAP otentikasi untuk Presto di Amazon EMR

Ikuti langkah-langkah di bagian ini untuk mengkonfigurasiLDAP. Lihat setiap langkah untuk contoh dan tautan ke informasi lebih lanjut.

Langkah 1: Kumpulkan informasi tentang LDAP server Anda dan salin sertifikat server ke Amazon S3

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

Alamat IP atau nama host LDAP server

Koordinator Presto pada node EMR master Amazon harus dapat mencapai LDAP server pada alamat IP atau nama host yang ditentukan. Secara default, Presto berkomunikasi dengan LDAP server menggunakan LDAPS lebih dari port 636. Jika LDAP implementasi Anda memerlukan port khusus, Anda dapat menentukannya menggunakan ldap.url properti 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. 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 LDAP server

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 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 skrip untuk menyalin sertifikat LDAP server dan mengunggahnya ke Amazon S3. Contoh sertifikat adalah s3://amzn-s3-demo-bucket/ldap_server.crt.

Pengaturan LDAP server untuk pengikatan anonim

Jika pengikatan anonim dinonaktifkan pada PrestoDB, Anda memerlukan ID pengguna UID () dan kata sandi akun dengan izin untuk mengikat ke LDAP server sehingga server PrestoDB dapat membuat koneksi. Anda menentukan UID dan kata sandi menggunakan internal-communication.authentication.ldap.password properti internal-communication.authentication.ldap.user dan dalam klasifikasi presto-config konfigurasi. Amazon EMR 5.10.0 tidak mendukung pengaturan ini, jadi pengikatan anonim harus didukung di LDAP server saat Anda menggunakan versi rilis ini.

Perhatikan bahwa Trino tidak memerlukan konfigurasi pengikatan anonim.

Untuk mendapatkan status pengikatan anonim di LDAP server
  • PenggunaanldapwhoamiPerintah 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 akun memiliki izin ke LDAP server yang menggunakan otentikasi sederhana
  • PenggunaanldapwhoamiPerintah dari klien Linux, seperti yang ditunjukkan dalam contoh berikut. Contohnya menggunakan pengguna fiktif, presto, disimpan di LDAP server Terbuka yang berjalan pada EC2 instance 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 sertakan akun ini untuk kejelasan, dengan pengecualian contoh 5.10.0, di mana tidak didukung. Jika LDAP server menggunakan pengikatan anonim, hapus pasangan internal-communication.authentication.ldap.user internal-communication.authentication.ldap.password nama/nilai.

Nama LDAP terhormat (DN) untuk pengguna Presto

Ketika Anda menentukan LDAP konfigurasi untuk Presto, Anda menentukan pola mengikat yang terdiri dari ${USER} bersama dengan unit organisasi (OU) dan komponen domain tambahan (DCs). Presto menggantikan ${USER} dengan User ID (UID) aktual dari setiap pengguna selama otentikasi kata sandi untuk mencocokkan nama yang dibedakan (DN) yang ditentukan oleh pola bind ini. Anda membutuhkan pengguna OUs yang memenuhi syarat milik dan milik merekaDCs. 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 di AWS CloudFormation Panduan Pengguna.

Saat menggunakan Amazon EMR 5.10.0, Anda hanya dapat menentukan satu pola seperti itu. Menggunakan Amazon EMR 5.11.0 atau yang lebih baru, Anda dapat menentukan beberapa pola yang 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.

Langkah 2: Mengatur konfigurasi keamanan

Buat konfigurasi keamanan dengan enkripsi dalam transit diaktifkan. Untuk informasi selengkapnya, lihat Membuat konfigurasi keamanan di Panduan EMR Manajemen Amazon. 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. Sertifikat LDAP server digunakan untuk mengautentikasi koneksi klien ke server Presto.

Langkah 3: Buat konfigurasi JSON dengan properti Presto untuk LDAP

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

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

contoh Amazon EMR 6.1.0 dan yang lebih baru dengan Presto SQL (Trino)

Contoh berikut menggunakan nama LDAP host dari Langkah 1: Kumpulkan informasi tentang LDAP server Anda dan salin sertifikat server ke Amazon S3 untuk mengautentikasi ke LDAP server untuk mengikat. Dua pola ikatan pengguna ditentukan, yang menunjukkan bahwa pengguna dalam admins OU dan datascientists OU di LDAP server 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, bukan Presto. SQL Jika Anda menggunakan Trino, ganti prestosql-config dalam klasifikasi konfigurasi berikut dengan trino-config dan prestosql-password-authenticator dengantrino-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" } } ]
contoh Amazon EMR 5.16.0 dan yang lebih baru

Contoh berikut menggunakan ID LDAP pengguna dan kata sandi, dan nama LDAP host dari Langkah 1: Kumpulkan informasi tentang LDAP server Anda dan salin sertifikat server ke Amazon S3 untuk mengautentikasi ke LDAP server untuk mengikat. Dua pola bind pengguna ditentukan, yang menunjukkan bahwa pengguna dalam admins OU dan datascientists OU di LDAP server memenuhi syarat untuk otentikasi ke server Presto 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" } }]
contoh Amazon EMR 5.11.0 hingga 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" } }]
contoh Amazon EMR 5.10.0

Amazon EMR 5.10.0 hanya mendukung pengikatan anonim, 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 skrip untuk menyalin sertifikat LDAP server dan mengunggahnya ke Amazon S3

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. DalamLangkah 5: Membuat cluster, file skrip direferensikan sebagai s3://amzn-s3-demo-bucket/LoadLDAPCert.sh.

Contoh skrip berikut menggunakan kata sandi keystore default, changeit. Kami menyarankan Anda terhubung ke node master setelah Anda membuat cluster dan mengubah kata 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

Ketika Anda membuat cluster, Anda menentukan Presto dan aplikasi lain yang Anda ingin Amazon EMR untuk menginstal. Contoh berikut juga mereferensikan properti klasifikasi konfigurasi dalam aJSON, tetapi Anda juga dapat menentukan klasifikasi konfigurasi sebaris.

Untuk membuat cluster Presto dengan LDAP otentikasi menggunakan konsol Amazon EMR
  1. Arahkan ke EMR konsol 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.

  2. Pilih Buat klaster, Buka opsi lanjutan.

  3. Pilih Presto bersama dengan aplikasi lain untuk Amazon EMR untuk menginstal, dan di bawah Konfigurasi Perangkat Lunak, pilih Rilis Amazon EMR untuk digunakan. LDAPotentikasi hanya didukung dengan Amazon EMR 5.10.0 dan yang lebih baru.

  4. Di bawah Edit pengaturan perangkat lunak, pilih Muat JSON dari S3, masukkan lokasi di Amazon S3 dari file konfigurasi JSON yang Anda buatLangkah 3: Buat konfigurasi JSON dengan properti Presto untuk LDAP, lalu pilih Berikutnya.

  5. Mengkonfigurasi cluster perangkat keras dan jaringan, dan kemudian pilihSelanjutnya.

  6. PilihTindakan Bootstrap. UntukTambahkan tindakan bootstrap, pilihTindakan kustom, lalu pilihKonfigurasikan dan tambahkan.

  7. Masukkan Nama untuk tindakan bootstrap, masukkan lokasi Script yang Anda buatLangkah 4: Buat skrip untuk menyalin sertifikat LDAP server dan mengunggahnya ke Amazon S3, misalnya s3://amzn-s3-demo-bucket/L oadLDAPCert .sh, lalu pilih Tambah.

  8. Di bawahPilihan umum,Tag, danOpsi tambahanpilih pengaturan yang sesuai untuk aplikasi Anda, dan kemudian pilihSelanjutnya.

  9. PilihAutentikasi dan enkripsi, dan kemudian pilihKonfigurasi keamananyang Anda buat di Langkah 2: Mengatur konfigurasi keamanan.

  10. Pilih opsi keamanan lain yang sesuai untuk aplikasi Anda, dan kemudian pilihBuat gugus.

Untuk membuat cluster Presto dengan LDAP otentikasi 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 mereferensikan file konfigurasi sebagai JSON file yang disimpan di direktori yang sama tempat 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 (\) 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