Verwalten von Geheimnissen für Ihre Bereitstellung von Azure IoT Einsatz Preview
Wichtig
Die von Azure Arc unterstützte Vorschauversion von „Azure IoT Einsatz“ befindet sich derzeit in der Vorschauphase. Sie sollten diese Vorschausoftware nicht in Produktionsumgebungen verwenden.
Sie müssen eine neue Installation von Azure IoT Einsatz bereitstellen, wenn ein allgemein verfügbares Release verfügbar wird. Sie werden kein Upgrade für eine Preview-Installation durchführen können.
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
- Arc-fähiger Kubernetes-Cluster. Weitere Informationen finden Sie unter Vorbereiten Ihres Clusters.
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 Bereitstellung von Azure IoT Einsatz (Preview) für einen Arc-aktivierten 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 Preview für einen Arc-aktivierten Kubernetes-Cluster 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:
Suchen Sie in der Suchleiste des Azure-Portals nach Microsoft Entra ID, und wählen Sie den Eintrag aus.
Wählen Sie im Abschnitt Verwalten des Microsoft Entra ID-Menüs die Option App-Registrierungen aus.
Wählen Sie Neue Registrierung aus.
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. Wählen Sie Registrieren aus.
Wenn Ihre Anwendung erstellt wird, werden Sie zu ihrer Ressourcenseite weitergeleitet.
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:
Wählen Sie auf der Ressourcenseite für Ihre App im Abschnitt Verwalten des App-Menüs die Option API-Berechtigungen aus.
Wählen Sie Berechtigung hinzufügen aus.
Scrollen Sie auf der Seite API-Berechtigungen anfordern nach unten, und wählen Sie Azure Key Vault aus.
Wählen Sie Delegierte Berechtigungen aus.
Aktivieren Sie das Kontrollkästchen, um user_impersonation-Berechtigungen auszuwählen.
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:
Wählen Sie auf der Ressourcenseite für Ihre App im Abschnitt Verwalten des App-Menüs die Option Zertifikate und Geheimnisse aus.
Wählen Sie Neuer geheimer Clientschlüssel.
Geben Sie eine optionale Beschreibung für das Geheimnis ein, und wählen Sie dann Hinzufügen aus.
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:
- 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 Geheimnis list
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 Geheimnis list
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 Preview für einen Arc-aktivierten Kubernetes-Cluster 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 --cluster "<your cluster 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.
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.
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
Öffne die -Datei in deinem bevorzugten Text-Editor. Wenn Sie k9s verwenden, geben Sie zum Bearbeiten
e
ein.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: ""
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