Konfigurace zabezpečeného online koncového bodu s protokolem 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.

Protokol HTTPS se používá k omezení přístupu k online koncovým bodům a k zabezpečení dat odesílaných klienty. 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 ve službě Azure Machine Learning se nepodporuje.

Protokoly TLS i SSL se spoléhají na digitální certifikáty, které pomáhají s šifrováním a ověřováním identity. Další informace o tom, jak digitální certifikáty fungují, najdete v tématu wikipedie public_key_infrastructure.

Upozornění

Pokud pro online koncové body nepoužíváte HTTPS, data odesílaná do a ze služby můžou být 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 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 zakoupit vlastní certifikát a pak je 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ě název domény nevlastníte, kupte si ho u registrátora názvů domén. Postup 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 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 zakoupení od certifikační autority. Bez ohledu na to, kde certifikát získáte, budete potřebovat následující soubory:

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

Poznámka

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

Při žádosti o 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 vyražená do certifikátu, a adresa, kterou používají klienti, se porovnávají za účelem ověření identity online koncového bodu. Pokud se tyto adresy neshodují, zobrazí se klientovi chybová zpráva.

Další informace o konfiguraci bandingu IP adres s plně kvalifikovaným názvem domény najdete v části Aktualizace DNS pomocí plně kvalifikovaného názvu domény v tomto článku.

Tip

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

Upozornění

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é vaše klientská aplikace používá.

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

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

V době nasazení rozšíření allowInsecureConnections Azure Machine Learning je False nastavení konfigurace ve výchozím nastavení. Pokud chcete zajistit úspěšné nasazení rozšíření, musíte zadat buď sslSecret nastavení konfigurace, nebo kombinaci sslKeyPemFile a sslCertPemFile nastavení chráněných konfigurací. Jinak 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íč TLS/SSL s kódováním PEM. Existují dva způsoby, jak zadat certifikát a klíč v době nasazení pro rozšíření Azure Machine Learning:

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

Konfigurace sslSecret

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

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

Následující kód je ukázkovou definicí tajného kódu TLS/SSL ve formátu YAML:

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 v clusteru můžete pomocí následujícího příkazu Azure CLI zadat sslSecret název tohoto tajného kódu 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 jako cestu k souboru certifikátu TLS/SSL s kódováním PEM a sslKeyPemFile nastavení konfigurace jako cesta k souboru klíčů TLS/SSL zakódovanému PEM.

Následující příklad ukazuje, jak pomocí Azure CLI zadat soubory PEM do rozšíření Služby Azure Machine Learning, které používá zakoupený certifikát TLS/SSL. Příklad 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.
  • sslKeyPemFIle I sslCertPemFIle použijte parametry chráněné konfigurací. Nenakonfigurují a sslCertPemFile/sslKeyPemFile nekonfigurují sslSecret současně.

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. Tuto IP adresu poskytuje služba odvozovací směrovače služby Azure Machine Learning (azureml-fe). Další informace o azureml-fenajdete v tématu Spravovaný směrovač odvozování služby Azure Machine Learning.

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

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

    Po nakonfigurování vlastního názvu domény nahradí IP adresu v hodnoticím identifikátoru URI. V případě clusterů Kubernetes, které používají LoadBalancer službu směrovače pro odvozování, azureml-fe je k dispozici externě 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 Azure Portal. Přejděte na stránku prostředku AKS, přejděte do části Služba a příchozí přenos dat a pak v oboru názvů azuerml vyhledejte službu azureml-fe. Ip adresu pak najdete 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 Azure Portal

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

    Poznámka

    Pro clustery Kubernetes, které jako službu směrovače odvozování používají buď nodePort nebo clusterIP , je potřeba 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. K aktualizaci záznamu DNS pro váš název domény použijte nástroje od vašeho registrátora názvů domén. 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

    Microsoft nezodppovídá za aktualizaci DNS pro váš vlastní název DNS nebo certifikát. Musíte ho aktualizovat u svého registrátora názvu domény.

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

    Než klienti přeloží název domény, může trvat několik minut nebo hodin v závislosti na registrátorovi a hodnotě TTL (Time to Live), která je pro název domény nakonfigurovaná.

Další informace o překladu DNS pomocí služby 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. Aktualizujte své rozšíření Azure Machine Learning a pomocí příkazu zadejte nové soubory az k8s-extension update certifikátů.

    Pokud jste dříve ke konfiguraci PROTOKOLU TLS/SSL použili tajný klíč Kubernetes, musíte nejdřív aktualizovat tajný klíč Kubernetes pomocí nové konfigurace cert.pem a key.pem ve vašem clusteru Kubernetes. Potom spusťte příkaz aktualizace 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 dříve přímo nakonfigurovali soubory PEM v příkazu nasazení rozšíření, 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ý do Kubernetes:

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

  2. sslCname Odeberte nastavení konfigurace spolu s sslSecret nastavením konfigurace nebosslPem.

  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
    

Upozornění

Nasazení rozšíření Azure Machine Learning ve výchozím nastavení očekává nastavení konfigurace pro podporu HTTPS. Podporu PROTOKOLU HTTP doporučujeme jenom pro účely vývoje nebo testování. Nastavení allowInsecureConnections=True konfigurace poskytuje podporu protokolu HTTP.

Další kroky

Naučte se: