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ő:
Tartománynév beszerzése.
Digitális tanúsítvány beszerzése.
A webszolgáltatás üzembe helyezése vagy frissítése engedélyezett TLS-sel.
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-ml
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. 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:
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>/score
van: . Ebben a példában az IP-cím 104.214.29.152.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.
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ávalrenew=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 eredetileaf_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:
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.
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: