Delen via


Een beveiligd online-eindpunt configureren met TLS/SSL

In dit artikel leest u hoe u een Online Kubernetes-eindpunt beveiligt dat is gemaakt via Azure Machine Learning.

U gebruikt HTTPS om de toegang tot online-eindpunten te beperken en de gegevens te beveiligen die clients verzenden. HTTPS versleutelt de communicatie tussen een client en een online-eindpunt met behulp van TLS (Transport Layer Security). TLS wordt soms nog steeds Secure Sockets Layer (SSL) genoemd. Dit was de voorganger van TLS.

Tip

  • Met name Kubernetes Online-eindpunten ondersteunen TLS-versie 1.2 voor Azure Kubernetes Service (AKS) en Kubernetes met Azure Arc.
  • TLS-versie 1.3 voor Azure Machine Learning Kubernetes-deductie wordt niet ondersteund.

TLS en SSL zijn beide afhankelijk van digitale certificaten, die helpen bij versleuteling en identiteitsverificatie. Zie het Wikipedia-onderwerp public_key_infrastructure voor meer informatie over hoe digitale certificaten werken.

Waarschuwing

Als u geen HTTPS gebruikt voor uw online-eindpunten, zijn gegevens die naar en van de service worden verzonden mogelijk zichtbaar voor anderen op internet.

Met HTTPS kan de client ook de echtheid controleren van de server waarmee deze verbinding maakt. Met deze functie worden clients beschermd tegen man-in-the-middle-aanvallen .

Hier volgt het algemene proces voor het beveiligen van een online-eindpunt:

  1. Registreer een domeinnaam.

  2. Verkrijg een digitaal certificaat.

  3. Configureer TLS/SSL in de Azure Machine Learning-extensie.

  4. Werk uw DNS bij met een FQDN (Fully Qualified Domain Name) zodat deze verwijst naar het online-eindpunt.

Belangrijk

U moet uw eigen certificaat aanschaffen om een domeinnaam of TLS/SSL-certificaat op te halen en deze vervolgens te configureren in de Azure Machine Learning-extensie. Zie de volgende secties van dit artikel voor meer informatie.

Een domeinnaam ophalen

Als u nog geen domeinnaam hebt, koopt u er een bij een domeinnaamregistrar. Het proces en de prijs verschillen tussen registrars. De registrar biedt hulpprogramma's voor het beheren van de domeinnaam. U gebruikt deze hulpprogramma's om een FQDN (zoals www.contoso.com) toe te wijzen aan het IP-adres dat als host fungeert voor uw online-eindpunt.

Zie de sectie Dns bijwerken met een FQDN-sectie van dit artikel voor meer informatie over het ophalen van het IP-adres van uw online-eindpunten.

Een TLS/SSL-certificaat ophalen

Er zijn veel manieren om een TLS/SSL-certificaat (digitaal certificaat) op te halen. Het meest voorkomende is om er een te kopen bij een certificeringsinstantie. Ongeacht waar u het certificaat krijgt, hebt u de volgende bestanden nodig:

  • Een certificaat dat de volledige certificaatketen bevat en PEM is gecodeerd
  • Een sleutel die DOOR PEM is gecodeerd

Notitie

Een SSL-sleutel in een PEM-bestand met wachtwoordzinbeveiliging wordt niet ondersteund.

Wanneer u een certificaat aanvraagt, moet u de FQDN opgeven van het adres dat u wilt gebruiken voor het online-eindpunt (bijvoorbeeld www.contoso.com). Het adres dat is gestempeld in het certificaat en het adres dat de clients gebruiken, worden vergeleken met het verifiëren van de identiteit van het online-eindpunt. Als deze adressen niet overeenkomen, krijgt de client een foutbericht.

Zie de sectie Dns bijwerken met een FQDN-sectie van dit artikel voor meer informatie over het configureren van IP-banding met een FQDN-naam .

Tip

Als de certificeringsinstantie het certificaat en de sleutel niet kan opgeven als PEM-gecodeerde bestanden, kunt u een hulpprogramma zoals OpenSSL gebruiken om de indeling te wijzigen.

Waarschuwing

Gebruik zelfondertekende certificaten alleen voor ontwikkeling. Gebruik ze niet in productieomgevingen. Zelfondertekende certificaten kunnen problemen veroorzaken in uw clienttoepassingen. Zie de documentatie voor de netwerkbibliotheken die door uw clienttoepassing worden gebruikt voor meer informatie.

TLS/SSL configureren in de Azure Machine Learning-extensie

Voor een Kubernetes-online-eindpunt dat is ingesteld op het gebruik van deductie HTTPS voor beveiligde verbindingen, kunt u TLS-beëindiging met configuratie-instellingen voor implementatie inschakelen wanneer u de Azure Machine Learning-extensie in een Kubernetes-cluster implementeert.

Tijdens de implementatie voor de Azure Machine Learning-extensie is False de allowInsecureConnections configuratie-instelling standaard. Voor een geslaagde implementatie van extensies moet u de sslSecret configuratie-instelling of een combinatie van sslKeyPemFile met configuratie sslCertPemFile beveiligde instellingen opgeven. Anders kunt u instellen allowInsecureConnections=True dat HTTP wordt ondersteund en TLS-beëindiging wordt uitgeschakeld.

Notitie

Als u het HTTPS-online-eindpunt wilt ondersteunen, allowInsecureConnections moet u deze instellen op False.

Als u een HTTPS-eindpunt wilt inschakelen voor realtime deductie, moet u een PEM-gecodeerd TLS/SSL-certificaat en -sleutel opgeven. Er zijn twee manieren om het certificaat en de sleutel op te geven tijdens de implementatie voor de Azure Machine Learning-extensie:

  • Geef de sslSecret configuratie-instelling op.
  • Geef een combinatie van sslCertPemFile en slKeyPemFile met configuratie beveiligde instellingen op.

SslSecret configureren

De aanbevolen procedure is het certificaat en de sleutel op te slaan in een Kubernetes-geheim in de azureml naamruimte.

Voor het configureren sslSecretmoet u een Kubernetes-geheim opslaan in uw Kubernetes-cluster in de azureml naamruimte om cert.pem (PEM-gecodeerd TLS/SSL-certificaat) en key.pem (PEM-gecodeerde TLS/SSL-sleutel) op te slaan.

De volgende code is een YAML-voorbeelddefinitie van een TLS/SSL-geheim:

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

Nadat u het geheim in uw cluster hebt opgeslagen, kunt u de volgende Azure CLI-opdracht gebruiken om op te geven sslSecret als de naam van dit Kubernetes-geheim. (Deze opdracht werkt alleen als u AKS gebruikt.)

   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

SslCertPemFile en sslKeyPemFile configureren

U kunt de sslCertPemFile configuratie-instelling opgeven als het pad naar het MET PEM gecodeerde TLS/SSL-certificaatbestand en de sslKeyPemFile configuratie-instelling die het pad naar het MET PEM gecodeerde TLS/SSL-sleutelbestand moet zijn.

In het volgende voorbeeld ziet u hoe u de Azure CLI gebruikt om PEM-bestanden op te geven voor de Azure Machine Learning-extensie die gebruikmaakt van een TLS/SSL-certificaat dat u hebt aangeschaft. In het voorbeeld wordt ervan uitgegaan dat u AKS gebruikt.

   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

Notitie

  • Een PEM-bestand met wachtwoordzinbeveiliging wordt niet ondersteund.
  • Beide sslCertPemFIle parameters gebruiken die sslKeyPemFIle met configuratie zijn beveiligd. Ze configureren sslSecret en sslCertPemFile/sslKeyPemFile tegelijkertijd niet.

Uw DNS bijwerken met een FQDN

Voor modelimplementatie op een Kubernetes online-eindpunt met een aangepast certificaat moet u uw DNS-record bijwerken zodat deze verwijst naar het IP-adres van het online-eindpunt. De Azure Machine Learning-routerservice voor deductie (azureml-fe) biedt dit IP-adres. Zie Beheerde Azure Machine Learning-deductierouter voor meer informatie.azureml-fe

De DNS-record voor uw aangepaste domeinnaam bijwerken:

  1. Haal het IP-adres van het online-eindpunt op uit de score-URI, die meestal de indeling heeft http://104.214.29.152:80/api/v1/service/<service-name>/score. In dit voorbeeld is het IP-adres 104.214.29.152.

    Nadat u uw aangepaste domeinnaam hebt geconfigureerd, wordt het IP-adres in de score-URI vervangen. Voor Kubernetes-clusters die als de deductierouterservice worden gebruikt LoadBalancer , azureml-fe wordt extern weergegeven via de load balancer van een cloudprovider en TLS/SSL-beëindiging. Het IP-adres van het Online-eindpunt van Kubernetes is het externe IP-adres van de azureml-fe service die in het cluster is geïmplementeerd.

    Als u AKS gebruikt, kunt u het IP-adres ophalen uit Azure Portal. Ga naar uw AKS-resourcepagina, ga naar Service en ingresses en zoek vervolgens de azureml-fe-service onder de azuerml-naamruimte . Vervolgens vindt u het IP-adres in de kolom Extern IP .

    Schermopname van het toevoegen van een nieuwe extensie aan het Kubernetes-cluster met Azure Arc vanuit Azure Portal.

    Daarnaast kunt u de Kubernetes-opdracht kubectl describe svc azureml-fe -n azureml in uw cluster uitvoeren om het IP-adres op te halen uit de LoadBalancer Ingress parameter in de uitvoer.

    Notitie

    Voor Kubernetes-clusters die gebruikmaken van nodePort of clusterIP als de deductierouterservice, moet u uw eigen oplossing voor taakverdeling en TLS/SSL-beëindiging instellen voor azureml-fe. U moet ook het IP-adres van de azureml-fe service ophalen in het clusterbereik.

  2. Gebruik de hulpprogramma's van uw domeinnaamregistrar om de DNS-record voor uw domeinnaam bij te werken. De record wijst de FQDN (bijvoorbeeld www.contoso.com) toe aan het IP-adres. De record moet verwijzen naar het IP-adres van het online-eindpunt.

    Tip

    Microsoft is niet verantwoordelijk voor het bijwerken van de DNS voor uw aangepaste DNS-naam of -certificaat. U moet deze bijwerken met uw domeinnaamregistrar.

  3. Nadat de DNS-record is bijgewerkt, kunt u dns-omzetting valideren met behulp van de nslookup custom-domain-name opdracht. Als de DNS-record correct is bijgewerkt, verwijst de aangepaste domeinnaam naar het IP-adres van het online-eindpunt.

    Er kan een vertraging zijn van minuten of uren voordat clients de domeinnaam kunnen omzetten, afhankelijk van de registrar en de time to live (TTL) die is geconfigureerd voor de domeinnaam.

Zie Uw werkruimte gebruiken met een aangepaste DNS-server voor meer informatie over DNS-omzetting met Azure Machine Learning.

Het TLS/SSL-certificaat bijwerken

TLS/SSL-certificaten verlopen en moeten worden vernieuwd. Dit gebeurt meestal elk jaar. Gebruik de informatie in de volgende stappen om uw certificaat bij te werken en te vernieuwen voor modellen die zijn geïmplementeerd in Kubernetes (AKS en Kubernetes met Azure Arc):

  1. Gebruik de documentatie van de certificeringsinstantie om het certificaat te vernieuwen. Met dit proces worden nieuwe certificaatbestanden gemaakt.

  2. Werk uw Azure Machine Learning-extensie bij en geef de nieuwe certificaatbestanden op met behulp van de az k8s-extension update opdracht.

    Als u een Kubernetes-geheim hebt gebruikt om TLS/SSL eerder te configureren, moet u eerst het Kubernetes-geheim bijwerken met de nieuwe cert.pem - en key.pem-configuratie in uw Kubernetes-cluster. Voer vervolgens de opdracht voor het bijwerken van de extensie uit om het certificaat bij te werken:

       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
    

    Als u de PEM-bestanden rechtstreeks hebt geconfigureerd in de opdracht voor de implementatie van de extensie, moet u de opdracht extensie-update uitvoeren en het pad van het nieuwe PEM-bestand opgeven:

       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 uitschakelen

TLS uitschakelen voor een model dat is geïmplementeerd in Kubernetes:

  1. Werk de Azure Machine Learning-extensie bij met allowInsercureconnection de instelling .True

  2. Verwijder de sslCname configuratie-instelling, samen met de sslSecret of sslPem configuratie-instellingen.

  3. Voer de volgende Azure CLI-opdracht uit in uw Kubernetes-cluster en voer vervolgens een update uit. Bij deze opdracht wordt ervan uitgegaan dat u AKS gebruikt.

       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
    

Waarschuwing

De implementatie van de Azure Machine Learning-extensie verwacht standaard configuratie-instellingen voor HTTPS-ondersteuning. We raden HTTP-ondersteuning alleen aan voor ontwikkelings- of testdoeleinden. De allowInsecureConnections=True configuratie-instelling biedt HTTP-ondersteuning.

Volgende stappen

Leer hoe u het volgende doet: