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:
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ýchsslCertPemFile
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í asslKeyPemFIle
jejich použití Nenakonfigurují asslCertPemFile
/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-fe
spravovaném směrovači odvozování ve službě Azure Machine Learning.
Aktualizace záznamu DNS pro vlastní název domény:
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 adresaazureml-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.
Kromě toho můžete ve svém clusteru spustit příkaz
kubectl describe svc azureml-fe -n azureml
Kubernetes a získat IP adresu zLoadBalancer Ingress
parametru ve výstupu.Poznámka:
Pro clustery Kubernetes, které používají buď
nodePort
neboclusterIP
jako službu odvozovací směrovače, musíte nastavit vlastní řešení vyrovnávání zatížení a ukončení protokolu TLS/SSL proazureml-fe
. Musíte také získat IP adresuazureml-fe
služby v oboru clusteru.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.
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):
K obnovení certifikátu použijte dokumentaci od certifikační autority. Tento proces vytvoří nové soubory certifikátů.
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:
Aktualizujte rozšíření Azure Machine Learning nastavením
allowInsercureconnection
naTrue
.sslCname
Odeberte nastavení konfigurace spolu ssslSecret
nastavením konfigurace nebosslPem
nastavením konfigurace.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: