外部通信用の証明書を管理する

Azure IoT Operationsでは、TLS を使用してすべての通信を暗号化します。 この記事では、外部 OPC UA サーバーの認証など、外部通信用の証明書を管理する方法について説明します。

既定の自己署名発行者や独自の CA 発行者の持ち込みなど、内部通信用の証明書の管理については、「Bring Your Own Issuer」を参照してください。

[前提条件]

外部通信用の証明書を管理する

Azure IoT Operations では、クラウド上のマネージド コンテナー ソリューションとして Azure Key Vault を使用し、 Kubernetes 用の Azure Key Vault シークレット ストア拡張機能 を使用してクラウドからシークレットを同期し、それらを Kubernetes シークレットとしてエッジに格納します。

Important

Azure IoT Operations では証明書を使用して外部通信をセキュリティで保護しますが、これらの証明書はシークレットとして Azure Key Vault に格納されます。 Azure Key Vault に証明書を追加するときは、証明書リソースとしてではなく、シークレットとして追加してください。

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 ロールベースのアクセス制御があることを確認します。

証明書を追加して使用する

コネクタは、証明書管理エクスペリエンスを使用して、外部サーバーへのアプリケーション認証を構成します。 たとえば、OPC UA 用コネクタは、信頼リストの証明書を使用して、接続先の OPC UA サーバーのサーバー ID を認証します。

安全な設定で Azure IoT Operations をデプロイすると、Azure Key Vault への証明書の追加を開始し、それらを Kubernetes クラスターと同期して、外部接続用の "信頼リスト" と "発行者リスト" のストアで使用できるようになります。 各コネクタには、信頼して接続する外部サーバーの証明書を格納するための独自の信頼リストがあります。

操作エクスペリエンス Web UI またはAzure CLIを使用して、外部通信の証明書を管理できます。

外部通信の証明書を管理するには、次の手順に従います。

  1. Azure IoT Operations エクスペリエンスに移動し、サイトと Azure IoT Operations インスタンスを選択します。

  2. 左側のナビゲーション ウィンドウで、[デバイス] を選択します。

  3. [ 証明書とシークレットの管理] を選択します。

    左側のナビゲーション ウィンドウの [証明書とシークレットの管理] オプションを示すスクリーンショット。

  4. [証明書とシークレット] ページで、[ 新しい証明書の追加] を選択します。

    [デバイス] ページの [新しい証明書の追加] ボタンを示すスクリーンショット。

  5. 新しい証明書は、次の 2 つの方法で追加できます。

    • 証明書のアップロード: シークレットとして追加する証明書を Azure Key Vault にアップロードし、シークレット ストア拡張機能を使用してクラスターに自動的に同期します。

      • アップロードした証明書の詳細を表示して、Azure Key Vault に追加してクラスターに同期する前に、正しい証明書があることを確認します。
      • 後でシークレットを表すシークレットを認識できるように、わかりやすい名前を使用します。
      • 証明書を使用するコネクタに適した証明書ストアを選択します。 たとえば、 OPC UA 信頼リストなどです

      [デバイス] ページに新しい証明書を追加するときの [証明書のアップロード] オプションを示すスクリーンショット。

      証明書をアップロードするだけでは、シークレットは Azure Key Vault に追加され、クラスターに同期されません。変更を適用するには、[ 適用 ] を選択する必要があります。

    • Azure Key Vault からの追加: クラスターに同期する Azure Key Vault から既存のシークレットを追加します。

      [デバイス] ページに新しい証明書を追加するときの [Azure Key Vault から追加] オプションを示すスクリーンショット。

      クラスターに同期する証明書を保持するシークレットを選択してください。 正しい証明書ではないシークレットを選択すると、接続が失敗します。

  6. リスト ビューを使用すると、同期された証明書を管理できます。 同期されたすべての証明書と、同期先の証明書ストアを表示できます。

    [デバイス] ページの証明書の一覧と、信頼リストと発行者リストでフィルター処理する方法を示すスクリーンショット。

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

証明書をシークレットとして Azure Key Vault に追加する

操作エクスペリエンスを使用して、以前に Azure Key Vault に追加された既存の証明書を選択する場合は、シークレットが Azure IoT Operations でサポートされている形式とエンコードであることを確認します。

PEM 証明書シークレットを Azure Key Vault に追加するには、次の例のようなコマンドを使用できます。

az keyvault secret set \
  --vault-name <your-key-vault-name> \
  --name my-cert-pem \
  --file ./my-cert.pem \
  --encoding hex \
  --content-type 'application/x-pem-file'

バイナリ DER 証明書シークレットを Azure Key Vault に追加するには、次の例のようなコマンドを使用します。

az keyvault secret set \
  --vault-name <your-key-vault-name> \
  --name my-cert-der \
  --file ./my-cert.der \
  --encoding hex \
  --content-type 'application/pkix-cert'