Azure IoT Operations デプロイ用のシークレットの管理
Azure IoT Operations は、クラウドでの管理されたコンテナー ソリューションとして Azure Key Vault を使い、Kubernetes 用 Azure Key Vault Secret Store 拡張機能を使ってクラウドからシークレットを同期して、それらを Kubernetes シークレットとしてエッジに格納します。
前提条件
セキュリティ保護設定を使ってデプロイされた Azure IoT Operations インスタンス。 テスト設定を使ってデプロイした Azure IoT Operations で、シークレットを使いたい場合は、最初にセキュリティ保護設定を有効にする必要があります。
キー コンテナーにシークレットを作成するには、リソース レベルでのシークレット責任者アクセス許可が必要です。 ユーザーへのロールの割り当てについては、「Azure ロールを割り当てる手順」をご覧ください。
シークレットを追加して使用する
Azure IoT Operations のシークレット管理は、Secret Store 拡張機能を使って Azure Key Vault からシークレットを同期し、Kubernetes シークレットとしてエッジに格納します。 デプロイの間にセキュリティ保護設定を有効にした時点で、シークレット管理用に Azure Key Vault を選択しています。 この Key Vault に、Azure IoT Operations 内で使われるすべてのシークレットが格納されます。
Note
Azure IoT Operations インスタンスは、1 つの Azure Key Vault でのみ動作します。インスタンスごとに複数のキー コンテナーを使うことはサポートされていません。
シークレット管理設定手順を終えたら、Azure Key Vault へのシークレットの追加を開始し、Operations エクスペリエンス Web UI を使用して、資産エンドポイントまたはデータフロー エンドポイントで使用されるエッジにそれらを同期できます。
シークレットは、認証のために資産エンドポイントとデータフロー エンドポイントで使われます。 このセクションでは、例として資産エンドポイントを使いますが、データフロー エンドポイントにも同じように適用できます。 Azure Key Vault でシークレットを直接作成してそれをエッジに自動的に同期するか、キー コンテナーの既存のシークレット参照を使用することができます。
新しいシークレットを作成する: Azure Key Vault にシークレット参照を作成し、Secret Store 拡張機能を使ってエッジへのシークレットの自動同期も行います。 このシナリオに必要なシークレットを事前にキー コンテナーに作成していない場合は、このオプションを使います。
Azure Key Vault から追加する: 前にキー コンテナー内の既存のシークレットをエッジに同期しなかった場合は、それを同期します。 このオプションを選ぶと、選択されているキー コンテナー内のシークレット参照の一覧が表示されます。 事前にキー コンテナーにシークレットを作成した場合は、このオプションを使います。
資産エンドポイントまたはデータフロー エンドポイントにユーザー名とパスワードの参照を追加するときは、同期されるシークレットに名前を付ける必要があります。 シークレット参照は、この指定した名前を使って 1 つのリソースとしてエッジに保存されます。 次のスクリーンショットの例では、ユーザー名とパスワードの参照は edp1secrets としてエッジに保存されます。
同期されたシークレットを管理する
資産エンドポイントとデータフロー エンドポイントの [シークレットの管理] を使って、同期されたシークレットを管理できます。 シークレットの管理では、表示しているリソースについて現在エッジで同期されているすべてのシークレットの一覧が表示されます。 同期されたシークレットは、それを使うリソースに応じて、1 つまたは複数のシークレット参照を表します。 同期されたシークレットに適用されるすべての操作は、同期されたシークレット内に含まれるすべてのシークレット参照に適用されます。
シークレットの管理では同期されたシークレットを削除することもできます。 同期されたシークレットを削除すると、エッジから同期されたシークレットが削除されるだけであり、それに含まれるシークレット参照がキー コンテナーから削除されることはありません。
Note
同期されたシークレットを削除する前に、Azure IoT Operations コンポーネントからのそのシークレットへのすべての参照が削除されていることを確認してください。