在 Azure IoT 作業中啟用安全設定
Azure IoT 作業的安全設定包括秘密管理的設定,以及雲端連線的使用者指派受控識別;例如,OPC UA 伺服器或數據流端點。
如果您未在初始部署期間這麼做,本文提供啟用安全設定的指示。
必要條件
使用測試設定部署的 Azure IoT 作業實例。 例如,當您遵循將 Azure IoT 作業部署至已啟用 Arc 的 Kubernetes 叢集中的指示時,選擇 [測試設定]。
在您的開發電腦上安裝 Azure CLI。 此案例需要 Azure CLI 2.64.0 版或更高版本。 使用
az --version
檢查您的版本,並視需要更新az upgrade
。 如需詳細資訊,請參閱如何安裝 Azure CLI。適用於 Azure CLI 的 Azure IoT 操作延伸模組。 使用下列命令將延伸模組新增或更新至最新版本:
az extension add --upgrade --name azure-iot-ops
設定秘密管理
Azure IoT 作業的秘密管理會使用秘密存放區擴充功能來同步處理來自 Azure 金鑰保存庫的秘密,並將其儲存在邊緣做為 Kubernetes 秘密。 秘密存放區擴充功能需要使用者指派的受控識別,且可存取儲存秘密的 Azure 金鑰保存庫。 若要深入瞭解,請參閱 什麼是 Azure 資源的受控識別?。
若要設定秘密管理:
建立用來儲存秘密的 Azure 金鑰保存庫,並提供您的使用者帳戶許可權,以使用
Key Vault Secrets Officer
角色管理秘密。使用 az iot ops secretsync enable 命令來設定 Azure IoT 作業實例以進行秘密同步處理。 此命令:
- 使用使用者指派的受控識別來建立同盟身分識別認證。
- 將角色指派新增至使用者指派的受控識別,以存取 Azure 金鑰保存庫。
- 新增與 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
現在秘密同步處理設定已完成,您可以參閱 管理 Azure IoT 作業部署 的秘密,以瞭解如何搭配 Azure IoT 作業使用秘密。
設定雲端連線的使用者指派受控識別
某些 Azure IoT 作業元件,例如數據流端點,會針對雲端連線使用使用者指派的受控識別。 建議您使用與用來設定秘密管理的不同身分識別。
-
注意
您必須將身分識別許可權授與您使用受控識別的雲端資源。
使用 az iot ops identity assign 命令,將身分識別指派給 Azure IoT Operations 實例。 此命令也會使用所指出叢集的 OIDC 簽發者和 Azure IoT Operations 服務帳戶的 OIDC 簽發者來建立同盟身分識別認證。
# 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
現在,您可以在數據流端點中使用此受控識別來進行雲端連線。