Megosztás a következőn keresztül:


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 néha még mindig biztonságos szoftvercsatornák rétegének (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 Learningben üzembe helyezett webszolgáltatások támogatják az AKS-hez és az ACI-hez készült TLS 1.2-es verzióját. Az ACI-üzemelő példányok 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 Című Wikipédia-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özépen belüli 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-ben (AKS) helyezi üzembe, 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ó: A TLS engedélyezése és a cikk üzembe helyezése szakasz.

Az üzembehelyezési célok közötti biztonság tekintetében kisebb különbségek vannak.

Fontos

A cikkben szereplő Azure CLI-parancsok némelyike az azure-cli-mlAzure Machine Learning bővítményét vagy 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-a előtt váltsa át a ml(vagy v2) bővítményt. További információ a v2-es bővítményről: 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 regisztráló eszközöket biztosít a tartománynév kezeléséhez. Ezekkel az eszközökkel leképezett tartománynevet (FQDN) (például www.contoso.com) rendelhet hozzá a webszolgáltatást üzemeltető IP-címhez.

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 (CA) vásárol egyet. A tanúsítvány beszerzésének helyétől függetlenül 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 tanúsítványba lepecsételt cím és az ügyfelek által használt cím összehasonlítása a webszolgáltatás személyazonosságá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.

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

Az AKS üzembe helyezéséhez engedélyezheti a TLS-megszakítást, amikor AKS-fürtöt hoz létre vagy csatol az Azure Machine Learning-munkaterületen. Az AKS-modell üzembe helyezésének idején letilthatja a TLS-leállítást az üzembehelyezési konfigurációs objektummal, ellenkező esetben az AKS-modell minden üzembe helyezése alapértelmezés szerint engedélyezve lesz az AKS-fürt létrehozási vagy csatolási idején.

Az ACI-telepítéshez engedélyezheti a TLS leállítását a modell üzembe helyezési idején az üzembe helyezés konfigurációs objektumával.

Üzembe helyezés az Azure Kubernetes Service-ben

Feljegyzé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 Pythonhoz készült Azure Machine Learning SDK-t.

Amikor AKS-fürtöt hoz létre vagy csatol az Azure Machine Learning-munkaterületen, engedélyezheti a TLS-megszakítást 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 "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ó. 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 lehetővé teszi a TLS-t Microsoft-tanúsítvánnyal:

    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 a Microsofttól származó 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 további információ: AksProvisioningConfiguration.enable_ssl() és AksAttachConfiguration.enable_ssl().

Üzembe helyezés az Azure Container Instancesben

Az Azure Container Instancesben való üzembe helyezéskor a TLS-hez kapcsolódó paraméterek értékeit adja meg, ahogyan 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-üzembe helyezé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 üzembe helyezési 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. Pontozási végpont IP-címének lekérése http://104.214.29.152:80/api/v1/service/<service-name>/scorea pontozási végpont URI-jából, amely általában a következő formátumban van: . 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 a teljes tartománynevet (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 mutat.

    Az ügyfelek akár percekig vagy órákig is késleltethetik a tartománynév feloldását a tartományregisztrálótól és a tartománynévhez konfigurált "élettartamtól" (TTL) függően.

Az Azure Machine Learning dns-feloldásáról további információt a munkaterület egyéni DNS-kiszolgálóval való használatáról szóló cikkben talál.

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. Az alábbi szakaszokban található információk segítségével frissítheti és megújíthatja tanúsítványát az Azure Kubernetes Service-ben ü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, használja az alábbi példák egyikét a tanúsítvány frissítéséhez:

Fontos

  • Ha a meglévő tanúsítvány továbbra is érvényes, használja renew=True az (SDK) vagy --ssl-renew a (CLI) parancsot a konfiguráció megújítására. 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 rendszer 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ŐRE VONATKOZIK: Azure CLI ml-bővítmény 1-es verzió

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ő referencia-dokumentumokat:

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ŐRE VONATKOZIK: Azure CLI ml-bővítmény 1-es verzió

    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ő referencia-dokumentumokat:

TLS letiltása

Az Azure Kubernetes Service-ben üzembe helyezett modell TLS-ének letiltásához hozzon létre egy SslConfiguration status="Disabled", majd 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: