Biztonságos online végpont konfigurálása TLS/SSL használatával
Ez a cikk bemutatja, hogyan védheti meg az Azure Machine Learningen keresztül létrehozott Kubernetes online végpontot.
A HTTPS használatával korlátozhatja az online végpontokhoz való hozzáférést, és biztonságossá teheti az ügyfelek által beküldött adatokat. A HTTPS a Transport Layer Security (TLS) használatával titkosítja az ügyfelek és az online végpontok közötti kommunikációt. A TLS-t néha még mindig Secure Sockets Layernek (SSL) nevezik, amely a TLS elődje volt.
Tipp
- A Kubernetes online végpontjai támogatják a TLS 1.2-es verzióját a Azure Kubernetes Service (AKS) és az Azure Arc-kompatibilis Kubernetes esetében.
- Az Azure Machine Learning Kubernetes-hez készült TLS 1.3-es verziója 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 lásd a Wikipedia public_key_infrastructure című témakört.
Figyelmeztetés
Ha nem használ HTTPS-t az online végpontokhoz, a szolgáltatásba és a szolgáltatásból küldött adatok megjelenhetnek 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ó védelmet nyújt az ügyfeleknek a közbeékelt támadások ellen.
Egy online végpont biztonságossá tételének általános folyamata a következő:
TLS/SSL konfigurálása az Azure Machine Learning-bővítményben.
A DNS frissítése egy teljes tartománynévvel (FQDN), hogy az online végpontra mutasson.
Fontos
A tartománynév vagy TLS/SSL-tanúsítvány beszerzéséhez meg kell vásárolnia a saját tanúsítványát, majd konfigurálnia kell őket az Azure Machine Learning-bővítményben. További információt a cikk alábbi szakaszaiban talál.
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 egy teljes tartománynevet (például www.contoso.com
) képezhet le az online végpontot üzemeltető IP-címre.
Az online végpontok IP-címének lekéréséről a jelen cikk DNS-ének frissítése teljes tartománynévvel című szakaszában olvashat bővebben.
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:
- A teljes tanúsítványláncot tartalmazó, PEM-kódolású tanúsítvány
- Egy PEM-kódolású kulcs
Megjegyzés
A jelszóvédelemmel ellátott PEM-fájlok SSL-kulcsa nem támogatott.
Amikor tanúsítványt kér, meg kell adnia az online végponthoz 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 bebélyegzett címet és az ügyfelek által használt címet az online végpont identitásának ellenőrzéséhez. Ha ezek a címek nem egyeznek, az ügyfél hibaüzenetet kap.
Az IP-sávozás FQDN-nel való konfigurálásáról a jelen cikk Dns frissítése teljes tartománynévvel című szakaszában talál további információt.
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 olyan eszközt, mint az OpenSSL .
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ót az ügyfélalkalmazás által használt hálózati kódtárak dokumentációjában talál.
TLS/SSL konfigurálása az Azure Machine Learning-bővítményben
Olyan kubernetes-alapú online végpontok esetében, amelyek a biztonságos kapcsolatokhoz https-következtetést használnak, az Azure Machine Learning-bővítmény Kubernetes-fürtön való üzembe helyezésekor engedélyezheti a TLS leállítását az üzembehelyezési konfigurációs beállításokkal.
Az Azure Machine Learning-bővítmény üzembe helyezésekor alapértelmezés szerint a allowInsecureConnections
konfigurációs beállítás van False
megadva. A bővítmény sikeres üzembe helyezésének biztosításához meg kell adnia a sslSecret
konfigurációs beállítást, vagy a és sslCertPemFile
a sslKeyPemFile
konfigurációval védett beállítások kombinációját. Ellenkező esetben beállíthatja allowInsecureConnections=True
, hogy támogassa a HTTP-t, és letiltsa a TLS leállítását.
Megjegyzés
A HTTPS online végpont allowInsecureConnections
támogatásához a következőre kell állítani: False
.
A HTTPS-végpont valós idejű következtetéshez való engedélyezéséhez meg kell adnia egy PEM-kódolású TLS-/SSL-tanúsítványt és -kulcsot. Az Azure Machine Learning-bővítmény üzembe helyezésekor kétféleképpen adhatja meg a tanúsítványt és a kulcsot:
- Adja meg a
sslSecret
konfigurációs beállítást. - Adja meg a és
slKeyPemFile
asslCertPemFile
konfigurációval védett beállítások kombinációját.
SslSecret konfigurálása
Az ajánlott eljárás a tanúsítvány és a kulcs mentése egy Kubernetes-titkos kulcsba a azureml
névtérben.
A konfigurálásához sslSecret
mentenie kell egy Kubernetes-titkos kulcsot a Kubernetes-fürtben a névtérben a azureml
cert.pem (PEM kódolású TLS/SSL-tanúsítvány) és a key.pem (PEM-kódolású TLS/SSL-kulcs) tárolásához.
A következő kód egy TLS/SSL-titkos kód yaML-mintadefiníciója:
apiVersion: v1
data:
cert.pem: <PEM-encoded SSL certificate>
key.pem: <PEM-encoded SSL key>
kind: Secret
metadata:
name: <secret name>
namespace: azureml
type: Opaque
Miután mentette a titkos kódot a fürtben, a következő Azure CLI-paranccsal adhatja meg sslSecret
ennek a Kubernetes-titkos kulcsnak a nevét. (Ez a parancs csak akkor működik, ha AKS-t használ.)
az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config inferenceRouterServiceType=LoadBalancer sslSecret=<Kubernetes secret name> sslCname=<ssl cname> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
Az sslCertPemFile és az sslKeyPemFile konfigurálása
Megadhatja, hogy a sslCertPemFile
konfigurációs beállítás legyen a PEM-kódolású TLS/SSL-tanúsítványfájl elérési útja, a sslKeyPemFile
konfigurációs beállítás pedig a PEM-kódolású TLS-/SSL-kulcsfájl elérési útja.
Az alábbi példa bemutatja, hogyan lehet az Azure CLI-vel PEM-fájlokat megadni a megvásárolt TLS/SSL-tanúsítványt használó Azure Machine Learning-bővítményhez. A példa feltételezi, hogy AKS-t használ.
az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableInference=True inferenceRouterServiceType=LoadBalancer sslCname=<ssl cname> --config-protected sslCertPemFile=<file-path-to-cert-PEM> sslKeyPemFile=<file-path-to-cert-KEY> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
Megjegyzés
- A jelszavas védelemmel ellátott PEM-fájlok nem támogatottak.
- Mindkettőt
sslCertPemFIle
, éssslKeyPemFIle
használja a konfigurációval védett paramétereket. Nem konfigurálhatóksslSecret
sslCertPemFile
/sslKeyPemFile
és egyidejűleg.
A DNS frissítése teljes tartománynévvel
Egy modell Kubernetes online végponton, egyéni tanúsítvánnyal való üzembe helyezéséhez frissítenie kell a DNS-rekordot, hogy az online végpont IP-címére mutasson. Ezt az IP-címet az Azure Machine Learning következtetési útválasztó szolgáltatása (azureml-fe
) biztosítja. További információ a-ról azureml-fe
: Felügyelt Azure Machine Learning-következtetési útválasztó.
Az egyéni tartománynév DNS-rekordjának frissítése:
Kérje le az online végpont IP-címét a pontozó URI-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.Miután konfigurálta az egyéni tartománynevet, az lecseréli az IP-címet a pontozó URI-ban. A következtetési útválasztó szolgáltatásként
azureml-fe
használtLoadBalancer
Kubernetes-fürtök külsőleg, a felhőszolgáltató terheléselosztóján és TLS/SSL-leállításán keresztül vannak közzétéve. Az online Kubernetes-végpont IP-címe a fürtben üzembe helyezett szolgáltatás külső IP-címeazureml-fe
.Ha AKS-t használ, lekérheti az IP-címet a Azure Portal. Lépjen az AKS-erőforrás oldalára, lépjen a Szolgáltatás és bejövő forgalom elemre, majd keresse meg az azureml-fe szolgáltatást az azuerml névtér alatt. Ezután megtalálhatja az IP-címet a Külső IP-cím oszlopban.
Emellett futtathatja a Kubernetes-parancsot
kubectl describe svc azureml-fe -n azureml
a fürtben, hogy lekérje az IP-címet aLoadBalancer Ingress
kimenet paraméteréből.Megjegyzés
Azon Kubernetes-fürtök esetében, amelyek vagy
clusterIP
mint következtetési útválasztó szolgáltatást használjáknodePort
, be kell állítania a saját terheléselosztási megoldását és a TLS/SSL leállítását a számáraazureml-fe
. A szolgáltatás IP-címétazureml-fe
is le kell kérnie a fürt hatókörében.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 az online 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 a paranccsal ellenőrizheti a
nslookup custom-domain-name
DNS-feloldásokat. Ha a DNS-rekord megfelelően frissül, az egyéni tartománynév az online végpont IP-címére fog mutatni.Az ügyfelek a tartománynév feloldását a regisztrálótól és a tartománynévhez konfigurált élettartamtól (TTL) függően percek vagy órák elteltével oldhatják fel.
A DNS-feloldással kapcsolatos további információkért lásd: A 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 előfordul. Az alábbi lépésekkel frissítheti és megújíthatja a tanúsítványt a Kubernetesben üzembe helyezett modellekhez (AKS és Azure Arc-kompatibilis Kubernetes):
A tanúsítvány megújításához használja a hitelesítésszolgáltató dokumentációját. Ez a folyamat új tanúsítványfájlokat hoz létre.
Frissítse az Azure Machine Learning-bővítményt, és adja meg az új tanúsítványfájlokat a
az k8s-extension update
paranccsal.Ha korábban Kubernetes-titkos kulcsot használt a TLS/SSL konfigurálásához, először frissítenie kell a Kubernetes-titkos kulcsot a Kubernetes-fürt új cert.pem és key.pem konfigurációjával. Ezután futtassa a bővítményfrissítési parancsot a tanúsítvány frissítéséhez:
az k8s-extension update --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config inferenceRouterServiceType=LoadBalancer sslSecret=<Kubernetes secret name> sslCname=<ssl cname> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
Ha korábban közvetlenül konfigurálta a PEM-fájlokat a bővítménytelepítési parancsban, futtassa a bővítményfrissítési parancsot, és adja meg az új PEM-fájl elérési útját:
az k8s-extension update --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config sslCname=<ssl cname> --config-protected sslCertPemFile=<file-path-to-cert-PEM> sslKeyPemFile=<file-path-to-cert-KEY> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
TLS letiltása
A Kubernetesben üzembe helyezett modell TLS-ének letiltása:
Frissítse az Azure Machine Learning-bővítményt a
allowInsercureconnection
következőre:True
.Távolítsa el a
sslCname
konfigurációs beállítást a vagysslPem
asslSecret
konfigurációs beállításokkal együtt.Futtassa a következő Azure CLI-parancsot a Kubernetes-fürtben, majd végezzen el egy frissítést. Ez a parancs feltételezi, hogy az AKS-t használja.
az k8s-extension update --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableInference=True inferenceRouterServiceType=LoadBalancer allowInsercureconnection=True --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
Figyelmeztetés
Alapértelmezés szerint az Azure Machine Learning-bővítmény üzembe helyezése a HTTPS-támogatás konfigurációs beállításait várja. A HTTP-támogatást csak fejlesztési vagy tesztelési célokra javasoljuk. A allowInsecureConnections=True
konfigurációs beállítás HTTP-támogatást nyújt.
Következő lépések
Az alábbiak végrehajtásának módját ismerheti meg: