Share via


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

  1. Tartománynév beszerzése.

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

  3. TLS/SSL konfigurálása az Azure Machine Learning-bővítményben.

  4. 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 a sslCertPemFile 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 sslSecretmentenie kell egy Kubernetes-titkos kulcsot a Kubernetes-fürtben a névtérben a azuremlcert.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 , és sslKeyPemFIle használja a konfigurációval védett paramétereket. Nem konfigurálhatók sslSecretsslCertPemFile/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:

  1. 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>/scorevan: . 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ált LoadBalancer 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íme azureml-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.

    Képernyőkép egy új bővítmény hozzáadásáról az Azure Arc-kompatibilis Kubernetes-fürthöz a Azure Portal.

    Emellett futtathatja a Kubernetes-parancsot kubectl describe svc azureml-fe -n azureml a fürtben, hogy lekérje az IP-címet a LoadBalancer 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ét azureml-fe is le kell kérnie a fürt hatókörében.

  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 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.

  3. 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):

  1. 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.

  2. 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:

  1. Frissítse az Azure Machine Learning-bővítményt a allowInsercureconnection következőre: True.

  2. Távolítsa el a sslCname konfigurációs beállítást a vagy sslPem a sslSecret konfigurációs beállításokkal együtt.

  3. 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: