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ő:
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-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-ml
Azure 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:
Pontozási végpont IP-címének lekérése
http://104.214.29.152:80/api/v1/service/<service-name>/score
a 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.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.
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 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Ő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:
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Ő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:
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: