Aktivieren Sie sichere Einstellungen in Azure IoT Operationen

Die sicheren Einstellungen für Azure IoT Einsatz umfassen das Einrichten der geheimen Verwaltung und eine vom Benutzer zugewiesene verwaltete Identität für Cloudverbindungen, z. B. einen OPC UA-Server oder Datenflussendpunkte.

Dieser Artikel enthält Anweisungen zum Aktivieren sicherer Einstellungen, wenn dies nicht bereits während der Erstbereitstellung erfolgt ist.

Voraussetzungen

  • Die auf dem Entwicklungscomputer installierte Azure CLI. Überprüfen Sie die verfügbaren Azure CLI-Erweiterungen für die minimal erforderliche Version, um die azure-iot-ops-Erweiterung zu verwenden. Verwenden Sie az --version, um Ihre Version zu überprüfen. Bei Bedarf können Sie sie mithilfe von az upgrade aktualisieren. Weitere Informationen finden Sie unter Install the Azure CLI.

  • Die Azure IoT Einsatz Erweiterung für die Azure CLI. Verwenden Sie den folgenden Befehl, um die Erweiterung hinzuzufügen oder auf die neueste Version zu aktualisieren:

    az extension add --upgrade --name azure-iot-ops
    
  • Die aktuelle Version der connectedk8s-Erweiterung für die Azure CLI. Verwenden Sie den folgenden Befehl, um die Erweiterung hinzuzufügen oder auf die neueste Version zu aktualisieren:

    az extension add --upgrade --name connectedk8s
    

Die Azure CLI Beispiele in diesem Artikel verwenden Umgebungsvariablen, sodass Sie jeden Wert einmal festlegen und dann die Befehle as-iskopieren und einfügen können. Wenn Sie die Azure IoT Einsatz Codespaces-Umgebung aus dem Quickstart verwenden, sind diese Variablen bereits für Sie festgelegt und Sie können diesen Schritt überspringen. Ansonsten setze die folgenden Umgebungsvariablen in deiner Shell, bevor du die Befehle ausführst.

Die folgenden Skripte legen die am häufigsten verwendeten Umweltvariablen fest:

Umgebungsvariable Description
SUBSCRIPTION_ID Die ID des Abonnements, das Ihre Azure IoT Einsatz-Instanz enthält.
RESOURCE_GROUP Der Name der Ressourcengruppe, die Ihre Azure IoT Einsatz-Instanz enthält.
AIO_INSTANCE_NAME Der Name Ihrer Azure IoT Einsatz Instanz. Um deine Instanzen aufzulisten, führe az iot ops list -o table.
CLUSTER_NAME Der Name des Azure Arc-fähigen Kubernetes-Clusters, der deine Instanz hostet.
LOCATION Die Azure-Region zur Nutzung für neue Ressourcen, zum Beispiel eastus.
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
AIO_INSTANCE_NAME=<instance-name>
CLUSTER_NAME=<cluster-name>
LOCATION=<region>

Du musst nur die Variablen festlegen, die dieser Artikel verwendet. Dieser Artikel könnte zusätzliche Umgebungsvariablen für die von Ihnen gewählten Ressourcennamen verwenden. Der Artikel erklärt, wie man sie dort platziert, wo sie eingeführt werden.

Aktivieren des Clusters für sichere Einstellungen

Um die Synchronisierung von Geheimnissen für Ihre Azure IoT Einsatz-Instanz zu aktivieren, müssen die Features OIDC issuer und workload identity federation auf Ihrem Cluster aktiviert sein. Diese Konfiguration ist für die Azure Key Vault Secret Store-Erweiterung erforderlich, um die geheimen Schlüssel aus einem Azure Key Vault zu synchronisieren und sie als Kubernetes-Geheimnisse am Edge zu speichern.

Für Azure Kubernetes Service (AKS)-Cluster können Sie die Funktionen für OIDC-Aussteller und Workload-Identität beim Erstellen des Clusters oder für einen vorhandenen Cluster aktivieren. Weitere Informationen finden Sie unter Deploy and configure Microsoft Entra Workload ID on a AKS Cluster. Für Cluster in AKS Edge Essentials aktiviert das automatisierte Skript diese Features standardmäßig. Führen Sie für AKS-Cluster auf Azure Local die Schritte zum Bereitstellen und Konfigurieren der Workload-Identität in einem von Azure Arc aktivierten AKS-Cluster aus, um einen neuen Cluster zu erstellen, falls Sie keinen mit den erforderlichen Funktionen haben.

Bei k3s-Clustern in Kubernetes können Sie einen vorhandenen Cluster aktualisieren. Führen Sie die folgenden Schritte aus, um diese Features zu aktivieren und zu konfigurieren:

  1. Aktualisieren Sie den Cluster, um OIDC Issuer und Workload-Identität zu aktivieren.

    az connectedk8s update -n $CLUSTER_NAME -g $RESOURCE_GROUP --enable-oidc-issuer --enable-workload-identity
    

    Wenn Sie die Features für OIDC-Aussteller und Workloadidentität bei der Clustererstellung aktiviert haben, müssen Sie den vorherigen Befehl nicht erneut ausführen. Verwenden Sie den folgenden Befehl, um den Status der OIDC-Zertifikatstelle und der Workload-Identitätsfunktionen für Ihren Cluster zu überprüfen.

    az connectedk8s show -g $RESOURCE_GROUP -n $CLUSTER_NAME --query "{ClusterName:name, OIDCIssuerEnabled:oidcIssuerProfile.enabled, WorkloadIdentityEnabled:securityProfile.workloadIdentity.enabled}"
    
  2. Rufen Sie die Aussteller-URL des Clusters ab.

    az connectedk8s show -g $RESOURCE_GROUP -n $CLUSTER_NAME --query oidcIssuerProfile.issuerUrl --output tsv
    

    Notieren Sie sich die Ausgabe dieses Befehls, um sie in den nächsten Schritten zu verwenden.

  3. Erstellen Sie die k3s-Konfigurationsdatei auf dem Computer, auf dem Sie Ihren Kubernetes-Cluster bereitgestellt haben:

    sudo nano /etc/rancher/k3s/config.yaml
    
  4. Fügen Sie der Datei config.yaml den folgenden Inhalt hinzu, und ersetzen Sie den Platzhalter <SERVICE_ACCOUNT_ISSUER>durch die Aussteller-URL Ihres Clusters, die Sie zuvor notiert haben:

    kube-apiserver-arg:
    - service-account-issuer=<SERVICE_ACCOUNT_ISSUER>
    - service-account-max-token-expiration=24h
    

    Speichern Sie die Datei, und beenden Sie den Nano-Editor.

  5. Starten Sie den k3s-Dienst neu:

    sudo systemctl restart k3s
    

Einrichtung von Geheimnisverwaltung

Die Geheimnisseverwaltung für Azure IoT Einsatz verwendet die Secret Store-Erweiterung, um die Geheimnisse aus einem Azure Key Vault zu synchronisieren und sie als Kubernetes-Geheimnisse am Edge zu speichern. Die Secret Store-Erweiterung erfordert eine vom Benutzer zugewiesene verwaltete Identität mit Zugriff auf den Azure Key Vault, in dem geheime Schlüssel gespeichert werden. Weitere Informationen finden Sie unter Was sind verwaltete Identitäten für Azure-Ressourcen?

So richten Sie die Geheimnisverwaltung ein:

  1. Erstellen Sie einen Azure Key Vault, um Geheimnisse zu speichern, und geben Sie Ihrem Benutzerkonto Berechtigungen, Geheimnisse zu verwalten, indem Sie die Key Vault Secrets Officer Rolle zuweisen. Stellen Sie sicher, dass Ihr Schlüsseltresor Azure rollenbasierte Zugriffskontrolle als Berechtigungsmodell verwendet. Um diese Einstellung im Azure-Portal zu überprüfen, wählen Sie Ihren Schlüsseltresor aus und wählen Sie dann dieEinstellungszugriffskonfiguration>.

  2. Erstellen Sie eine vom Benutzer zugewiesene verwaltete Identität für die Secret Store-Erweiterung , die für den Zugriff auf den Schlüsseltresor verwendet werden soll.

  3. Verwenden Sie den Befehl az iot ops secretsync enable, um die Azure IoT Einsatz Instanz für die geheime Synchronisierung einzurichten. Dieser Befehl:

    • Erstellt eine zusammengefasste Identitätsanmeldeinformation unter Verwendung der vom Benutzer zugewiesenen verwalteten Identität.
    • Fügt der vom Benutzer zugewiesenen verwalteten Identität eine Rollenzuweisung für den Zugriff auf die Azure Key Vault hinzu.
    • Fügt eine mindestens geheime Anbieterklasse hinzu, die der Azure IoT Einsatz Instanz zugeordnet ist.
    # Variable block
    AIO_INSTANCE_NAME="<AIO_INSTANCE_NAME>"
    RESOURCE_GROUP="<RESOURCE_GROUP>"
    USER_ASSIGNED_MI_NAME="<USER_ASSIGNED_MI_NAME>"
    KEYVAULT_NAME="<KEYVAULT_NAME>"
    
    #Get the resource ID of the user-assigned managed identity
    USER_ASSIGNED_MI_RESOURCE_ID=$(az identity show --name $USER_ASSIGNED_MI_NAME --resource-group $RESOURCE_GROUP --query id --output tsv)
    
    #Get the resource ID of the key vault
    KEYVAULT_RESOURCE_ID=$(az keyvault show --name $KEYVAULT_NAME --resource-group $RESOURCE_GROUP --query id --output tsv)
    
    #Enable secret synchronization
    az iot ops secretsync enable --instance $AIO_INSTANCE_NAME \
                                 --resource-group $RESOURCE_GROUP \
                                 --mi-user-assigned $USER_ASSIGNED_MI_RESOURCE_ID \
                                 --kv-resource-id $KEYVAULT_RESOURCE_ID
    

Nachdem die Einrichtung der geheimen Synchronisierung abgeschlossen ist, können Sie sich auf Manage geheime Schlüssel für Ihre Azure IoT Einsatz Bereitstellung beziehen, um zu erfahren, wie Geheime schlüssel mit Azure IoT Einsatz verwendet werden.

Einrichten einer benutzerseitig zugewiesenen verwalteten Identität für Cloudverbindungen

Einige Azure IoT Einsatz Komponenten, z. B. Datenflussendpunkte, verwenden eine vom Benutzer zugewiesene verwaltete Identität für Cloudverbindungen. Wir empfehlen, dass Sie eine andere Identität verwenden als die, die Sie zum Einrichten der Geheimnisverwaltung verwendet haben.

  1. Erstellen Sie eine benutzerseitig zugewiesene verwaltete Identität, die für Cloudverbindungen verwendet wird.

    Note

    Sie müssen die Identitätsberechtigung für die Cloudressource erteilen, für die Sie die verwaltete Identität verwenden möchten.

  2. Verwenden Sie den Befehl az iot ops identity assign, um die Identität der Azure IoT Einsatz Instanz zuzuweisen. Mit diesem Befehl werden auch federierte Identitätsberechtigungen mithilfe des OIDC-Anbieters des angegebenen verbundenen Clusters und des Azure IoT Einsatz-Dienstkontos erstellt.

    Important

    Die Standardversion dieses Befehls weist eine Identität für Datenflüsse zu. Wenn Sie beabsichtigen, Datenflussdiagramme zu verwenden, schließen Sie den --usage Parameter mit dem Wert wasm-graphein.

    # Variable block
    AIO_INSTANCE_NAME="<AIO_INSTANCE_NAME>"
    RESOURCE_GROUP="<RESOURCE_GROUP>"
    USER_ASSIGNED_MI_NAME="<USER_ASSIGNED_MI_NAME FOR CLOUD CONNECTIONS>"
    
    #Get the resource ID of the user-assigned managed identity
    USER_ASSIGNED_MI_RESOURCE_ID=$(az identity show --name $USER_ASSIGNED_MI_NAME --resource-group $RESOURCE_GROUP --query id --output tsv)
    
    #Assign the identity to the Azure IoT Operations instance
    az iot ops identity assign --name $AIO_INSTANCE_NAME \
                               --resource-group $RESOURCE_GROUP \
                               --mi-user-assigned $USER_ASSIGNED_MI_RESOURCE_ID
    
  3. Starten Sie die Schema-Registry-Pods neu, um die neue Identität zu übernehmen.

    kubectl rollout restart statefulset adr-schema-registry -n azure-iot-operations
    

Sie können nun diese verwaltete Identität in Datenflussendpunkten für Cloudverbindungen verwenden.

Blockieren des Podzugriffs auf den Azure Instanzmetadatendienst

Wenn Sie Azure IoT Einsatz mit sicheren Einstellungen auf AKS bereitstellen, empfiehlt Microsoft das Blockieren des Podzugriffs auf den Azure Instanzmetadatendienst-Endpunkt. Informationen zum Aktivieren dieser Funktion finden Sie unter Blockieren des Pod-Zugriffs auf den Endpunkt des Azure Instanzmetadatendienstes (IMDS).