Share via


Verwalten von Geheimnissen für Ihre Bereitstellung von Azure IoT Einsatz Preview

Wichtig

Die von Azure Arc aktivierte Azure IoT Operations Preview befindet sich derzeit in der VORSCHAU. Sie sollten diese Vorschausoftware nicht in Produktionsumgebungen verwenden.

Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.

Die Geheimnisverwaltung in Azure IoT Einsatz Preview verwendet Azure Key Vault als verwaltete Tresorlösung in der Cloud und den CSI-Treiber für den Geheimnisspeicher, um Geheimnisse aus der Cloud abzurufen und sie am Edge zu speichern.

Voraussetzungen

Konfigurieren eines Geheimnisspeichers für Ihren Cluster

Azure IoT Einsatz unterstützt Key Vault zum Speichern von Geheimnissen und Zertifikaten. Der Azure CLI-Befehl az iot ops init automatisiert die Schritte zum Einrichten eines Dienstprinzipals, der Zugriff auf den Schlüsseltresor ermöglicht, und zum Konfigurieren der Geheimnisse, die Sie für die Ausführung von Azure IoT Einsatz benötigen.

Weitere Informationen finden Sie unter Bereitstellen von Azure IoT Einsatz Preview-Erweiterungen in einem Kubernetes-Cluster.

Manuelles Konfigurieren von Dienstprinzipal und Key Vault

Wenn das Azure-Konto, das den Befehl az iot ops init ausführt, keine Berechtigungen zum Abfragen von Microsoft Graph und zum Erstellen von Dienstprinzipalen hat, können Sie diese vorab vorbereiten und zusätzliche Argumente verwenden, wenn Sie den CLI-Befehl ausführen, wie unter Bereitstellen von Azure IoT Einsatz-Erweiterungen beschrieben.

Konfigurieren des Dienstprinzipals für die Interaktion mit Key Vault über Microsoft Entra ID

Führen Sie die folgenden Schritte aus, um eine neue Anwendungsregistrierung für die Azure IoT Operations-Anwendung zu erstellen, die für die Authentifizierung bei Key Vault verwendet wird.

Registrieren Sie zunächst eine Anwendung bei Microsoft Entra ID:

  1. Suchen Sie in der Suchleiste des Azure-Portals nach Microsoft Entra ID, und wählen Sie den Eintrag aus.

  2. Wählen Sie im Abschnitt Verwalten des Microsoft Entra ID-Menüs die Option App-Registrierungen aus.

  3. Wählen Sie Neue Registrierung aus.

  4. Geben Sie auf der Seite Anwendung registrieren die folgenden Informationen ein:

    Feld Wert
    Name Geben Sie einen Namen für Ihre Anwendung an.
    Unterstützte Kontotypen Stellen Sie sicher, dass Nur Konten in diesem Organisationsverzeichnis (<NAME_IHRES_MANDATEN> nur einzelner Mandant) ausgewählt ist.
    Umleitungs-URI Wählen Sie Web als Plattform aus. Sie können die Webadresse leer lassen.
  5. Wählen Sie Registrieren aus.

    Wenn Ihre Anwendung erstellt wird, werden Sie zu ihrer Ressourcenseite weitergeleitet.

  6. Kopieren Sie die Anwendungs-ID (Client) von der Übersichtsseite für die App-Registrierung. Sie verwenden diesen Wert als Argument, wenn Sie die Azure IoT Einsatz-Bereitstellung mit dem Befehl az iot ops init ausführen.

Als nächstes geben Sie Ihrer Anwendung Berechtigungen für den Key Vault:

  1. Wählen Sie auf der Ressourcenseite für Ihre App im Abschnitt Verwalten des App-Menüs die Option API-Berechtigungen aus.

  2. Wählen Sie Berechtigung hinzufügen aus.

  3. Scrollen Sie auf der Seite API-Berechtigungen anfordern nach unten, und wählen Sie Azure Key Vault aus.

  4. Wählen Sie Delegierte Berechtigungen aus.

  5. Aktivieren Sie das Kontrollkästchen, um user_impersonation-Berechtigungen auszuwählen.

  6. Wählen Sie Zugriffsrechte hinzufügen.

Erstellen Sie einen geheimen Clientschlüssel, der Ihrem Kubernetes-Cluster hinzugefügt wird, um sich bei Ihrem Schlüsseltresor zu authentifizieren:

  1. Wählen Sie auf der Ressourcenseite für Ihre App im Abschnitt Verwalten des App-Menüs die Option Zertifikate und Geheimnisse aus.

  2. Wählen Sie Neuer geheimer Clientschlüssel.

  3. Geben Sie eine optionale Beschreibung für das Geheimnis ein, und wählen Sie dann Hinzufügen aus.

  4. Kopieren Sie den Wert aus ihrem neuen Geheimnis. Sie verwenden diesen Wert später, wenn Sie az iot ops init ausführen.

Rufen Sie die Objekt-ID des Dienstprinzipals ab:

  1. Wählen Sie auf der Seite Übersicht für Ihre App unter dem Abschnitt Essentials unter Verwaltete Anwendung in lokalem Verzeichnis den Link Anwendungsname aus. Dadurch werden die Unternehmensanwendungseigenschaften geöffnet. Kopieren Sie die Objekt-ID, die verwendet werden soll, wenn Sie az iot ops init ausführen.

Erstellen eines Schlüsseltresors

Erstellen Sie eine neue Azure Key Vault-Instanz, und stellen Sie sicher, dass das Berechtigungsmodell auf die Tresorzugriffsrichtlinie festgelegt ist.

az keyvault create --enable-rbac-authorization false --name "<your unique key vault name>" --resource-group "<the name of the resource group>"

Wenn Sie über einen vorhandenen Schlüsseltresor verfügen, können Sie das Berechtigungsmodell ändern, indem Sie folgenden Befehl ausführen:

az keyvault update --name "<your unique key vault name>" --resource-group "<the name of the resource group>" --enable-rbac-authorization false 

Sie benötigen die Key Vault-Ressourcen-ID, wenn Sie az iot ops init ausführen. Zum Abrufen der Ressourcen-ID führen Sie folgenden Befehl aus:

az keyvault show --name "<your unique key vault name>" --resource-group "<the name of the resource group>" --query id  -o tsv

Festlegen der Richtlinie für den Dienstprinzipalzugriff in Key Vault

Der neu erstellte Dienstprinzipal benötigt das Geheimnislist und die get-Zugriffsrichtlinie, damit Azure IoT Einsatz mit dem Geheimnisspeicher funktioniert.

Um Key Vault-Zugriffsrichtlinien zu verwalten, benötigt der Prinzipal, der bei der CLI angemeldet ist, ausreichende Azure-Berechtigungen. Im Modell der rollenbasierten Zugriffskontrolle (Role Based Access Control, RBAC) ist diese Berechtigung in den Rollen Key Vault-Mitwirkender oder höher enthalten.

Tipp

Wenn Sie den angemeldeten CLI-Prinzipal zum Erstellen des Schlüsseltresors verwendet haben, verfügen Sie wahrscheinlich bereits über die richtigen Berechtigungen. Wenn Sie jedoch auf einen anderen oder vorhandenen Schlüsseltresor verweisen, sollten Sie überprüfen, ob Sie über ausreichende Berechtigungen zum Festlegen von Zugriffsrichtlinien verfügen.

Führen Sie den folgenden Befehl aus, um dem Dienstprinzipal das Geheimnislist und get-Berechtigungen zuzuweisen.

az keyvault set-policy --name "<your unique key vault name>" --resource-group "<the name of the resource group>" --object-id <Object ID copied from Enterprise Application SP in Microsoft Entra ID> --secret-permissions get list

Übergeben von Dienstprinzipal- und Key Vault-Argumenten an die Azure IoT Einsatz-Bereitstellung

Wenn Sie dem Leitfaden Bereitstellen von Azure IoT Einsatz-Erweiterungen folgen, übergeben Sie zusätzliche Flags an den az iot ops init-Befehl, um den vorkonfigurierten Dienstprinzipal und den Schlüsseltresor zu verwenden.

Das folgende Beispiel zeigt, wie Sie den Cluster mithilfe des Flags --no-deploy für Azure IoT Einsatz vorbereiten, ohne ihn vollständig bereitzustellen. Für eine standardmäßige Azure IoT Einsatz-Bereitstellung können den Befehl auch ohne dieses Argument ausführen.

az iot ops init --name "<your unique key vault name>" --resource-group "<the name of the resource group>" \
    --kv-id <Key Vault Resource ID> \
    --sp-app-id <Application registration App ID (client ID) from Microsoft Entra ID> \
    --sp-object-id <Object ID copied from Enterprise Application in Microsoft Entra ID> \
    --sp-secret "<Client Secret from App registration in Microsoft Entra ID>" \
    --no-deploy

Einer der Schritte, die der init-Befehl ausführt, besteht darin, sicherzustellen, dass für alle von Azure IoT Operations benötigten Secret Provider Classes (SPCs) ein Standardschlüssel im Schlüsseltresor konfiguriert ist. Wenn kein Wert für den Standardschlüssel vorhanden ist, erstellt init einen. Dieser Schritt erfordert, dass der Prinzipal, der bei der CLI angemeldet ist, über verschlüsselte set-Berechtigungen verfügt. Wenn Sie einen vorhandenen geheimen Schlüssel als Standard-SPC-Schlüssel verwenden möchten, können Sie ihn mit dem Parameter --kv-sat-secret-name angeben. In diesem Fall benötigt der angemeldete Prinzipal nur verschlüsselte get-Berechtigungen.

Hinzufügen eines Geheimnisses zu einer Azure IoT Einsatz-Komponente

Nachdem Sie den Geheimnisspeicher auf Ihrem Cluster eingerichtet haben, können Sie Key Vault-Geheimnisse erstellen und hinzufügen.

  1. Erstellen Sie Ihr Geheimnis in Key Vault mit dem gewünschten Namen und Wert. Sie können ein Geheimnis erstellen, indem Sie das Azure-Portal oder den Befehl az keyvault secret set verwenden.

  2. Identifizieren Sie im Cluster die Geheimnisanbieterklasse (SPC) für die Komponente, der Sie das Geheimnis hinzufügen möchten. Beispielsweise aio-default-spc. Verwenden Sie den folgenden Befehl, um alle SPCs für Ihren Cluster aufzulisten:

    kubectl get secretproviderclasses -A
    
  3. Öffne die -Datei in deinem bevorzugten Text-Editor. Wenn Sie k9s verwenden, geben Sie zum Bearbeiten e ein.

  4. Fügen Sie das Geheimnisobjekt der Liste unter spec.parameters.objects.array hinzu. Beispiel:

    spec:
      parameters:
        keyvaultName: my-key-vault
        objects: |
          array:
            - |
              objectName: PlaceholderSecret
              objectType: secret
              objectVersion: ""
    
  5. Speichern Sie Ihre Änderungen, und wenden Sie sie auf Ihren Cluster an. Wenn Sie k9s verwenden, werden Ihre Änderungen automatisch angewendet.

Der CSI-Treiber aktualisiert Geheimnisse mithilfe eines Abrufintervalls, daher ist das neue Geheimnis erst für den Pod bis zum nächsten Abrufintervall verfügbar. Um eine Komponente sofort zu aktualisieren, starten Sie die Pods für die Komponente neu. Führen Sie beispielsweise die folgenden Befehle aus, um die Datenverarbeitungskomponente neu zu starten:

kubectl delete pod aio-dp-reader-worker-0 -n azure-iot-operations
kubectl delete pod aio-dp-runner-worker-0 -n azure-iot-operations

Azure IoT MQ Preview-Geheimnisse

Das Verwalten von Geheimnissen mit Azure Key Vault für Azure IoT MQ Preview erfordert andere Schritte. Weitere Informationen finden Sie unter Verwalten von MQ-Geheimnissen mithilfe von Key Vault.