TLS használata webszolgáltatás védelméhez az Azure Machine Learning szolgáltatás segítségével

Ez a cikk bemutatja, hogyan biztosíthatja egy webszolgáltatás biztonságossá Azure Machine Learning.

A HTTPS használatával korlátozhatja a webszolgáltatásokhoz való hozzáférést, és biztosíthatja az ügyfelek által beküldő adatok biztonságát. A HTTPS a kettő közötti kommunikáció titkosítása révén segíti az ügyfél és a webszolgáltatás közötti kommunikációt. A titkosítás a Transport Layer Security (TLS) protokollt használja. A TLS-t néha továbbra is SSL (SSL) néven is nevezik, amely a TLS elődje volt.

Tipp

A Azure Machine Learning SDK az "SSL" kifejezést használja a biztonságos kommunikációhoz kapcsolódó tulajdonságokhoz. Ez nem jelenti azt, hogy a webszolgáltatás nem használ TLS-t. Az SSL csak egy elterjedtebb kifejezés.

Az AKS és az ACI Azure Machine Learning TLS 1.2-es verzióját támogató webszolgáltatások. Az ACI-környezetek esetén, ha régebbi TLS-verziót telepít, javasoljuk, hogy a legújabb TLS-verzió lehozása érdekében telepítse újra az üzembe helyezést.

TLS 1.3-as Azure Machine Learning – Az AKS-következtetés nem támogatott.

A TLS és az SSL egyaránt a digitális tanúsítványokra támaszkodik, amelyek segítenek a titkosításban és a személyazonosság ellenőrzésében. A digitális tanúsítványok mikéntjéről a Wikipedia nyilvános kulcsú infrastruktúrával kapcsolatos témakörében található további információ.

Figyelmeztetés

Ha nem használ HTTPS-t a webszolgáltatáshoz, előfordulhat, hogy a szolgáltatásból küldött és onnan küldött adatok láthatók lesznek mások számára az interneten.

A HTTPS azt is lehetővé teszi, hogy az ügyfél ellenőrizze annak a kiszolgálónak a hitelességét, amelyhez csatlakozik. Ez a funkció megvédi az ügyfeleket a "man-in-the-middle" támadásoktól.

Ez a webszolgáltatás biztonságossá tere általános folyamata:

  1. Tartománynév lekérte.

  2. Digitális tanúsítvány lekérve.

  3. A webszolgáltatás üzembe helyezése vagy frissítése engedélyezett TLS-sel.

  4. Frissítse a DNS-t úgy, hogy a webszolgáltatásra mutasson.

Fontos

Ha az üzembe helyezést az Azure Kubernetes Service (AKS) szolgáltatásban telepíti, vásárolhat saját tanúsítványt, vagy használhat egy, a Microsoft által biztosított tanúsítványt. Ha a Microsofttól származó tanúsítványt használ, nem kell tartománynevet vagy TLS-/SSL-tanúsítványt lekérni. További információért tekintse meg a cikk TLS engedélyezése és üzembe helyezése című szakaszát.

Ha az üzemelő példányok között van néhány kisebb különbség.

Tartománynév beszerzése

Ha még nem rendelkezik tartománynévvel, vásároljon egyet egy tartománynév-regisztrálótól. A folyamat és az ár a regisztrálók között eltérő. A regisztráló eszközöket biztosít a tartománynév kezeléséhez. Ezekkel az eszközökkel leképez egy teljes tartománynevet (FQDN) (például www contoso.com) a . webszolgáltatást tartalmazó IP-címre.

TLS-/SSL-tanúsítvány lekérve

TLS-/SSL-tanúsítványt (digitális tanúsítványt) számos módon lehet lekérni. A leggyakrabban hitelesítésszolgáltatótól (CA) vásárolnak egyet. A tanúsítvány helyétől függetlenül a következő fájlokra lesz szüksége:

  • Egy tanúsítvány. A tanúsítványnak tartalmaznia kell a teljes tanúsítványláncot, és "PEM-kódolásúnak" kell lennie.
  • Egy kulcs. A kulcsnak PEM-kódolásúnak is kell lennie.

Tanúsítvány igénylésekor meg kell adnia annak a címnek a teljes tartományát, amit a webszolgáltatáshoz használni fog (például www . contoso.com). A tanúsítványba bélyegzett címet és az ügyfelek által használt címet összehasonlítja a webszolgáltatás identitásának ellenőrzéséhez. Ha ezek a címek nem egyeznek, az ügyfél hibaüzenetet kap.

Tipp

Ha a hitelesítésszolgáltató nem tudja PEM-kódolású fájlként megadni a tanúsítványt és a kulcsot, a formátumot egy olyan segédprogrammal módosíthatja, mint az OpenSSL.

Figyelmeztetés

Önaírt tanúsítványokat csak fejlesztéshez használjon. Éles környezetben ne használja őket. Az önaírt tanúsítványok problémákat okozhatnak az ügyfélalkalmazásban. További információért tekintse meg az ügyfélalkalmazás által használt hálózati kódtárak dokumentációját.

A TLS engedélyezése és üzembe helyezése

AKS-telepítés esetén engedélyezheti a TLS-leépítést, amikor AKS-fürtöt hoz létre vagy csatol az AML-munkaterületen. Az AKS-modell üzembe helyezésekor letilthatja a TLS-megszakítást az üzembe helyezési konfigurációs objektummal, ellenkező esetben az AKS-modell összes üzembe helyezése alapértelmezés szerint engedélyezve lesz a TLS-leállítva az AKS-fürt létrehozási vagy csatolási ideje alatt.

Az ACI üzembe helyezése esetén engedélyezheti a TLS-megszakítást a modell üzembe helyezésekor az üzembe helyezés konfigurációs objektumával.

Üzembe helyezés Azure Kubernetes Service

Megjegyzés

Az ebben a szakaszban található információk akkor is érvényesek, ha biztonságos webszolgáltatást helyez üzembe a tervező számára. Ha még nem ismeri a Python SDK-t, tekintse meg a Mi a Pythonhoz készült Azure Machine Learning SDK?( Mi az a Pythonhoz készült Azure Machine Learning SDK? ).

Amikor AKS-fürtöt hoz létre vagy csatol az AML-munkaterületen, engedélyezheti a TLS AksCompute.provisioning_configuration() és AksCompute.attach_configuration() konfigurációs objektumokkal. Mindkét metódus egy konfigurációs objektumot ad vissza, amely enable_ssl metódussal rendelkezik, és a enable_ssl használatával engedélyezheti a TLS-t.

A TLS-t Microsoft-tanúsítvánnyal vagy a hitelesítésszolgáltatótól vásárolt egyéni tanúsítvánnyal engedélyezheti.

  • Ha a Microsoft tanúsítványát használja, a következő paramétert kell leaf_domain_label: . Ez a paraméter létrehozza a szolgáltatás DNS-nevét. A "contoso" érték például a "contoso " tartománynevet hozza <six-random-characters> <azureregion> létre. cloudapp.azure.com", ahol <azureregion> a a szolgáltatást tartalmazó régió. A meglévő paramétert a overwrite_existing_domain is felülírhatja leaf_domain_label. Az alábbi példa bemutatja, hogyan hozhat létre olyan konfigurációt, amely lehetővé teszi a Microsoft-tanúsítvánnyal való TLS használatát:

    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")
    

    Fontos

    Ha Microsoft-tanúsítványt használ, nem kell saját tanúsítványt vagy tartománynevet vásárolnia.

    Figyelmeztetés

    Ha az AKS-fürt belső terheléseltöltővel van konfigurálva, a Microsoft által biztosított tanúsítvány használata nem támogatott, és egyéni tanúsítványt kell használnia a TLS engedélyezéséhez.

  • Ha a megvásárolt egyéni tanúsítványt használja, a ssl_cert_pem_file , ssl_key_pem_file és ssl_cname paramétereket. Az alábbi példa bemutatja, hogyan használhatók a .pem-fájlok a megvásárolt TLS/SSL-tanúsítványt használó konfigurációk létrehozására:

    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")
    

További információ a enable_ssl: AksProvisioningConfiguration.enable_ssl() és AksAttachConfiguration.enable_ssl().

Üzembe helyezés az Azure Container Instancesben

Amikor üzembe helyez egy Azure Container Instances, meg kell adnia a TLS-sel kapcsolatos paraméterek értékeit az alábbi kódrészletben láthatóak szerint:

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")

További információ: AciWebservice.deploy_configuration().

A DNS frissítése

Az AKS egyéni tanúsítvánnyal vagy ACI-telepítéssel való üzembe helyezése esetén úgy kell frissítenie a DNS-rekordot, hogy a pontozási végpont IP-címére mutasson.

Fontos

Ha microsoftos tanúsítványt használ az AKS üzembe helyezéséhez, nem kell manuálisan frissítenie a fürt DNS-értékét. Az értéket automatikusan be kell állítani.

Az egyéni tartománynév DNS-rekordját a következő lépésekkel frissítheti:

  • Pontozási végpont IP-címének lekért címe a pontozási végpont URI-j ból, amely általában formátumban http://104.214.29.152:80/api/v1/service//score van.
  • A tartománynév-regisztráló eszközeivel frissítheti a tartománynév DNS-rekordját. A rekordnak a pontozási végpont IP-címére kell mutasson.
  • A DNS-rekord frissítése után a DNS-feloldást az nslookup custom-domain-name paranccsal ellenőrizheti. Ha a DNS-rekord megfelelően frissül, az egyéni tartománynév a pontozási végpont IP-címére fog mutasson.
  • A regisztrálótól és a tartománynévhez konfigurált "időtől" (TTL) függően előfordulhat, hogy néhány perc vagy óra is eltelik, amíg az ügyfelek feloldják a tartománynevet.

A TLS-/SSL-tanúsítvány frissítése

A TLS-/SSL-tanúsítványok lejárnak, és meg kell újítani őket. Ez általában minden évben megtörténik. A következő szakaszokban található információk segítségével frissítheti és újíthatja meg a tanúsítványt a Azure Kubernetes Service:

Microsoft által létrehozott tanúsítvány frissítése

Ha a tanúsítványt eredetileg a Microsoft generálta (a leaf_domain_label a szolgáltatás létrehozásához), akkor a tanúsítvány szükség esetén automatikusan megújul. Ha manuálisan szeretné megújítani, a következő példák egyikével frissítheti a tanúsítványt:

Fontos

  • Ha a meglévő tanúsítvány még érvényes, az (SDK) vagy a (CLI) használatával kényszeríti a konfiguráció renew=True --ssl-renew megújítását. Ha például a meglévő tanúsítvány 10 napig érvényes, és nem használja a tanúsítványt, előfordulhat, hogy a tanúsítvány renew=True nem újul meg.
  • A szolgáltatás eredeti üzembe helyezésekor a rendszer a minta alapján hoz létre leaf_domain_label DNS-nevet. <leaf-domain-label>######.<azure-region>.cloudapp.azure.com A meglévő név (beleértve az eredetileg létrehozott 6 számjegyet) megőrzéséhez használja az eredeti leaf_domain_label értéket. A létrehozott 6 számjegyet ne foglalja bele.

Az SDK használata

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)

A parancssori felület (CLI) használata

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

További információért tekintse meg a következő referencia-dokumentumokban:

Egyéni tanúsítvány frissítése

Ha a tanúsítványt eredetileg egy hitelesítésszolgáltató generálta, kövesse az alábbi lépéseket:

  1. A tanúsítvány megújítására használja a hitelesítésszolgáltató által biztosított dokumentációt. Ez a folyamat új tanúsítványfájlokat hoz létre.

  2. Az SDK vagy a CLI használatával frissítse a szolgáltatást az új tanúsítvánnyal:

    Az SDK használata

    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)
    

    A parancssori felület (CLI) használata

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

További információért tekintse meg az alábbi referencia-dokumentumokban:

TLS letiltása

Ha le szeretné tiltani a TLS-t a Azure Kubernetes Service üzembe helyezett modell esetében, hozzon létre egy et a SslConfiguration status="Disabled" segítségével, majd hajtson végre egy frissítést:

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)

Következő lépések

Az alábbiak végrehajtásának módját ismerheti meg: