Поделиться через


Включение безопасных параметров в операциях Интернета вещей Azure

Безопасные параметры для операций Интернета вещей Azure включают настройку управления секретами и назначаемое пользователем управляемое удостоверение для облачных подключений; например, сервер OPC UA или конечные точки потока данных.

В этой статье приведены инструкции по включению безопасных параметров, если вы этого не сделали во время первоначального развертывания.

Необходимые компоненты

  • Экземпляр операций Интернета вещей Azure, развернутый с параметрами теста. Например, вы выбрали параметры тестирования при выполнении инструкций по развертыванию операций Интернета вещей Azure в кластере Kubernetes с поддержкой Arc.

  • Azure CLI, установленный на компьютере разработки. Для этого сценария требуется Azure CLI версии 2.53.0 или более поздней. Используйте az --version для проверки версии и az upgrade обновления при необходимости. Дополнительные сведения см. в статье "Установка Azure CLI".

  • Последняя версия расширения connectedk8s для Azure CLI. Используйте следующую команду, чтобы добавить расширение или обновить его до последней версии:

    az extension add --upgrade --name connectedk8s
    
  • Расширение операций Интернета вещей Azure для Azure CLI. Используйте следующую команду, чтобы добавить расширение или обновить его до последней версии:

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

Включение кластера для безопасных параметров

Чтобы включить синхронизацию секретов для экземпляра операций Интернета вещей Azure, кластер должен быть включен в качестве издателя OIDC и федерации удостоверений рабочей нагрузки. Эта конфигурация необходима для синхронизации секретов из хранилища ключей Azure и хранения их на границе как секреты Kubernetes.

Для кластеров Служба Azure Kubernetes (AKS) функция издателя OIDC и удостоверений рабочей нагрузки может быть включена только во время создания кластера. Для кластеров в AKS Edge Essentials автоматический скрипт включает эти функции по умолчанию. Для кластеров AKS в Локальной среде Azure выполните действия по развертыванию и настройке удостоверения рабочей нагрузки в кластере AKS, включенном кластером Azure Arc, чтобы создать новый кластер, если у вас нет необходимых функций.

Для кластеров k3s в Kubernetes можно обновить существующий кластер. Чтобы включить и настроить эти функции, выполните следующие действия.

  1. Обновите кластер, чтобы включить издателя OIDC и удостоверение рабочей нагрузки.

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

    Если вы включили функции издателя OIDC и удостоверений рабочей нагрузки при создании кластера, вам не нужно снова выполнить предыдущую команду. Используйте следующую команду, чтобы проверить состояние издателя OIDC и функций удостоверений рабочей нагрузки для кластера:

    az connectedk8s show -g <RESOURCE_GROUP> -n <CLUSTER_NAME> --query "{ClusterName:name, OIDCIssuerEnabled:oidcIssuerProfile.enabled, WorkloadIdentityEnabled:securityProfile.workloadIdentity.enabled}"
    
  2. Получите URL-адрес издателя кластера.

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

    Запишите выходные данные этой команды, которые будут использоваться в следующих шагах.

  3. Создайте файл конфигурации k3s:

    sudo nano /etc/rancher/k3s/config.yaml
    
  4. Добавьте в файл следующее содержимое config.yaml , заменив <SERVICE_ACCOUNT_ISSUER> заполнитель URL-адресом издателя кластера, который вы записали ранее:

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

    Сохраните файл и закройте редактор nano.

  5. Перезапустите службу k3s:

    sudo systemctl restart k3s
    

Настройка управления секретами

Управление секретами для операций Интернета вещей Azure использует расширение Secret Store для синхронизации секретов из хранилища ключей Azure и хранения их в пограничном режиме как секреты Kubernetes. Для расширения Secret Store требуется управляемое удостоверение, назначаемое пользователем, с доступом к хранилищу ключей Azure, в котором хранятся секреты. Дополнительные сведения см. в статье "Что такое управляемые удостоверения для ресурсов Azure?".

Чтобы настроить управление секретами, выполните следующие действия.

  1. Создайте хранилище ключей Azure, используемое для хранения секретов, и предоставьте учетным записям пользователя разрешения на управление секретами с Key Vault Secrets Officer помощью роли.

  2. Создайте управляемое удостоверение , назначаемое пользователем, для расширения Secret Store.

  3. Используйте команду az iot ops secretsync, чтобы настроить экземпляр Операций Интернета вещей Azure для синхронизации секретов. Команда:

    • Создает учетные данные федеративного удостоверения с помощью управляемого удостоверения, назначаемого пользователем.
    • Добавляет назначение роли в управляемое удостоверение, назначаемое пользователем, для доступа к хранилищу ключей Azure.
    • Добавляет минимальный класс поставщика секретов, связанный с экземпляром Операций Интернета вещей Azure.
    # 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
    

Теперь, когда настройка синхронизации секретов завершена, см. раздел "Управление секретами для развертывания операций Интернета вещей Azure", чтобы узнать, как использовать секреты с операциями Интернета вещей Azure.

Настройка управляемого удостоверения, назначаемого пользователем для облачных подключений

Некоторые компоненты операций Интернета вещей Azure, такие как конечные точки потока данных, используют управляемое удостоверение, назначаемое пользователем, для облачных подключений. Рекомендуется использовать отдельное удостоверение от используемого для настройки управления секретами.

  1. Создайте управляемое удостоверение , назначаемое пользователем, которое используется для облачных подключений.

    Примечание.

    Вам потребуется предоставить удостоверению разрешение на любой облачный ресурс, для которого будет использоваться управляемое удостоверение.

  2. Используйте команду az iot ops identity assign, чтобы назначить удостоверение экземпляру Операций Интернета вещей Azure. Эта команда также создает федеративные учетные данные удостоверения с помощью издателя OIDC указанного подключенного кластера и учетной записи службы операций Интернета вещей Azure.

    # 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
    

Теперь вы можете использовать это управляемое удостоверение в конечных точках потока данных для облачных подключений.