Menggunakan otentikasi LDAP untuk Presto on 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 otentikasi LDAP untuk Presto on Amazon EMR

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

Langkah 1: Mengumpulkan informasi tentang server LDAP Anda dan menyalin sertifikat server ke Amazon S3

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

Alamat IP atau nama host server LDAP

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

Anda harus meng-upload file sertifikat ke lokasi yang aman di Amazon S3. Untuk informasi lebih lanjut, lihat Bagaimana cara saya mengunggah file dan folder ke bucket S3? dalam Panduan Pengguna Amazon Simple Storage Service. 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. Contoh sertifikat adalah s3://MyBucket/ldap_server.crt.

Pengaturan server LDAP untuk pengikatan anonim

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 mengikat anonim.

Untuk mendapatkan status pengikatan anonim pada server LDAP
  • 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 account memiliki izin ke server LDAP yang menggunakan otentikasi sederhana
  • PenggunaanldapwhoamiPerintah dari klien Linux, seperti yang ditunjukkan dalam contoh berikut. Contohnya menggunakan pengguna fiktif, presto, disimpan dalam server Open LDAP berjalan pada contoh EC2 dengan nama host fiktif ip-xxx-xxx-xxx-xxx-xxx-xxx-xxx-xxx-xxx-xxx-xxx-xxx-xxx-xxx-xxx-xxx.ec2.internal. Pengguna terkait dengan unit organisasi (OU) admin 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 anonim mengikat, menghapus internal-communication.authentication.ldap.user dan internal-communication.authentication.ldap.password nama/pasangan nilai.

Nama dibedakan LDAP (DN) untuk pengguna Presto

Ketika Anda menentukan konfigurasi LDAP untuk Presto, Anda menentukan pola mengikat yang terdiri dari ${USER} bersama dengan unit organisasi (OU) dan komponen domain tambahan (DC). 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 memerlukan OUs yang dimiliki pengguna yang memenuhi syarat dan DC mereka. 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 menggunakanAWS 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 CloudFormationUser Guide.

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.

Langkah 2: Mengatur konfigurasi keamanan

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

Langkah 3: Buat konfigurasi JSON dengan properti Presto untuk LDAP

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

Langkah-langkah berikut menganggap 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 referensi file lokal.

contoh Amazon EMR 6.1.0 dan kemudian 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 untuk mengotentikasi ke server LDAP untuk mengikat. Dua pola mengikat pengguna ditentukan, yang menunjukkan bahwa pengguna dalamadmins OU dandatascientists OU pada LDAP server memenuhi syarat untuk otentikasi ke Trino server sebagai pengguna. Pola mengikat dipisahkan oleh titik dua (:).

Amazon EMR versi 6.4.0 dan yang lebih baru menggunakan nama baru Trino, bukan PrestoSQL. Jika Anda menggunakan Trino, ganti prestosql-configklasifikasi konfigurasi berikut dengantrino-config danprestosql-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 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 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" } }]
contoh 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" } }]
contoh 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

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. DiLangkah 5: Buat klaster, file script direferensikan sebagai s3://MyBucket/LoadLDAPCert.sh.

Contoh script 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://MyBucket/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: Buat klaster

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. Buka konsol Amazon EMR di https://console.aws.amazon.com/emr.

  2. Pilih Buat Kluster, Buka opsi tingkat lanjut.

  3. PilihPrestobersama dengan aplikasi lain untuk Amazon EMR untuk menginstal, dan di bawahKonfigurasi Software, pilihRilisdari Amazon EMR untuk digunakan. Otentikasi LDAP didukung hanya dengan Amazon EMR 5.10.0 dan kemudian.

  4. 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, lalu pilih Selanjutnya.

  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 script untuk menyalin sertifikat server LDAP dan meng-upload ke Amazon S3, misalnya s3://MyBucket/LoadLDAPCert.sh, dan kemudian pilih Add.

  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 sebuah 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://MyBucket/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://MyBucket/LoadLDAPCert.sh" \ --security-configuration MyPrestoLDAPSecCfg --configurations file://MyPrestoConfig.json