Bagikan melalui


Mengonfigurasi titik akhir online yang aman dengan TLS/SSL

Artikel ini menunjukkan cara mengamankan titik akhir online Kubernetes yang dibuat melalui Azure Pembelajaran Mesin.

Anda menggunakan HTTPS untuk membatasi akses ke titik akhir online dan membantu mengamankan data yang dikirim klien. HTTPS mengenkripsi komunikasi antara klien dan titik akhir online menggunakan Transport Layer Security (TLS). TLS terkadang masih disebut Secure Sockets Layer (SSL), yang merupakan pendahulu TLS.

Tip

  • Secara khusus, titik akhir online Kubernetes mendukung TLS versi 1.2 untuk Azure Kubernetes Service (AKS) dan Kubernetes dengan dukungan Azure Arc.
  • Inferensi TLS versi 1.3 untuk Azure Pembelajaran Mesin Kubernetes tidak didukung.

TLS dan SSL mengandalkan sertifikat digital, yang membantu enkripsi dan verifikasi identitas. Untuk informasi selengkapnya tentang cara kerja sertifikat digital, lihat topik Wikipedia public_key_infrastructure.

Peringatan

Jika Anda tidak menggunakan HTTPS untuk titik akhir online Anda, data yang dikirim ke dan dari layanan mungkin terlihat oleh orang lain di internet.

HTTPS juga memungkinkan klien untuk memverifikasi keaslian server yang tersambung. Fitur ini melindungi klien dari serangan man-in-the-middle.

Berikut ini merupakan proses umum untuk mengamankan titik akhir online:

  1. Mendapatkan nama domain.

  2. Mendapatkan sertifikat digital.

  3. Mengonfigurasi TLS/SSL pada ekstensi Azure Machine Learning.

  4. Memperbarui DNS Anda dengan nama domain yang sepenuhnya memenuhi syarat (FQDN) untuk mengarah ke titik akhir online.

Penting

Anda perlu membeli sertifikat Anda sendiri untuk mendapatkan nama domain atau sertifikat TLS/SSL, lalu mengonfigurasinya di ekstensi Azure Pembelajaran Mesin. Untuk informasi selengkapnya, lihat bagian berikut dari artikel ini.

Mendapatkan nama domain

Jika Anda belum memiliki nama domain, beli dari pendaftar nama domain. Proses dan harga berbeda di antara pendaftar. Pendaftar menyediakan alat untuk mengelola nama domain. Anda menggunakan alat-alat ini untuk memetakan FQDN (seperti www.contoso.com) ke alamat IP yang menghosting titik akhir online Anda.

Untuk informasi selengkapnya tentang cara mendapatkan alamat IP titik akhir online Anda, lihat bagian Memperbarui DNS Anda dengan FQDN di artikel ini.

Mendapatkan sertifikat TLS/SSL

Ada banyak cara untuk mendapatkan sertifikat TLS/SSL (sertifikat digital). Yang paling umum adalah membelinya dari otoritas sertifikat. Terlepas dari tempat mendapatkan sertifikat, Anda memerlukan file berikut:

  • Sertifikat yang berisi rantai sertifikat lengkap dan dikodekan PEM
  • Kunci yang dikodekan PEM

Catatan

Kunci SSL dalam file PEM dengan perlindungan frase sandi tidak didukung.

Saat meminta sertifikat, Anda harus memberikan FQDN alamat yang Anda rencanakan untuk digunakan untuk titik akhir online (misalnya, www.contoso.com). Alamat yang dicap ke dalam sertifikat dan alamat yang digunakan klien dibandingkan dengan memverifikasi identitas titik akhir online. Jika alamat tersebut tidak cocok, klien akan mendapatkan pesan kesalahan.

Untuk informasi selengkapnya tentang cara mengonfigurasi pita IP dengan FQDN, lihat bagian Memperbarui DNS Anda dengan FQDN di artikel ini.

Tip

Jika otoritas sertifikat tidak dapat memberikan sertifikat dan kunci sebagai file yang dikodekan PEM, Anda dapat menggunakan alat seperti OpenSSL untuk mengubah format.

Peringatan

Gunakan sertifikat yang ditandatangani sendiri hanya untuk pengembangan. Jangan menggunakannya di lingkungan produksi. Sertifikat yang ditandatangani sendiri dapat menyebabkan masalah dalam aplikasi klien Anda. Untuk informasi selengkapnya, lihat dokumentasi untuk pustaka jaringan yang digunakan aplikasi klien Anda.

Konfigurasikan TLS/SSL pada ekstensi Azure Machine Learning

Untuk titik akhir online Kubernetes yang diatur untuk menggunakan HTTPS inferensi untuk koneksi aman, Anda dapat mengaktifkan penghentian TLS dengan pengaturan konfigurasi penyebaran saat Anda menyebarkan ekstensi Azure Pembelajaran Mesin di kluster Kubernetes.

Pada waktu penyebaran untuk ekstensi Azure Pembelajaran Mesin, allowInsecureConnections pengaturan konfigurasi secara False default. Untuk memastikan keberhasilan penyebaran ekstensi, Anda perlu menentukan sslSecret pengaturan konfigurasi atau kombinasi pengaturan sslKeyPemFile yang dilindungi konfigurasi dan sslCertPemFile . Jika tidak, Anda dapat mengatur allowInsecureConnections=True untuk mendukung HTTP dan menonaktifkan penghentian TLS.

Catatan

Untuk mendukung titik akhir online HTTPS, allowInsecureConnections harus diatur ke False.

Untuk mengaktifkan titik akhir HTTPS untuk inferensi real-time, Anda perlu menyediakan sertifikat dan kunci TLS/SSL yang dikodekan PEM. Ada dua cara untuk menentukan sertifikat dan kunci pada waktu penyebaran untuk ekstensi Azure Pembelajaran Mesin:

  • Tentukan sslSecret pengaturan konfigurasi.
  • Tentukan kombinasi pengaturan sslCertPemFile yang dilindungi konfigurasi.slKeyPemFile

Mengonfigurasi sslSecret

Praktik terbaiknya adalah menyimpan sertifikat dan kunci pada rahasia Kubernetes dalam namespace azureml.

Untuk mengonfigurasi sslSecret, Anda perlu menyimpan rahasia Kubernetes di kluster Kubernetes di azureml namespace layanan untuk menyimpan cert.pem (sertifikat TLS/SSL yang dikodekan PEM) dan key.pem (kunci TLS/SSL yang dikodekan PEM).

Kode berikut adalah contoh definisi YAML dari rahasia TLS/SSL:

apiVersion: v1
data:
  cert.pem: <PEM-encoded SSL certificate> 
  key.pem: <PEM-encoded SSL key>
kind: Secret
metadata:
  name: <secret name>
  namespace: azureml
type: Opaque

Setelah menyimpan rahasia di kluster, Anda dapat menggunakan perintah Azure CLI berikut untuk menentukan sslSecret sebagai nama rahasia Kubernetes ini. (Perintah ini hanya akan berfungsi jika Anda menggunakan AKS.)

   az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config inferenceRouterServiceType=LoadBalancer sslSecret=<Kubernetes secret name> sslCname=<ssl cname> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster

Mengonfigurasi sslCertPemFile dan sslKeyPemFile

Anda dapat menentukan sslCertPemFile pengaturan konfigurasi untuk menjadi jalur ke file sertifikat TLS/SSL yang dikodekan PEM, dan sslKeyPemFile pengaturan konfigurasi untuk menjadi jalur ke file kunci TLS/SSL yang dikodekan PEM.

Contoh berikut menunjukkan cara menggunakan Azure CLI untuk menentukan file PEM ke ekstensi Azure Pembelajaran Mesin yang menggunakan sertifikat TLS/SSL yang Anda beli. Contoh mengasumsikan bahwa Anda menggunakan AKS.

   az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableInference=True inferenceRouterServiceType=LoadBalancer sslCname=<ssl cname> --config-protected sslCertPemFile=<file-path-to-cert-PEM> sslKeyPemFile=<file-path-to-cert-KEY> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster

Catatan

  • File PEM dengan perlindungan frasa sandi belum didukung.
  • Baik sslCertPemFIle dan sslKeyPemFIle gunakan parameter yang dilindungi konfigurasi. Mereka tidak mengonfigurasi sslSecret dan sslCertPemFile/sslKeyPemFile pada saat yang sama.

Memperbarui DNS Anda dengan FQDN

Untuk penyebaran model pada titik akhir online Kubernetes dengan sertifikat kustom, Anda harus memperbarui catatan DNS Anda untuk menunjuk ke alamat IP titik akhir online. Layanan router inferensi Azure Pembelajaran Mesin (azureml-fe) menyediakan alamat IP ini. Untuk informasi selengkapnya tentang azureml-fe, lihat Router inferensi azure Pembelajaran Mesin terkelola.

Untuk memperbarui catatan DNS untuk nama domain kustom Anda:

  1. Dapatkan alamat IP titik akhir online dari URI penilaian, yang biasanya dalam format http://104.214.29.152:80/api/v1/service/<service-name>/score. Dalam contoh ini, alamat IPnya adalah 104.214.29.152.

    Setelah Anda mengonfigurasi nama domain kustom, nama domain kustom akan menggantikan alamat IP di URI penilaian. Untuk kluster Kubernetes yang menggunakan LoadBalancer sebagai layanan router inferensi, azureml-fe diekspos secara eksternal melalui load balancer penyedia cloud dan penghentian TLS/SSL. Alamat IP titik akhir online Kubernetes adalah alamat IP eksternal dari layanan yang azureml-fe disebarkan dalam kluster.

    Jika Anda menggunakan AKS, Anda bisa mendapatkan alamat IP dari portal Azure. Buka halaman sumber daya AKS Anda, buka Layanan dan ingress, lalu temukan layanan azureml-fe di bawah namespace layanan azuerml . Kemudian Anda dapat menemukan alamat IP di kolom IP Eksternal.

    Cuplikan layar menambahkan ekstensi baru ke kluster Kubernetes dengan dukungan Azure Arc dari portal Azure.

    Selain itu, Anda dapat menjalankan perintah kubectl describe svc azureml-fe -n azureml Kubernetes di kluster untuk mendapatkan alamat IP dari LoadBalancer Ingress parameter dalam output.

    Catatan

    Untuk kluster Kubernetes yang menggunakan salah satu nodePort atau clusterIP sebagai layanan router inferensi, Anda perlu menyiapkan solusi penyeimbangan beban Anda sendiri dan penghentian TLS/SSL untuk azureml-fe. Anda juga perlu mendapatkan alamat azureml-fe IP layanan dalam cakupan kluster.

  2. Gunakan alat dari pendaftar nama domain Anda guna memperbarui catatan DNS untuk nama domain Anda. Rekaman memetakan FQDN (misalnya, www.contoso.com) ke alamat IP. Catatan harus menunjuk ke alamat IP titik akhir online.

    Tip

    Microsoft tidak bertanggung jawab untuk memperbarui DNS untuk nama dns atau sertifikat kustom Anda. Anda harus memperbaruinya dengan registrar nama domain Anda.

  3. Setelah pembaruan catatan DNS, Anda bisa memvalidasi resolusi DNS dengan menggunakan nslookup custom-domain-name perintah . Jika catatan DNS diperbarui dengan benar, nama domain kustom akan menunjuk ke alamat IP titik akhir online.

    Mungkin ada penundaan menit atau jam sebelum klien dapat menyelesaikan nama domain, tergantung pada pencatat dan waktu hidup (TTL) yang dikonfigurasi untuk nama domain.

Untuk informasi selengkapnya tentang resolusi DNS dengan Azure Machine Learning, lihat Cara menggunakan ruang kerja Anda dengan server DNS kustom.

Memperbarui sertifikat TLS/SSL

Sertifikat TLS/SSL kedaluwarsa dan harus diperpanjang. Biasanya, ini terjadi setiap tahun. Gunakan informasi dalam langkah-langkah berikut untuk memperbarui dan memperbarui sertifikat untuk model yang disebarkan ke Kubernetes (AKS dan Kubernetes dengan dukungan Azure Arc):

  1. Gunakan dokumentasi dari otoritas sertifikat untuk memperbarui sertifikat. Proses ini membuat file sertifikat baru.

  2. Perbarui ekstensi Azure Pembelajaran Mesin Anda dan tentukan file sertifikat baru dengan menggunakan az k8s-extension update perintah .

    Jika Anda menggunakan rahasia Kubernetes untuk mengonfigurasi TLS/SSL sebelumnya, Anda harus terlebih dahulu memperbarui rahasia Kubernetes dengan konfigurasi cert.pem dan key.pem baru di kluster Kubernetes Anda. Kemudian jalankan perintah pembaruan ekstensi untuk memperbarui sertifikat:

       az k8s-extension update --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config inferenceRouterServiceType=LoadBalancer sslSecret=<Kubernetes secret name> sslCname=<ssl cname> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
    

    Jika Anda langsung mengonfigurasi file PEM dalam perintah penyebaran ekstensi sebelumnya, Anda perlu menjalankan perintah pembaruan ekstensi dan menentukan jalur file PEM baru:

       az k8s-extension update --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config sslCname=<ssl cname> --config-protected sslCertPemFile=<file-path-to-cert-PEM> sslKeyPemFile=<file-path-to-cert-KEY> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
    

Menonaktifkan TLS

Untuk menonaktifkan TLS untuk model yang disebarkan ke Kubernetes:

  1. Perbarui ekstensi Azure Pembelajaran Mesin dengan allowInsercureconnection diatur ke True.

  2. sslCname Hapus pengaturan konfigurasi, bersama dengan sslSecret pengaturan konfigurasi atau sslPem .

  3. Jalankan perintah Azure CLI berikut di kluster Kubernetes Anda, lalu lakukan pembaruan. Perintah ini mengasumsikan bahwa Anda menggunakan AKS.

       az k8s-extension update --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableInference=True inferenceRouterServiceType=LoadBalancer allowInsercureconnection=True --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
    

Peringatan

Secara default, penyebaran ekstensi Azure Pembelajaran Mesin mengharapkan pengaturan konfigurasi untuk dukungan HTTPS. Kami merekomendasikan dukungan HTTP hanya untuk tujuan pengembangan atau pengujian. allowInsecureConnections=True Pengaturan konfigurasi menyediakan dukungan HTTP.

Langkah berikutnya

Pelajari cara: