Konfigurace zabezpečeného online koncového bodu pomocí protokolu TLS/SSL

V tomto článku se dozvíte, jak zabezpečit online koncový bod Kubernetes vytvořený prostřednictvím služby Azure Machine Learning.

Pomocí protokolu HTTPS omezíte přístup k online koncovým bodům a pomůžete zabezpečit data, která klienti odesílali. Protokol HTTPS šifruje komunikaci mezi klientem a online koncovým bodem pomocí protokolu TLS (Transport Layer Security). Protokol TLS se někdy stále označuje jako SSL (Secure Sockets Layer), což byl předchůdce protokolu TLS.

Tip

  • Konkrétně online koncové body Kubernetes podporují protokol TLS verze 1.2 pro Azure Kubernetes Service (AKS) a Kubernetes s podporou Azure Arc.
  • Protokol TLS verze 1.3 pro odvozování Kubernetes služby Azure Machine Learning není podporován.

Protokol TLS i SSL využívají digitální certifikáty, které pomáhají s ověřováním šifrování a identit. Další informace o tom, jak digitální certifikáty fungují, najdete v tématu Wikipedie public_key_infrastructure.

Upozorňující

Pokud pro své online koncové body nepoužíváte HTTPS, můžou být data odesílaná do a ze služby viditelná ostatním uživatelům na internetu.

HTTPS také umožňuje klientovi ověřit pravost serveru, ke kterému se připojuje. Tato funkce chrání klienty před útoky typu man-in-the-middle .

Následuje obecný postup zabezpečení online koncového bodu:

  1. Získání názvu domény

  2. Získání digitálního certifikátu

  3. Konfigurace protokolu TLS/SSL v rozšíření Azure Machine Learning.

  4. Aktualizace DNS s využitím plně kvalifikovaného názvu domény (FQDN) tak, aby odkazoval na online koncový bod.

Důležité

Abyste získali název domény nebo certifikát TLS/SSL, musíte si koupit vlastní certifikát a pak ho nakonfigurovat v rozšíření Azure Machine Learning. Podrobnější informace najdete v následujících částech tohoto článku.

Získání názvu domény

Pokud ještě nemáte název domény, kupte si ho od registrátora názvu domény. Proces a cena se u registrátorů liší. Registrátor poskytuje nástroje pro správu názvu domény. Pomocí těchto nástrojů můžete namapovat plně kvalifikovaný název domény (například www.contoso.com) na IP adresu, která je hostitelem vašeho online koncového bodu.

Další informace o tom, jak získat IP adresu vašich online koncových bodů, najdete v části Aktualizace DNS pomocí plně kvalifikovaného názvu domény tohoto článku.

Získání certifikátu TLS/SSL

Existuje mnoho způsobů, jak získat certifikát TLS/SSL (digitální certifikát). Nejběžnější je nákup od certifikační autority. Bez ohledu na to, kde certifikát získáte, potřebujete následující soubory:

  • Certifikát, který obsahuje úplný řetěz certifikátů a je kódovaný PEM
  • Klíč kódovaný PEM

Poznámka:

Klíč SSL v souboru PEM s ochranou přístupového hesla se nepodporuje.

Když požadujete certifikát, musíte zadat plně kvalifikovaný název domény adresy, kterou chcete použít pro online koncový bod (například www.contoso.com). Adresa, která je kolkovaná do certifikátu, a adresu, kterou klienti používají, se porovnává s ověřením identity online koncového bodu. Pokud se tyto adresy neshodují, klient obdrží chybovou zprávu.

Další informace o konfiguraci směrování IP pomocí plně kvalifikovaného názvu domény najdete v části Aktualizace DNS pomocí plně kvalifikovaného názvu domény tohoto článku.

Tip

Pokud certifikační autorita nemůže jako soubory kódované pomocí PEM poskytnout certifikát a klíč, můžete formát změnit pomocí nástroje, jako je OpenSSL .

Upozorňující

Certifikáty podepsané svým držitelem používejte jenom pro vývoj. Nepoužívejte je v provozních prostředích. Certifikáty podepsané svým držitelem můžou způsobit problémy v klientských aplikacích. Další informace najdete v dokumentaci k síťovým knihovnám, které klientská aplikace používá.

Konfigurace protokolu TLS/SSL v rozšíření Azure Machine Learning.

U online koncového bodu Kubernetes, který je nastavený na použití odvozování HTTPS pro zabezpečená připojení, můžete povolit ukončení protokolu TLS s nastavením konfigurace nasazení při nasazení rozšíření Azure Machine Learning v clusteru Kubernetes.

V době nasazení rozšíření allowInsecureConnections Azure Machine Learning je False ve výchozím nastavení nastavení konfigurace. Pokud chcete zajistit úspěšné nasazení rozšíření, musíte zadat sslSecret nastavení konfigurace nebo kombinaci nastavení chráněných sslKeyPemFile konfigurací.sslCertPemFile V opačném případě můžete nastavit allowInsecureConnections=True podporu protokolu HTTP a zakázat ukončení protokolu TLS.

Poznámka:

Pokud chcete podporovat online koncový bod HTTPS, allowInsecureConnections musí být nastavený na False.

Pokud chcete povolit koncový bod HTTPS pro odvozování v reálném čase, musíte zadat certifikát a klíč protokolu TLS/SSL s kódováním PEM. Certifikát a klíč v době nasazení pro rozšíření Azure Machine Learning můžete zadat dvěma způsoby:

  • sslSecret Zadejte nastavení konfigurace.
  • Zadejte kombinaci nastavení slKeyPemFile chráněných sslCertPemFile konfigurací.

Konfigurace sslSecret

Osvědčeným postupem je uložit certifikát a klíč do tajného kódu Kubernetes v azureml oboru názvů.

Pokud chcete nakonfigurovat sslSecret, musíte uložit tajný kód Kubernetes do clusteru Kubernetes v azureml oboru názvů, abyste mohli uložit certifikát TLS /SSL s kódováním PEM (certifikát TLS/SSL s kódováním PEM) a key.pem (klíč TLS/SSL kódovaný pomocí PEM).

Následující kód představuje ukázkovou definici YAML tajného kódu 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

Po uložení tajného kódu do clusteru můžete pomocí následujícího příkazu Azure CLI zadat sslSecret jako název tohoto tajného klíče Kubernetes. (Tento příkaz bude fungovat jenom v případě, že používáte 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

Konfigurace sslCertPemFile a sslKeyPemFile

Můžete zadat sslCertPemFile nastavení konfigurace, které má být cestou k souboru certifikátu TLS/SSL s kódováním PEM, a sslKeyPemFile nastavení konfigurace, které má být cestou k souboru klíče TLS/SSL s kódováním PEM.

Následující příklad ukazuje, jak pomocí Azure CLI zadat soubory PEM do rozšíření Azure Machine Learning, které používá certifikát TLS/SSL, který jste zakoupili. V příkladu se předpokládá, že používáte 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

Poznámka:

  • Soubor PEM s ochranou přístupového hesla se nepodporuje.
  • Parametry sslCertPemFIle chráněné konfigurací a sslKeyPemFIle jejich použití Nenakonfigurují a sslCertPemFile/sslKeyPemFile zároveň nekonfigurují.sslSecret

Aktualizace DNS pomocí plně kvalifikovaného názvu domény

V případě nasazení modelu na online koncovém bodu Kubernetes s vlastním certifikátem musíte aktualizovat záznam DNS tak, aby ukazoval na IP adresu tohoto online koncového bodu. Služba odvozovací směrovače služby Azure Machine Learning (azureml-fe) poskytuje tuto IP adresu. Další informace o azureml-fespravovaném směrovači odvozování ve službě Azure Machine Learning.

Aktualizace záznamu DNS pro vlastní název domény:

  1. Získejte IP adresu online koncového bodu z identifikátoru URI bodování, který je obvykle ve formátu http://104.214.29.152:80/api/v1/service/<service-name>/score. V tomto příkladu je IP adresa 104.214.29.152.

    Po nakonfigurování vlastního názvu domény nahradí IP adresu v identifikátoru URI bodování. Pro clustery Kubernetes, které se používají LoadBalancer jako služba odvozování směrovače, azureml-fe se externě zveřejňují prostřednictvím nástroje pro vyrovnávání zatížení poskytovatele cloudu a ukončení protokolu TLS/SSL. IP adresa online koncového bodu Kubernetes je externí IP adresa azureml-fe služby nasazené v clusteru.

    Pokud používáte AKS, můžete IP adresu získat z webu Azure Portal. Přejděte na stránku prostředku AKS, přejděte do služby a příchozího přenosu dat a pak vyhledejte službu azureml-fe v oboru názvů azuerml . Pak můžete ip adresu najít ve sloupci Externí IP adresa.

    Snímek obrazovky s přidáním nového rozšíření do clusteru Kubernetes s podporou Azure Arc z webu Azure Portal

    Kromě toho můžete ve svém clusteru spustit příkaz kubectl describe svc azureml-fe -n azureml Kubernetes a získat IP adresu z LoadBalancer Ingress parametru ve výstupu.

    Poznámka:

    Pro clustery Kubernetes, které používají buď nodePort nebo clusterIP jako službu odvozovací směrovače, musíte nastavit vlastní řešení vyrovnávání zatížení a ukončení protokolu TLS/SSL pro azureml-fe. Musíte také získat IP adresu azureml-fe služby v oboru clusteru.

  2. Pomocí nástrojů od registrátora názvu domény aktualizujte záznam DNS pro název vaší domény. Záznam mapuje plně kvalifikovaný název domény (například www.contoso.com) na IP adresu. Záznam musí odkazovat na IP adresu online koncového bodu.

    Tip

    Společnost Microsoft neodpovídá za aktualizaci DNS pro vlastní název NEBO certifikát DNS. Musíte ho aktualizovat u svého registrátora názvu domény.

  3. Po aktualizaci záznamu DNS můžete pomocí příkazu ověřit překlad nslookup custom-domain-name DNS. Pokud se záznam DNS správně aktualizuje, název vlastní domény bude odkazovat na IP adresu online koncového bodu.

    Než klienti budou moct přeložit název domény, může to mít zpoždění minut nebo hodin v závislosti na registrátorovi a času na živém (TTL), který je nakonfigurovaný pro název domény.

Další informace o překladu DNS ve službě Azure Machine Learning najdete v tématu Použití pracovního prostoru s vlastním serverem DNS.

Aktualizace certifikátu TLS/SSL

Platnost certifikátů TLS nebo SSL vyprší a je potřeba ji prodloužit. Obvykle k tomu dochází každý rok. Informace v následujících krocích použijte k aktualizaci a obnovení certifikátu pro modely nasazené do Kubernetes (AKS a Kubernetes s podporou Azure Arc):

  1. K obnovení certifikátu použijte dokumentaci od certifikační autority. Tento proces vytvoří nové soubory certifikátů.

  2. Pomocí příkazu aktualizujte rozšíření Azure Machine Learning a zadejte nové soubory az k8s-extension update certifikátů.

    Pokud jste dříve použili tajný klíč Kubernetes ke konfiguraci protokolu TLS/SSL, musíte nejprve aktualizovat tajný klíč Kubernetes pomocí nové konfigurace cert.pem a key.pem v clusteru Kubernetes. Potom spusťte příkaz update rozšíření a aktualizujte certifikát:

       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
    

    Pokud jste soubory PEM nakonfigurovali přímo v příkazu nasazení rozšíření dříve, musíte spustit příkaz aktualizace rozšíření a zadat cestu k novému souboru PEM:

       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
    

Zakázání protokolu TLS

Zakázání protokolu TLS pro model nasazený v Kubernetes:

  1. Aktualizujte rozšíření Azure Machine Learning nastavením allowInsercureconnection na True.

  2. sslCname Odeberte nastavení konfigurace spolu s sslSecret nastavením konfigurace nebo sslPem nastavením konfigurace.

  3. V clusteru Kubernetes spusťte následující příkaz Azure CLI a pak proveďte aktualizaci. Tento příkaz předpokládá, že používáte 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
    

Upozorňující

Ve výchozím nastavení nasazení rozšíření Azure Machine Learning očekává nastavení konfigurace pro podporu HTTPS. Doporučujeme podporu HTTP pouze pro účely vývoje nebo testování. Nastavení allowInsecureConnections=True konfigurace poskytuje podporu protokolu HTTP.

Další kroky

Naučte se: