Udostępnij za pomocą


Włączanie bezpiecznych ustawień w operacjach usługi Azure IoT

Ustawienia zabezpieczeń dla operacji usługi Azure IoT obejmują konfigurację zarządzania tajemnicami i tożsamość zarządzaną przypisaną przez użytkownika na potrzeby połączeń chmurowych; na przykład serwer OPC UA lub punkty końcowe przepływu danych.

Ten artykuł zawiera instrukcje dotyczące włączania ustawień zabezpieczeń, jeśli nie zrobiłeś tego podczas początkowego wdrożenia.

Wymagania wstępne

  • Wystąpienie operacji usługi Azure IoT wdrożone z ustawieniami testowymi.

  • Azure CLI zainstalowany na komputerze deweloperskim. Ten scenariusz wymaga interfejsu wiersza polecenia platformy Azure w wersji 2.53.0 lub nowszej. Użyj az --version do sprawdzenia swojej wersji i az upgrade do aktualizacji, jeśli to konieczne. Aby uzyskać więcej informacji, zobacz Jak zainstalować interfejs wiersza polecenia platformy Azure.

  • Najnowsza wersja rozszerzenia connectedk8s dla interfejsu wiersza polecenia platformy Azure. Użyj następującego polecenia, aby dodać rozszerzenie lub zaktualizować je do najnowszej wersji:

    az extension add --upgrade --name connectedk8s
    
  • Rozszerzenie Azure IoT Operations dla Azure CLI. Użyj następującego polecenia, aby dodać rozszerzenie lub zaktualizować je do najnowszej wersji:

    az extension add --upgrade --name azure-iot-ops
    

Włącz klaster dla bezpiecznych ustawień

Aby włączyć synchronizację wpisów tajnych dla wystąpienia operacji usługi Azure IoT, w klastrze muszą być włączone funkcje wystawca OIDC i federacja tożsamości obciążenia. Ta konfiguracja jest wymagana, aby rozszerzenie magazynu sekretów usługi Azure Key Vault synchronizowało sekrety z usługi Azure Key Vault i przechowywało je na brzegu jako sekrety Kubernetes.

W przypadku klastrów usługi Azure Kubernetes Service (AKS) funkcje wystawcy OIDC i tożsamości zadania można włączyć wyłącznie podczas tworzenia klastra. W przypadku klastrów w usłudze AKS Edge Essentials zautomatyzowany skrypt domyślnie włącza te funkcje. W przypadku klastrów usługi AKS na lokalnej platformie Azure wykonaj kroki wdrażania i konfigurowania tożsamości obciążenia na klastrze usługi AKS włączonym przez Azure Arc, aby stworzyć nowy klaster, jeśli nie masz takiego z wymaganymi funkcjonalnościami.

W przypadku klastrów k3s na platformie Kubernetes można zaktualizować istniejący klaster. Aby włączyć i skonfigurować te funkcje, wykonaj następujące czynności:

  1. Zaktualizuj klaster, aby włączyć wydawcę OIDC i tożsamość zadania.

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

    Jeśli podczas tworzenia klastra włączono funkcje wystawcy OIDC i tożsamości obciążenia, nie trzeba ponownie uruchamiać poprzedniego polecenia. Użyj następującego polecenia, aby sprawdzić stan funkcji systemu wystawcy OIDC oraz tożsamości obciążenia dla klastra:

    az connectedk8s show -g <RESOURCE_GROUP> -n <CLUSTER_NAME> --query "{ClusterName:name, OIDCIssuerEnabled:oidcIssuerProfile.enabled, WorkloadIdentityEnabled:securityProfile.workloadIdentity.enabled}"
    
  2. Pobierz adres URL wystawcy klastra.

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

    Zanotuj dane wyjściowe z tego polecenia, które mają być używane w następnych krokach.

  3. Utwórz plik konfiguracji k3s na maszynie, na której wdrożono klaster Kubernetes:

    sudo nano /etc/rancher/k3s/config.yaml
    
  4. Dodaj do pliku config.yaml następującą zawartość, zastępując <SERVICE_ACCOUNT_ISSUER> symbol zastępczy adresem URL wystawcy klastra, który zanotowałeś wcześniej.

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

    Zapisz plik i zamknij edytor nano.

  5. Uruchom ponownie usługę k3s:

    sudo systemctl restart k3s
    

Konfigurowanie zarządzania tajnymi danymi

Zarządzanie tajemnicami dla operacji Azure IoT wykorzystuje rozszerzenie Secret Store do synchronizacji tajemnic z Azure Key Vault i przechowywania ich na urządzeniach brzegowych jako tajemnic Kubernetes. Rozszerzenie Secret Store wymaga przypisanej przez użytkownika tożsamości zarządzanej z dostępem do Azure Key Vault, w którym są przechowywane sekrety. Aby dowiedzieć się więcej, zobacz Co to są tożsamości zarządzane dla zasobów platformy Azure?.

Aby skonfigurować zarządzanie sekretami:

  1. Utwórz usługę Azure Key Vault używaną do przechowywania wpisów tajnych i nadaj kontu użytkownika uprawnienia do zarządzania wpisami tajnymi za Key Vault Secrets Officer pomocą roli.

  2. Utwórz tożsamość zarządzaną przypisaną przez użytkownika dla rozszerzenia magazynu tajemnic do uzyskania dostępu do magazynu kluczy.

  3. Użyj polecenia az iot ops secretsync enable, aby skonfigurować instancję Azure IoT Operations do synchronizacji tajnych danych. To polecenie:

    • Tworzy poświadczenia tożsamości federacyjnej, wykorzystując zarządzaną tożsamość przypisaną przez użytkownika.
    • Dodaje przypisanie roli do tożsamości zarządzanej przypisanej przez użytkownika w celu uzyskania dostępu do usługi Azure Key Vault.
    • Dodaje minimalną klasę dostawcy wpisów tajnych skojarzonych z wystąpieniem operacji usługi Azure IoT.
    # 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
    

Po zakończeniu konfigurowania synchronizacji wpisów tajnych możesz zapoznać się z tematem Zarządzanie wpisami tajnymi dla wdrożenia operacji usługi Azure IoT , aby dowiedzieć się, jak używać wpisów tajnych w operacjach usługi Azure IoT.

Konfigurowanie tożsamości zarządzanej przypisanej przez użytkownika dla połączeń w chmurze

Niektóre składniki operacji usługi Azure IoT, takie jak punkty końcowe przepływu danych, używają tożsamości zarządzanej przypisanej przez użytkownika do połączeń w chmurze. Zalecamy użycie oddzielnej tożsamości od tej użytej do skonfigurowania zarządzania danymi poufnymi.

  1. Utwórz tożsamość zarządzaną przypisaną przez użytkownika , która jest używana na potrzeby połączeń w chmurze.

    Uwaga / Notatka

    Musisz przyznać tożsamości uprawnienia do zasobu w chmurze, z którego zamierzasz korzystać z tożsamością zarządzaną.

  2. Użyj polecenia az iot ops identity assign, aby przypisać tożsamość do instancji Azure IoT Operations. To polecenie tworzy również poświadczenie tożsamości federacyjnej przy użyciu wystawcy OIDC połączonego klastra i konta usługi Azure IoT Operations.

    # 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. Uruchom ponownie zasobniki rejestru schematów, aby zastosować nową tożsamość.

    kubectl delete pods adr-schema-registry-0 adr-schema-registry-1 -n azure-iot-operations
    

Teraz możesz użyć tej tożsamości zarządzanej w punktach końcowych przepływu danych na potrzeby połączeń w chmurze.