Udostępnij za pośrednictwem


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

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

Ten artykuł zawiera instrukcje dotyczące włączania bezpiecznych ustawień, jeśli nie zostało to zrobić podczas początkowego wdrażania.

Wymagania wstępne

  • Wystąpienie operacji usługi Azure IoT wdrożone z ustawieniami testu. Na przykład podczas wykonywania instrukcji w temacie Wdrażanie operacji usługi Azure IoT w klastrze Kubernetes z obsługą usługi Arc wybrano pozycję Ustawienia testu.

  • Interfejs wiersza polecenia platformy Azure zainstalowany na komputerze deweloperskim. Ten scenariusz wymaga interfejsu wiersza polecenia platformy Azure w wersji 2.64.0 lub nowszej. Użyj az --version polecenia , aby sprawdzić wersję i az upgrade zaktualizować w razie potrzeby. 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 Operacje usługi Azure IoT 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 azure-iot-ops
    

Włączanie klastra pod kątem bezpiecznych ustawień

Aby włączyć synchronizację wpisów tajnych dla wystąpienia operacji usługi Azure IoT, klaster musi być włączony jako wystawca OIDC i federacji tożsamości obciążenia. Ta konfiguracja jest wymagana, aby rozszerzenie magazynu wpisów tajnych synchronizowało wpisy tajne z magazynu kluczy platformy Azure i przechowywało je na brzegu jako wpisy tajne platformy Kubernetes.

W przypadku klastrów usługi Azure Kubernetes Service (AKS) funkcje wystawcy OIDC i tożsamości obciążenia można włączyć tylko w momencie 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 platformie Azure lokalnych wykonaj kroki wdrażania i konfigurowania tożsamości obciążenia w usłudze AKS włączonej przez klaster usługi Azure Arc, aby utworzyć nowy klaster , jeśli nie masz go z wymaganymi funkcjami.

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ć tożsamość wystawcy i obciążenia OIDC.

    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 wystawcy i tożsamości obciążenia OIDC 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:

    sudo nano /etc/rancher/k3s/config.yaml
    
  4. Dodaj następującą zawartość do config.yaml pliku, zastępując <SERVICE_ACCOUNT_ISSUER> symbol zastępczy adresem URL wystawcy klastra zanotowanymi 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 wpisami tajnymi

Zarządzanie wpisami tajnymi dla operacji usługi Azure IoT używa rozszerzenia magazynu wpisów tajnych do synchronizowania wpisów tajnych z magazynu kluczy platformy Azure i przechowywania ich na brzegu jako wpisów tajnych platformy Kubernetes. Rozszerzenie magazynu wpisów tajnych wymaga przypisanej przez użytkownika tożsamości zarządzanej z dostępem do magazynu kluczy platformy Azure, w którym są przechowywane wpisy tajne. Aby dowiedzieć się więcej, zobacz Co to są tożsamości zarządzane dla zasobów platformy Azure?.

Aby skonfigurować zarządzanie wpisami tajnymi:

  1. Utwórz magazyn kluczy platformy Azure używany 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 wpisów tajnych.

  3. Użyj polecenia az iot ops secretsync enable, aby skonfigurować wystąpienie operacji usługi Azure IoT na potrzeby synchronizacji wpisów tajnych. To polecenie:

    • Tworzy poświadczenia tożsamości federacyjnej przy użyciu tożsamości zarządzanej przypisanej przez użytkownika.
    • Dodaje przypisanie roli do tożsamości zarządzanej przypisanej przez użytkownika w celu uzyskania dostępu do magazynu kluczy platformy Azure.
    • 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 na potrzeby połączeń w chmurze. Zalecamy użycie oddzielnej tożsamości od tożsamości użytej do skonfigurowania zarządzania wpisami tajnymi.

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

    Uwaga

    Musisz przyznać tożsamości uprawnienie do niezależnie od zasobu w chmurze, dla którego będzie używana tożsamość zarządzana.

  2. Użyj polecenia az iot ops identity assign, aby przypisać tożsamość do wystąpienia operacji usługi Azure IoT. To polecenie tworzy również poświadczenia tożsamości federacyjnej przy użyciu wystawcy OIDC wskazanego 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
    

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