次の方法で共有


Azure IoT Operations デプロイ用のシークレットの管理

Azure IoT Operations は、クラウドでの管理されたコンテナー ソリューションとして Azure Key Vault を使い、Kubernetes 用 Azure Key Vault Secret Store 拡張機能を使ってクラウドからシークレットを同期して、それらを Kubernetes シークレットとしてエッジに格納します。 コネクタやデータフローなどのエッジ リソースでは、外部システムに接続するときにこれらのシークレットを認証に使用できます。

前提条件

セキュリティ保護設定を使ってデプロイされた Azure IoT Operations インスタンス。 テスト設定を使ってデプロイした Azure IoT Operations で、シークレットを使いたい場合は、最初にセキュリティ保護設定を有効にする必要があります。

Azure Key Vault のアクセス許可を構成する

操作エクスペリエンスを使用してキー コンテナーにシークレットを作成するには、Azure のリソース レベルで Key Vault Secrets Officer のアクセス許可が必要です。

テスト環境または開発環境で、次の手順を使用して、Azure IoT Operations インスタンスと Azure Key Vault インスタンスがデプロイされているリソース グループ レベルで Key Vault Secrets Officer ロールをユーザーに割り当てます。

  1. リソース グループの名前を見つけるには、 操作エクスペリエンス Web UI に移動し、[ インスタンス] ページに移動し、Azure IoT Operations インスタンスを見つけます。 リソース グループ名が [ リソース グループ ] フィールドに表示されます。

  2. Azure portal に移動し、Azure IoT Operations インスタンスと Azure Key Vault インスタンスがデプロイされているリソース グループに移動します。

    ヒント

    Azure portal の上部にある検索ボックスを使用して、名前を入力してリソース グループをすばやく見つけます。

  3. 左側のメニューから [アクセス制御 (IAM)] を選択します。 次に、[ + ロールの割り当ての追加] > [ロールの割り当ての追加] を選択します。

  4. [ ロール ] タブで、ロールの一覧から [Key Vault Secrets Officer ] を選択し、[ 次へ] を選択します。

  5. [ メンバー ] タブで、[ ユーザー、グループ、またはサービス プリンシパル] を選択し、[ メンバーの選択] を選択し、 Key Vault シークレット担当者 ロールを割り当てるユーザーを選択して、[ 次へ] を選択します。

  6. [確認と割り当て] を選択して、ロールの割り当てを完了します。

運用環境では、ベスト プラクティスに従って、Azure IoT Operations で使用する Azure Key Vault をセキュリティで保護します。 詳細については、「 Azure Key Vault を使用するためのベスト プラクティス」を参照してください。

シークレットを追加して使用する

Azure IoT Operations のシークレット管理は、Secret Store 拡張機能を使って Azure Key Vault からシークレットを同期し、Kubernetes シークレットとしてエッジに格納します。 デプロイの間にセキュリティ保護設定を有効にした時点で、シークレット管理用に Azure Key Vault を選択しています。 この Key Vault に、Azure IoT Operations 内で使われるすべてのシークレットが格納されます。

Azure IoT Operations インスタンスは、1 つの Azure Key Vault でのみ動作します。インスタンスごとに複数のキー コンテナーを使うことはサポートされていません。

シークレットのセットアップの管理手順が完了したら、Azure Key Vault へのシークレットの追加を開始し、操作エクスペリエンス Web UI を使用して、デバイスまたはデータ フロー エンドポイントで使用される Kubernetes クラスターに同期できます。

シークレットは、認証のためにデバイスとデータ フロー エンドポイントで使用されます。 このセクションでは、デバイスを例として使用します。 データ フロー エンドポイントにも同じプロセスを適用できます。 Azure Key Vault でシークレットを直接作成し、それをクラスターに自動的に同期させるか、キー コンテナーの既存のシークレット参照を使用するオプションがあります。

  1. 操作エクスペリエンス Web UI の [デバイス] ページに移動します。

  2. 新しいシークレット参照を追加するには、新しいデバイスの作成時に [ 参照の追加] を選択します。

    操作エクスペリエンスでシークレットを選択するときの [Azure Key Vault からの追加] と [新しい作成] オプションを示すスクリーンショット。

    • 新しいシークレットを作成する: Azure Key Vault にシークレット参照を作成し、シークレット ストア拡張機能を使用してシークレットをクラスターに自動的に同期します。 このシナリオに必要なシークレットを事前にキー コンテナーに作成していない場合は、このオプションを使います。

    • Azure Key Vault から追加する: キー コンテナー内の既存のシークレットが以前に同期されていない場合は、クラスターに同期します。 このオプションを選ぶと、選択されているキー コンテナー内のシークレット参照の一覧が表示されます。 事前にキー コンテナーにシークレットを作成した場合は、このオプションを使います。 シークレットの最新バージョンのみがクラスターに同期されます

  3. デバイスまたはデータ フロー エンドポイントにユーザー名とパスワードの参照を追加する場合は、同期されたシークレットに名前を付ける必要があります。 シークレット参照は、この指定された名前で 1 つのシークレット同期リソースとしてクラスターに保存されます。 次のスクリーンショットの例では、ユーザー名とパスワードの参照が edp1secrets としてクラスターに保存されます。

    操作エクスペリエンスで認証モードでユーザー名パスワードが選択されている場合に同期されたシークレット名フィールドを示すスクリーンショット。

同期されたシークレットを管理する

このセクションでは、デバイスを例として使用します。 同じプロセスをデータ フロー エンドポイントに適用できます。

  1. 操作エクスペリエンス Web UI の [デバイス] ページに移動します。

  2. シークレットの一覧を表示するには、[ 証明書とシークレットの管理 ] を選択し、[ シークレット] を選択します。

    [操作エクスペリエンス シークレット] ページの同期されたシークレットの一覧を示すスクリーンショット。

[ シークレット ] ページを使用して、デバイスとデータ フロー エンドポイントの同期されたシークレットを表示できます。 [シークレット] ページには、表示しているリソースのエッジにある現在同期されているすべてのシークレットの一覧が表示されます。 同期されたシークレットは、それを使うリソースに応じて、1 つまたは複数のシークレット参照を表します。 同期されたシークレットに適用されるすべての操作は、同期されたシークレット内に含まれるすべてのシークレット参照に適用されます。

同期されたシークレットは、[ シークレット ] ページでも削除できます。 同期されたシークレットを削除すると、同期されたシークレットのみが Kubernetes クラスターから削除され、含まれているシークレット参照は Azure Key Vault から削除されません。 証明書シークレットは、キー コンテナーから手動で削除する必要があります。

警告

Kubernetes クラスター内の SecretProviderClass および SecretSync カスタム リソースを直接編集すると、Azure IoT Operations のシークレット フローが中断される可能性があります。 シークレットに関連する操作については、操作エクスペリエンス Web UI を使用します。

同期されたシークレットを削除する前に、Azure IoT Operations コンポーネントからのそのシークレットへのすべての参照が削除されていることを確認してください。