Zabezpečení webové služby prostřednictvím služby Azure Machine Learning s využitím protokolu TLS

PLATÍ PRO:Sada Python SDK azureml v1

V tomto článku se dozvíte, jak zabezpečit webovou službu nasazenou prostřednictvím služby Azure Machine Learning.

Protokol HTTPS můžete použít k omezení přístupu k webovým službám a zabezpečení dat, která klienti odesílají. HTTPS pomáhá zabezpečit komunikaci mezi klientem a webovou službou tím, že šifruje komunikaci mezi těmito dvěma službami. Šifrování používá protokol TLS (Transport Layer Security). Protokol TLS se někdy stále označuje jako SSL (Secure Sockets Layer ), který byl předchůdcem protokolu TLS.

Tip

Sada Azure Machine Learning SDK používá termín "SSL" pro vlastnosti, které souvisejí se zabezpečenou komunikací. Neznamená to, že vaše webová služba nepoužívá protokol TLS. SSL je jen běžnější pojem.

Konkrétně webové služby nasazené prostřednictvím služby Azure Machine Learning podporují protokol TLS verze 1.2 pro AKS a ACI. Pokud používáte starší verzi protokolu TLS, doporučujeme pro nasazení ACI provést opětovné nasazení, abyste získali nejnovější verzi protokolu TLS.

Tls verze 1.3 pro Azure Machine Learning – Odvozování AKS 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 Infrastruktura veřejných klíčů na Wikipedii.

Upozornění

Pokud pro webovou službu 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 man-in-the-middle .

Obecný postup zabezpečení webové služby je následující:

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

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

  3. Nasazení nebo aktualizace webové služby s povoleným protokolem TLS

  4. Aktualizace záznamu DNS, aby odkazoval na webovou službu

Důležité

Pokud nasazujete do Azure Kubernetes Service (AKS), můžete si koupit vlastní certifikát nebo použít certifikát, který vám poskytne Microsoft. Pokud používáte certifikát od Microsoftu, nemusíte získat název domény ani certifikát TLS/SSL. Další informace najdete v části Povolení protokolu TLS a nasazení v tomto článku.

Při zabezpečení napříč cíli nasazení existují drobné rozdíly.

Důležité

Některé příkazy Azure CLI v tomto článku používají azure-cli-mlrozšíření , nebo v1 pro Azure Machine Learning. Podpora rozšíření v1 skončí 30. září 2025. Do tohoto data budete moct nainstalovat a používat rozšíření v1.

Doporučujeme přejít na mlrozšíření , nebo v2 do 30. září 2025. Další informace o rozšíření v2 najdete v tématech Rozšíření Azure ML CLI a Python SDK v2.

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 (FQDN) (například www.contoso.com) na IP adresu, která hostuje vaši webovou službu.

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 (CA). Bez ohledu na to, kde certifikát získáte, budete potřebovat následující soubory:

  • Certifikát. Certifikát musí obsahovat úplný řetěz certifikátů a musí být zakódovaný PEM.
  • Klíč. Klíč musí být také kódovaný PEM.

Při žádosti o certifikát musíte zadat plně kvalifikovaný název domény adresy, kterou chcete použít pro webovou službu (například www.contoso.com). Adresa, která je v certifikátu vyražená, a adresa, kterou klienti používají, se porovnávají k ověření identity webové služby. Pokud se tyto adresy neshodují, zobrazí se klientovi chybová zpráva.

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á.

Povolení protokolu TLS a nasazení

V případě nasazení AKS můžete při vytváření nebo připojování clusteru AKS v pracovním prostoru Azure Machine Learning povolit ukončení protokolu TLS. V době nasazení modelu AKS můžete ukončení protokolu TLS zakázat s objektem konfigurace nasazení, jinak bude mít při vytvoření nebo připojení clusteru AKS ve výchozím nastavení povolené ukončení protokolu TLS.

V případě nasazení ACI můžete v době nasazení modelu povolit ukončení protokolu TLS pomocí objektu konfigurace nasazení.

Nasazení v Azure Kubernetes Service

Poznámka

Informace v této části platí také při nasazení zabezpečené webové služby pro návrháře. Pokud nejste obeznámeni s používáním sady Python SDK, přečtěte si téma Co je sada Azure Machine Learning SDK pro Python.

Když v pracovním prostoru Azure Machine Learning vytvoříte nebo připojíte cluster AKS, můžete povolit ukončení protokolu TLS s objekty konfigurace AksCompute.provisioning_configuration() a AksCompute.attach_configuration(). Obě metody vrací objekt konfigurace, který má metodu enable_ssl , a k povolení protokolu TLS můžete použít metodu enable_ssl .

Protokol TLS můžete povolit buď s certifikátem Microsoftu, nebo s vlastním certifikátem zakoupeným od certifikační autority.

  • Pokud používáte certifikát od Microsoftu, musíte použít parametr leaf_domain_label . Tento parametr vygeneruje název DNS pro službu. Například hodnota "contoso" vytvoří název domény "contoso<six-random-characters>".< azureregion.cloudapp.azure.com>", kde <azureregion> je oblast, která obsahuje službu. Volitelně můžete k přepsání existující leaf_domain_label použít parametr overwrite_existing_domain. Následující příklad ukazuje, jak vytvořit konfiguraci, která povolí protokol TLS s certifikátem Microsoftu:

    from azureml.core.compute import AksCompute
    
    # Config used to create a new AKS cluster and enable TLS
    provisioning_config = AksCompute.provisioning_configuration()
    
    # Leaf domain label generates a name using the formula
    #  "<leaf-domain-label>######.<azure-region>.cloudapp.azure.com"
    #  where "######" is a random series of characters
    provisioning_config.enable_ssl(leaf_domain_label = "contoso")
    
    
    # Config used to attach an existing AKS cluster to your workspace and enable TLS
    attach_config = AksCompute.attach_configuration(resource_group = resource_group,
                                          cluster_name = cluster_name)
    
    # Leaf domain label generates a name using the formula
    #  "<leaf-domain-label>######.<azure-region>.cloudapp.azure.com"
    #  where "######" is a random series of characters
    attach_config.enable_ssl(leaf_domain_label = "contoso")
    

    Důležité

    Když používáte certifikát od Microsoftu, nemusíte si kupovat vlastní certifikát ani název domény.

  • Při použití vlastního certifikátu, který jste zakoupili, použijete parametry ssl_cert_pem_file, ssl_key_pem_file a ssl_cname . Soubor PEM s ochranou pro přístupové fráze není podporován. Následující příklad ukazuje použití souborů .pem k vytvoření konfigurace, která používá zakoupený certifikát TLS/SSL:

    from azureml.core.compute import AksCompute
    
    # Config used to create a new AKS cluster and enable TLS
    provisioning_config = AksCompute.provisioning_configuration()
    provisioning_config.enable_ssl(ssl_cert_pem_file="cert.pem",
                                        ssl_key_pem_file="key.pem", ssl_cname="www.contoso.com")
    
    # Config used to attach an existing AKS cluster to your workspace and enable SSL
    attach_config = AksCompute.attach_configuration(resource_group = resource_group,
                                         cluster_name = cluster_name)
    attach_config.enable_ssl(ssl_cert_pem_file="cert.pem",
                                        ssl_key_pem_file="key.pem", ssl_cname="www.contoso.com")
    

Další informace o enable_ssl najdete v tématech AksProvisioningConfiguration.enable_ssl() a AksAttachConfiguration.enable_ssl().

Nasazení v Azure Container Instances

Při nasazení do Azure Container Instances zadáte hodnoty parametrů souvisejících s protokolem TLS, jak ukazuje následující fragment kódu:

from azureml.core.webservice import AciWebservice

aci_config = AciWebservice.deploy_configuration(
    ssl_enabled=True, ssl_cert_pem_file="cert.pem", ssl_key_pem_file="key.pem", ssl_cname="www.contoso.com")

Další informace najdete v tématu AciWebservice.deploy_configuration().

Aktualizace DNS

V případě nasazení AKS s vlastním certifikátem nebo nasazení ACI musíte aktualizovat záznam DNS tak, aby ukazoval na IP adresu bodujícího koncového bodu.

Důležité

Když k nasazení AKS použijete certifikát od Microsoftu, nemusíte hodnotu DNS pro cluster aktualizovat ručně. Hodnota by se měla nastavit automaticky.

Pokud chcete aktualizovat záznam DNS pro vlastní název domény, postupujte následovně:

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

  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 bodujícího 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í příkazu nslookup custom-domain-name . Pokud se záznam DNS správně aktualizuje, bude název vlastní domény odkazovat na IP adresu bodujícího 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) 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 částech slouží k aktualizaci a obnovení certifikátu pro modely nasazené do Azure Kubernetes Service:

Aktualizace certifikátu vygenerovaného Microsoftem

Pokud certifikát původně vygeneroval Microsoft (při použití leaf_domain_label k vytvoření služby), v případě potřeby se automaticky prodlouží . Pokud ho chcete obnovit ručně, aktualizujte certifikát pomocí jednoho z následujících příkladů:

Důležité

  • Pokud je stávající certifikát stále platný, použijte renew=True (SDK) nebo --ssl-renew (CLI) k vynucení obnovení konfigurace. Tato operace se projeví přibližně po 5 hodinách.
  • Při původním nasazení leaf_domain_label služby se použije k vytvoření názvu DNS pomocí vzoru <leaf-domain-label>######.<azure-region>.cloudapp.azure.com. Chcete-li zachovat existující název (včetně původně vygenerovaných 6 číslic), použijte původní leaf_domain_label hodnotu. Nezahrnujte 6 vygenerovaných číslic.

Použití sady SDK

from azureml.core.compute import AksCompute
from azureml.core.compute.aks import AksUpdateConfiguration
from azureml.core.compute.aks import SslConfiguration

# Get the existing cluster
aks_target = AksCompute(ws, clustername)

# Update the existing certificate by referencing the leaf domain label
ssl_configuration = SslConfiguration(leaf_domain_label="myaks", overwrite_existing_domain=True, renew=True)
update_config = AksUpdateConfiguration(ssl_configuration)
aks_target.update(update_config)

Použití rozhraní příkazového řádku

PLATÍ PRO:Rozšíření Azure CLI ml v1

az ml computetarget update aks -g "myresourcegroup" -w "myresourceworkspace" -n "myaks" --ssl-leaf-domain-label "myaks" --ssl-overwrite-domain True --ssl-renew

Další informace najdete v následujících referenčních dokumentech:

Aktualizace vlastního certifikátu

Pokud certifikát původně vygenerovala certifikační autorita, postupujte následovně:

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

  2. K aktualizaci služby pomocí nového certifikátu použijte sadu SDK nebo rozhraní příkazového řádku:

    Použití sady SDK

    from azureml.core.compute import AksCompute
    from azureml.core.compute.aks import AksUpdateConfiguration
    from azureml.core.compute.aks import SslConfiguration
    
    # Read the certificate file
    def get_content(file_name):
        with open(file_name, 'r') as f:
            return f.read()
    
    # Get the existing cluster
    aks_target = AksCompute(ws, clustername)
    
    # Update cluster with custom certificate
    ssl_configuration = SslConfiguration(cname="myaks", cert=get_content('cert.pem'), key=get_content('key.pem'))
    update_config = AksUpdateConfiguration(ssl_configuration)
    aks_target.update(update_config)
    

    Použití rozhraní příkazového řádku

    PLATÍ PRO:Rozšíření Azure CLI ml v1

    az ml computetarget update aks -g "myresourcegroup" -w "myresourceworkspace" -n "myaks" --ssl-cname "myaks"--ssl-cert-file "cert.pem" --ssl-key-file "key.pem"
    

Další informace najdete v následujících referenčních dokumentech:

Zakázání protokolu TLS

Pokud chcete zakázat protokol TLS pro model nasazený do Azure Kubernetes Service, vytvořte SslConfiguration pomocí status="Disabled"a pak proveďte aktualizaci:

from azureml.core.compute import AksCompute
from azureml.core.compute.aks import AksUpdateConfiguration
from azureml.core.compute.aks import SslConfiguration

# Get the existing cluster
aks_target = AksCompute(ws, clustername)

# Disable TLS
ssl_configuration = SslConfiguration(status="Disabled")
update_config = AksUpdateConfiguration(ssl_configuration)
aks_target.update(update_config)

Další kroky

Naučte se: