Share via


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

A KÖVETKEZŐKRE VONATKOZIK:Python SDK azureml v1

Ez a cikk bemutatja, hogyan védheti meg az Azure Machine Learningen keresztül üzembe helyezett webszolgáltatást.

A HTTPS használatával korlátozhatja a webszolgáltatásokhoz való hozzáférést, és biztonságossá teheti az ügyfelek által beküldött adatokat. A HTTPS a kettő közötti kommunikáció titkosításával segíti az ügyfél és a webszolgáltatás közötti kommunikáció védelmét. A titkosítás a Transport Layer Security (TLS) protokollt használja. A TLS-t még mindig Secure Sockets Layernek (SSL) nevezik, amely a TLS elődje volt.

Tipp

Az 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 általánosan ismert kifejezés.

Az Azure Machine Learningen keresztül üzembe helyezett webszolgáltatások támogatják az AKS-hez és az ACI-hoz készült TLS 1.2-es verzióját. Az ACI-telepítések esetében, ha régebbi TLS-verziót használ, javasoljuk, hogy a legújabb TLS-verzió beszerzéséhez telepítse újra az üzembe helyezést.

TLS 1.3-es verzió az Azure Machine Learninghez – Az AKS-következtetés nem támogatott.

A TLS és az SSL egyaránt digitális tanúsítványokra támaszkodik, amelyek segítenek a titkosításban és az identitás-ellenőrzésben. A digitális tanúsítványok működésével kapcsolatos további információkért tekintse meg a Nyilvános kulcsú infrastruktúra Wikipedia-témakört.

Figyelmeztetés

Ha nem használja a HTTPS-t a webszolgáltatáshoz, előfordulhat, hogy a szolgáltatásba és a szolgáltatásból küldött adatok mások számára is láthatók lesznek 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ó védelmet nyújt az ügyfeleknek a közbeékelt támadások ellen.

Egy webszolgáltatás biztonságossá tételének általános folyamata a következő:

  1. Tartománynév beszerzése.

  2. Digitális tanúsítvány beszerzése.

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

  4. A DNS frissítése, hogy a webszolgáltatásra mutasson.

Fontos

Ha az Azure Kubernetes Service (AKS) szolgáltatásban végzi az üzembe helyezést, megvásárolhatja saját tanúsítványát, vagy használhatja a Microsoft által biztosított tanúsítványt. Ha Microsoft-tanúsítványt használ, nem kell tartománynevet vagy TLS-/SSL-tanúsítványt beszereznie. További információt a cikk TLS engedélyezése és üzembe helyezése című szakaszában talál.

Az üzembehelyezési célok között kis különbségek vannak.

Fontos

A cikkben szereplő Azure CLI-parancsok némelyike az Azure Machine Learning bővítményét azure-cli-mlvagy v1-et használja. A v1-bővítmény támogatása 2025. szeptember 30-án megszűnik. Addig a dátumig telepítheti és használhatja a v1 bővítményt.

Javasoljuk, hogy 2025. szeptember 30. előtt váltsa át a ml( vagy v2) bővítményt. A v2-es bővítménnyel kapcsolatos további információkért lásd: Azure ML CLI-bővítmény és Python SDK v2.

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 különbözik a regisztrálók között. A tartományregisztráló eszközöket biztosít a tartománynév kezeléséhez. Ezekkel az eszközökkel leképezett egy teljes tartománynevet (FQDN) (például www.contoso.com) a webszolgáltatást üzemeltető IP-címre.

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

A TLS/SSL-tanúsítvány (digitális tanúsítvány) beszerzésének számos módja van. A leggyakoribb az, ha egy hitelesítésszolgáltatótól vásárol egyet. Függetlenül attól, hogy hol kapja meg a tanúsítványt, a következő fájlokra van 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.

Amikor tanúsítványt kér, meg kell adnia a webszolgáltatáshoz használni kívánt cím teljes tartománynevét (például www.contoso.com). A rendszer összehasonlítja a tanúsítványba lebélyegzett címet és az ügyfelek által használt címet 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átum módosításához használhat egy segédprogramot, például az OpenSSL-t .

Figyelmeztetés

Csak fejlesztéshez használjon önaláírt tanúsítványokat. Ne használja őket éles környezetben. Az önaláírt tanúsítványok problémákat okozhatnak az ügyfélalkalmazásokban. További információké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

Az AKS üzembe helyezése esetén engedélyezheti a TLS leállítását, amikor AKS-fürtöt hoz létre vagy csatol az Azure Machine Learning-munkaterületen. Az AKS-modell üzembe helyezésekor letilthatja a TLS leállítását az üzembehelyezési konfigurációs objektummal, különben alapértelmezés szerint minden AKS-modell üzembe helyezése esetében engedélyezve lesz a TLS-lezárás az AKS-fürt létrehozásakor vagy csatolásakor.

ACI-telepítés esetén a modell üzembe helyezésekor engedélyezheti a TLS leállítását az üzembehelyezési konfigurációs objektummal.

Ü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 nem ismeri a Python SDK használatát, tekintse meg a Mi a Pythonhoz készült Azure Machine Learning SDK? című cikket.

Amikor AKS-fürtöt hoz létre vagy csatol az Azure Machine Learning-munkaterületen, engedélyezheti a TLS leállítását AksCompute.provisioning_configuration() és AksCompute.attach_configuration() konfigurációs objektumokkal. Mindkét metódus egy enable_ssl metódussal rendelkező konfigurációs objektumot ad vissza, és enable_ssl metódussal 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 Microsoft-tanúsítványt használ, a leaf_domain_label paramétert kell használnia. Ez a paraméter létrehozza a szolgáltatás DNS-nevét. A "contoso" érték például egy "contoso<hat véletlenszerű karakterből> álló" tartománynevet hoz létre.< azureregion.cloudapp.azure.com>", ahol <az azureregion> a szolgáltatást tartalmazó régió. Igény szerint a overwrite_existing_domain paraméter használatával felülírhatja a meglévő leaf_domain_label. Az alábbi példa bemutatja, hogyan hozhat létre olyan konfigurációt, amely microsoftos tanúsítvánnyal engedélyezi a TLS-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.

  • A megvásárolt egyéni tanúsítvány használatakor a ssl_cert_pem_file, ssl_key_pem_file és ssl_cname paramétereket kell használnia. A jelszóval védett PEM-fájl nem támogatott. Az alábbi példa bemutatja, hogyan hozhat létre .pem fájlokat egy megvásárolt TLS/SSL-tanúsítványt használó konfiguráció létrehozásához:

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

A enable_ssl kapcsolatos további információkért lásd: AksProvisioningConfiguration.enable_ssl() és AksAttachConfiguration.enable_ssl().

Üzembe helyezés az Azure Container Instancesben

A Azure Container Instances üzembe helyezésekor a TLS-hez kapcsolódó paraméterek értékeit adja meg, ahogy az alábbi kódrészlet mutatja:

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

Egyéni tanúsítvánnyal vagy ACI-telepítéssel rendelkező AKS-telepítés esetén frissítenie kell a DNS-rekordot, hogy a pontozási végpont IP-címére mutasson.

Fontos

Ha a Microsoft for AKS üzemelő példányának tanúsítványát használja, 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ának frissítéséhez kövesse az alábbi lépéseket:

  1. Szerezze be a pontozási végpont IP-címét a pontozó végpont URI-jából, amely általában a következő formátumban http://104.214.29.152:80/api/v1/service/<service-name>/scorevan: . Ebben a példában az IP-cím 104.214.29.152.

  2. A tartománynév-regisztráló eszközeivel frissítse a tartománynév DNS-rekordját. A rekord leképezi az FQDN-t (például www.contoso.com) az IP-címre. A rekordnak a pontozási végpont IP-címére kell mutatnia.

    Tipp

    A Microsoft nem felelős az egyéni DNS-név vagy tanúsítvány DNS-ének frissítéséért. Frissítenie kell a tartománynév-regisztrálóval.

  3. A DNS-rekord frissítése után az nslookup custom-domain-name paranccsal ellenőrizheti a DNS-feloldást. Ha a DNS-rekord megfelelően frissül, az egyéni tartománynév a pontozási végpont IP-címére fog mutatni.

    Az ügyfelek percek vagy órák elteltével feloldhatják a tartománynevet a tartományregisztrálótól és a tartománynévhez konfigurált "élettartamtól" (TTL) függően.

További információ az Azure Machine Learning DNS-feloldásáról: Munkaterület használata egyéni DNS-kiszolgálóval.

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

A TLS/SSL-tanúsítvány lejár, és meg kell újítani. Ez általában minden évben bekövetkezik. A következő szakaszokban található információk segítségével frissítheti és megújíthatja a tanúsítványt a Azure Kubernetes Service üzembe helyezett modellekhez:

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

Ha a tanúsítványt eredetileg a Microsoft hozta létre (amikor a leaf_domain_label használja a szolgáltatás létrehozásához), szükség esetén automatikusan megújul . Ha manuálisan szeretné megújítani, az alábbi példák egyikével frissítheti a tanúsítványt:

Fontos

  • Ha a meglévő tanúsítvány továbbra is érvényes, a (SDK) vagy --ssl-renew a (CLI) használatával renew=True kényszerítse a konfiguráció megújítását. A művelet érvénybe lépése körülbelül 5 órát vesz igénybe.
  • A szolgáltatás eredeti üzembe helyezésekor a leaf_domain_label használatával dns-nevet hoz létre a mintával <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. Ne tartalmazza a létrehozott 6 számjegyet.

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

A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml-bővítmény v1

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ókért tekintse meg a következő referenciadokumentumokat:

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

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

  1. A tanúsítvány megújításához 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 parancssori felület 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

    A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml-bővítmény 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"
    

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

TLS letiltása

Ha le szeretné tiltani a TLS-t egy Azure Kubernetes Service üzembe helyezett modell esetében, hozzon létre egy SslConfiguration elemet a paranccsalstatus="Disabled", majd végezzen el 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: