Azure HDInsight ID Broker (HIB)

Artikel ini menjelaskan cara menyiapkan dan menggunakan fitur Azure HDInsight ID Broker. Anda dapat menggunakan fitur ini untuk mendapatkan autentikasi OAuth modern ke Apache Ambari sambil menerapkan autentikasi multifaktor tanpa memerlukan hash kata sandi lama di Azure Active Directory Domain Services (Azure AD DS).

Gambaran Umum

HDInsight ID Broker memudahkan penyiapan autentikasi yang rumit dalam skenario berikut:

  • Organisasi Anda bergantung pada federasi untuk mengautentikasi pengguna guna mengakses sumber daya cloud. Sebelumnya, untuk menggunakan kluster Paket Keamanan Perusahaan HDInsight, Anda harus mengaktifkan sinkronisasi hash kata sandi dari lingkungan lokal ke Azure Active Directory (Azure AD). Persyaratan ini mungkin berat atau tidak diinginkan oleh beberapa organisasi.
  • Organisasi Anda ingin memberlakukan autentikasi multifaktor untuk akses berbasis web atau berbasis HTTP ke Apache Ambari dan sumber daya kluster lain.

HDInsight ID Broker menyediakan infrastruktur autentikasi yang memungkinkan transisi protokol dari OAuth (modern) ke Kerberos (lama) tanpa perlu menyinkronkan hash kata sandi ke Azure Active Directory Domain Services. Infrastruktur ini terdiri dari komponen yang berjalan pada komputer virtual (VM) Windows Server dengan simpul HDInsight ID Broker diaktifkan, bersama dengan simpul gateway kluster.

Gunakan tabel berikut untuk menentukan opsi autentikasi terbaik berdasarkan kebutuhan organisasi Anda.

Opsi autentikasi Konfigurasi HDInsight Faktor-faktor yang perlu dipertimbangkan
OAuth Penuh Paket Keamanan Perusahaan + HDInsight ID Broker Opsi paling aman. (Autentikasi multifaktor didukung.) Sinkronisasi hash kata sandi tidak diperlukan. Tidak ada akses ssh/kinit/keytab untuk akun lokal, yang tidak memiliki hash kata sandi di Azure Active Directory Domain Services. Akun khusus cloud masih dapat ssh/kinit/keytab. Akses berbasis web ke Ambari melalui OAuth. Memerlukan pembaruan aplikasi lama (seperti, JDBC/ODBC) untuk mendukung OAuth.
OAuth + Autentikasi Dasar Paket Keamanan Perusahaan + HDInsight ID Broker Akses berbasis web ke Ambari melalui OAuth. Aplikasi lama terus menggunakan autentikasi dasar. Autentikasi multifaktor harus dinonaktifkan untuk akses autentikasi dasar. Sinkronisasi hash kata sandi tidak diperlukan. Tidak ada akses ssh/kinit/keytab untuk akun lokal, yang tidak memiliki hash kata sandi di Azure Active Directory Domain Services. Akun khusus cloud masih dapat ssh/kinit.
Autentikasi Dasar Penuh Paket Keamanan Perusahaan Paling mirip dengan penyiapan lokal. Sinkronisasi hash kata sandi ke Azure Active Directory Domain Services diperlukan. Akun lokal dapat ssh/kinit atau menggunakan keytab. Autentikasi multifaktor harus dinonaktifkan jika penyimpanan pendukungnya adalah Azure Data Lake Storage Gen2.

Diagram berikut menunjukkan alur autentikasi berbasis OAuth modern untuk semua pengguna, termasuk pengguna gabungan, setelah HDInsight ID Broker diaktifkan:

Diagram that shows authentication flow with HDInsight ID Broker.

Dalam diagram ini, klien (yaitu, browser atau aplikasi) harus memperoleh token OAuth terlebih dahulu. Kemudian menyampaikan token ke gateway dalam permintaan. Jika sudah masuk ke layanan Azure lain, seperti portal Microsoft Azure, Anda dapat masuk ke kluster HDInsight Anda dengan pengalaman akses menyeluruh.

Mungkin masih ada banyak aplikasi lama yang hanya mendukung autentikasi dasar (yaitu, nama pengguna dan kata sandi). Untuk skenario tersebut, Anda masih dapat menggunakan autentikasi dasar HTTP untuk menyambungkan ke gateway kluster. Dalam penyiapan ini, Anda harus memastikan konektivitas jaringan dari simpul gateway ke titik akhir Layanan Federasi Direktori Aktif (AD FS) guna memastikan garis pandang langsung dari simpul gateway.

Diagram berikut ini menunjukkan alur autentikasi dasar untuk pengguna gabungan. Pertama, gateway mencoba menyelesaikan autentikasi dengan menggunakan alur ROPC. Jika tidak ada hash kata sandi yang disinkronkan ke Azure Active Directory, kata sandi akan kembali menemukan titik akhir Layanan Federasi Direktori Aktif dan menyelesaikan autentikasi dengan mengakses titik akhir Layanan Federasi Direktori Aktif.

Diagram that shows architecture with basic authentication.

Mengaktifkan HDInsight ID Broker

Untuk membuat kluster Paket Keamanan Perusahaan dengan HDInsight ID Broker diaktifkan:

  1. Masuk ke portal Microsoft Azure.
  2. Ikuti langkah-langkah pembuatan dasar untuk kluster Paket Keamanan Perusahaan. Untuk informasi selengkapnya, lihat Membuat kluster HDInsight dengan Paket Keamanan Perusahaan.
  3. Pilih Aktifkan HDInsight ID Broker.

Fitur HDInsight ID Broker menambahkan satu VM tambahan ke kluster. VM ini adalah simpul HDInsight ID Broker, dan menyertakan komponen server untuk mendukung autentikasi. Simpul HDInsight ID Broker adalah domain yang bergabung ke domain Azure Active Directory Domain Services.

Diagram that shows option to enable HDInsight ID Broker.

Menggunakan templat Azure Resource Manager

Jika Anda menambahkan peran baru yang disebut idbrokernode dengan atribut berikut ke profil komputasi templat Anda, kluster akan dibuat dengan simpul HDInsight ID Broker diaktifkan:

.
.
.
"computeProfile": {
    "roles": [
        {
            "autoscale": null,
            "name": "headnode",
           ....
        },
        {
            "autoscale": null,
            "name": "workernode",
            ....
        },
        {
            "autoscale": null,
            "name": "idbrokernode",
            "targetInstanceCount": 2,
            "hardwareProfile": {
                "vmSize": "Standard_A2_V2"
            },
            "virtualNetworkProfile": {
                "id": "string",
                "subnet": "string"
            },
            "scriptActions": [],
            "dataDisksGroups": null
        }
    ]
}
.
.
.

Untuk melihat sampel lengkap templat ARM, silakan lihat templat yang diterbitkan di sini.

Integrasi alat

Alat HDInsight diperbarui untuk mendukung OAuth secara native. Gunakan alat ini untuk akses berbasis OAuth modern ke kluster. Plug-in IntelliJ HDInsight dapat digunakan untuk aplikasi berbasis Java, seperti Scala. Alat Spark dan Apache Hive untuk Visual Studio Code dapat digunakan untuk pekerjaan PySpark dan Apache Hive. Alat-alat ini mendukung pekerjaan batch dan interaktif.

Akses SSH tanpa hash kata sandi di Azure Active Directory Domain Services

Opsi SSH Faktor-faktor yang perlu dipertimbangkan
Akun VM lokal (misalnya, sshuser) Anda menyediakan akun ini pada saat pembuatan kluster. Tidak ada autentikasi Kerberos untuk akun ini.
Akun khusus cloud (misalnya, alice@contoso.onmicrosoft.com) Hash kata sandi tersedia di Azure Active Directory Domain Services. Autentikasi Kerberos dimungkinkan melalui SSH Kerberos.
Akun lokal (misalnya, alice@contoso.com) Autentikasi Kerberos SSH hanya dimungkinkan jika hash kata sandi tersedia di Azure Active Directory Domain Services. Jika tidak, pengguna ini tidak dapat SSH ke kluster.

Untuk SSH ke VM yang bergabung dengan domain atau untuk menjalankan perintah kinit, Anda harus memberikan sandi. Autentikasi Kerberos SSH mengharuskan hash tersedia di Azure Active Directory Domain Services. Jika ingin menggunakan SSH hanya untuk skenario administratif, Anda dapat membuat satu akun khusus cloud dan menggunakannya untuk SSH ke kluster. Pengguna lokal lain masih dapat menggunakan alat Ambari atau HDInsight atau autentikasi dasar HTTP tanpa menyediakan hash kata sandi di Azure Active Directory Domain Services.

Jika organisasi Anda tidak menyinkronkan hash kata sandi ke Azure Active Directory Domain Services, sebagai praktik terbaik, buat satu pengguna khusus cloud di Azure Active Directory. Kemudian, tetapkan pengguna tersebut sebagai admin kluster ketika Anda membuat kluster, dan gunakan untuk keperluan administrasi. Anda dapat menggunakannya untuk mendapatkan akses root ke VM melalui SSH.

Untuk memecahkan masalah autentikasi, lihat panduan ini.

Klien yang menggunakan OAuth untuk tersambung ke gateway HDInsight dengan HDInsight ID Broker

Dalam penyiapan HDInsight ID Broker, aplikasi kustom dan klien yang tersambung ke gateway dapat diperbarui untuk memperoleh token OAuth yang diperlukan terlebih dahulu. Ikuti langkah-langkah dalam dokumen ini untuk memperoleh token dengan informasi berikut:

  • URI sumber daya OAuth: https://hib.azurehdinsight.net
  • AppId: 7865c1d2-f040-46cc-875f-831a1ef6a28a
  • Izin: (name: Cluster.ReadWrite, id: 8f89faa0-ffef-4007-974d-4989b39ad77d)

Setelah Anda memperoleh token OAuth, gunakan token tersebut di header otorisasi permintaan HTTP ke gateway kluster (misalnya, https://<clustername>-int.azurehdinsight.net). Sampel perintah curl ke Apache Livy API mungkin terlihat seperti contoh ini:

curl -k -v -H "Authorization: Bearer Access_TOKEN" -H "Content-Type: application/json" -X POST -d '{ "file":"wasbs://mycontainer@mystorageaccount.blob.core.windows.net/data/SparkSimpleTest.jar", "className":"com.microsoft.spark.test.SimpleFile" }' "https://<clustername>-int.azurehdinsight.net/livy/batches" -H "X-Requested-By:<username@domain.com>"

Untuk menggunakan Beeline dan Livy, Anda juga dapat mengikuti kode sampel yang disediakan di sini guna menyiapkan klien Anda untuk menggunakan OAuth dan tersambung ke kluster.

FAQ

Aplikasi apa yang dibuat oleh HDInsight di Azure Active Directory?

Untuk setiap kluster, aplikasi pihak ketiga akan terdaftar di AAD dengan kluster uri sebagai identifierUri (seperti https://clustername.azurehdinsight.net ).

Di AAD, persetujuan diperlukan untuk semua aplikasi pihak ketiga sebelum dapat mengautentikasi pengguna atau mengakses data.

Microsoft Graph api memungkinkan Anda mengotomatiskan persetujuan, lihat dokumentasi API Urutan untuk mengotomatiskan persetujuan adalah:

  • Daftarkan aplikasi dan berikan izin Application.ReadWrite.All untuk aplikasi, guna mengakses Microsoft Graph
  • Setelah cluster dibuat, kueri untuk aplikasi cluster berdasarkan pengidentifikasi uri
  • Mendaftarkan persetujuan untuk aplikasi

Ketika kluster dihapus, HDInsight akan menghapus aplikasi dan Anda tidak perlu menghapus persetujuan apa pun.

Langkah berikutnya