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:
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í aslKeyPemFile
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
IsslCertPemFIle
použijte parametry chráněné konfigurací. Nenakonfigurují asslCertPemFile
/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-fe
najdete v tématu Spravovaný směrovač odvozování služby Azure Machine Learning.
Aktualizace záznamu DNS pro vlastní název domény:
Získejte IP adresu online koncového bodu z hodnoticího identifikátoru
http://104.214.29.152:80/api/v1/service/<service-name>/score
URI, 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 adresaazureml-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.
Kromě toho můžete v clusteru spustit příkaz
kubectl describe svc azureml-fe -n azureml
Kubernetes a získat IP adresu z parametruLoadBalancer Ingress
ve výstupu.Poznámka
Pro clustery Kubernetes, které jako službu směrovače odvozování používají buď
nodePort
neboclusterIP
, je potřeba 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.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.
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):
K obnovení certifikátu použijte dokumentaci od certifikační autority. Tento proces vytvoří nové soubory certifikátů.
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:
Aktualizujte rozšíření Azure Machine Learning nastavením
allowInsercureconnection
naTrue
.sslCname
Odeberte nastavení konfigurace spolu ssslSecret
nastavením konfigurace nebosslPem
.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: