Azure IoT Operations でセキュリティで保護された設定を有効にする
Azure IoT Operations のセキュリティで保護された設定には、OPC UA サーバーやデータフロー エンドポイントなどのクラウド接続用のシークレット管理およびユーザー割り当てマネージド ID のセットアップが含まれます。
この記事では、初期デプロイ中に有効にしなかった場合にセキュリティで保護された設定を有効にする手順について説明します。
前提条件
テスト設定でデプロイされた Azure IoT Operations インスタンス。 たとえば、「Azure IoT Operations を Arc 対応 Kubernetes クラスターにデプロイする」の手順に従う場合は、[テスト設定] を選択します。
開発マシンにインストールされた Azure CLI。 このシナリオには、Azure CLI バージョン 2.64.0 以降が必要です。
az --version
を使用してバージョンを確認し、必要に応じてaz upgrade
を使用して更新します。 詳細については、Azure CLIのインストール方法に関するページを参照してください。Azure CLI 用の Azure IoT Operations 拡張機能。 次のコマンドを使用して、拡張機能を追加するか、それを最新バージョンに更新します。
az extension add --upgrade --name azure-iot-ops
シークレット管理を設定する
Azure IoT Operations のシークレット管理では、Secret Store 拡張機能を使用して Azure キー コンテナーからシークレットを同期し、Kubernetes シークレットとしてエッジに格納します。 Secret Store 拡張機能には、シークレットが格納されている Azure キー コンテナーにアクセスできるユーザー割り当てマネージド ID が必要です。 詳しくは、「Azure リソースのマネージド ID とは」をご覧ください。
シークレット管理を設定するには:
シークレットの格納に使用される Azure キー コンテナーを作成し、
Key Vault Secrets Officer
ロールを使用してシークレットを管理するためのアクセス許可をユーザー アカウントに付与します。Secret Store 拡張機能のためのユーザー割り当てマネージド ID を作成します。
az iot ops secretsync enable コマンドを使用して、シークレット同期用に Azure IoT Operations インスタンスを設定します。 このコマンドは、次の操作を行います。
- ユーザー割り当てマネージド ID を使用してフェデレーション ID 資格情報を作成します。
- Azure キー コンテナーにアクセスするために、ユーザー割り当てマネージド ID にロールの割り当てを追加します。
- Azure IoT Operations インスタンスに関連付けられている最小シークレット プロバイダー クラスを追加します。
# 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 Operations デプロイ用のシークレットを管理する」を参照して、Azure IoT Operations でシークレットを使用する方法を学習できます。
クラウド接続用にユーザー割り当てマネージド ID を設定する
データフロー エンドポイントなどの一部の Azure IoT Operations コンポーネントでは、クラウド接続にユーザー割り当てマネージド ID が使用されます。 シークレット管理の設定に使用したものとは別の ID を使用することをお勧めします。
クラウド接続に使用されるユーザー割り当てマネージド ID を作成します。
Note
マネージド ID を使用するクラウド リソースにはいずれにも、ID アクセス許可を付与する必要があります。
az iot ops identity assign コマンドを使用して、Azure IoT Operations インスタンスに ID を割り当てます。 このコマンドでは、指定された接続クラスターの OIDC 発行者と Azure IoT Operations サービス アカウントを使用して、フェデレーション ID 資格情報も作成します。
# 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
これで、このマネージド ID をデータフロー エンドポイントでクラウド接続に使用できるようになりました。