次の方法で共有


Azure IoT MQ プレビューで Azure Key Vault または Kubernetes シークレットを使用してシークレットを管理する

重要

Azure Arc によって有効にされる Azure IoT Operations Preview は、 現在プレビュー段階です。 運用環境ではこのプレビュー ソフトウェアを使わないでください。

ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。

Azure Key Vault を使用して、Kubernetes シークレットの代わりに、Azure IoT MQ プレビューの分散 MQTT ブローカーのシークレットを管理できます。 この記事では、ブローカー用に Key Vault を設定し、それを使用してシークレットを管理する方法について説明します。

前提条件

シークレット管理に Azure Key Vault を使用する

keyVault フィールドは、Kubernetes シークレット (secretName) が使用されている場所で使用できます。 次の表では、keyVault フィールドのプロパティについて説明します。

プロパティ Required 説明
コンテナー はい シークレットを格納する Azure Key Vault を指定します。
vault.name はい Azure Key Vault の名前を指定します。 Azure portal から Key Vault 名を取得するには、Key Vault インスタンスに移動し、[概要] ページから名前をコピーします。
vault.directoryId はい Microsoft Entra テナント ID を指定します。 Azure portal からテナント ID を取得するには、Key Vault インスタンスに移動し、[概要] ページからテナント ID をコピーします。
vault.credentials.servicePrincipalLocalSecretName はい サービス プリンシパルの資格情報を含むシークレットの名前を指定します。
vaultSecret はい (通常の Key Vault シークレットを使用する場合) Azure Key Vault 内のシークレットを指定します。
vaultSecret.name はい シークレットの名前を指定します。
vaultSecret.version いいえ シークレットのバージョンを指定します。
vaultCert はい (Key Vault 証明書を使用する場合) Azure Key Vault 内の証明書を指定します。
vaultCert.name はい 証明書シークレットの名前を指定します。
vaultCert.version いいえ 証明書シークレットのバージョンを指定します。
vaultCaChainSecret はい (証明書チェーンを使用する場合) Azure Key Vault 内の証明書チェーンを指定します。
vaultCaChainSecret.name はい 証明書チェーンの名前を指定します。
vaultCaChainSecret.version いいえ 証明書チェーンのバージョンを指定します。
username いいえ Event Hubs Kafka コネクターでのみ使用されます。「Azure IoT MQ と Event Hubs または Kafka の間でメッセージを送受信する」を参照してください。

使用するシークレットの種類に応じて、次のどのフィールドを使用できるかが決まります。

  • vaultSecret: 通常のシークレットを使用する場合は、このフィールドを使用します。 たとえば、usernamePassword フィールドを使用して BrokerAuthentication リソースを構成するためにこのフィールドを使用できます。
  • vaultCert: クライアント証明書およびキーとともに証明書タイプのシークレットを使用する場合は、このフィールドを使用します。 たとえば、BrokerListener で TLS を有効にするためにこのフィールドを使用できます。
  • vaultCaChainSecret: 追加のすべての中間またはルート証明書を含む、完全な証明書チェーンをリモート サーバーに提示する必要がある場合は、このフィールドを使用します。 たとえば、remoteBrokerConnection フィールドを使用して MqttBridgeConnector リソースを構成するためにこのフィールドを使用できます。 このフィールドを使用するには、(証明書タイプでなく) 複数行の通常のシークレットとしての PEM 形式の秘密キーがない X.509 証明書を Key Vault にインポートします。 このフィールドは、クライアント証明書と秘密キーを持つ vaultCert に加えて使用する必要があります。

たとえば、サーバー証明書のシークレット管理に Azure Key Vault を使用する TLS BrokerListener を作成するには、次の YAML を使用します。

apiVersion: mq.iotoperations.azure.com/v1beta1
kind: BrokerListener
metadata:
  name: tls-listener-manual
  namespace: azure-iot-operations
spec:
  brokerRef: broker
  authenticationEnabled: true
  authorizationEnabled: false
  port: 8883
  tls:
    keyVault:
      vault:
        name: my-key-vault
        directoryId: <AKV directory ID>
        credentials:
          servicePrincipalLocalSecretName: aio-akv-sp
      vaultCert:
        name: my-server-certificate
        # version: 939ecc2...

次の例は、BrokerAuthentication リソースの usernamePassword フィールドに対して Azure Key Vault を使用する方法を示します。

apiVersion: mq.iotoperations.azure.com/v1beta1
kind: BrokerAuthentication
metadata:
  name: my-authentication
  namespace: azure-iot-operations
spec:
  listenerRef: 
    - tls-listener-manual
  authenicationMethods:
    - usernamePassword:
        keyVault:
          vault:
            name: my-key-vault
            directoryId: <AKV directory ID>
            credentials:
              servicePrincipalLocalSecretName: aio-akv-sp
          vaultSecret:
            name: my-username-password-db
            # version: 939ecc2...

この例では、MQTT ブリッジのリモート ブローカー資格情報に Azure Key Vault を使用する方法を示します。

apiVersion: mq.iotoperations.azure.com/v1beta1
kind: MqttBridgeConnector
metadata:
  name: my-bridge
  namespace: azure-iot-operations
spec:
  image:
    repository: mcr.microsoft.com/azureiotoperations/mqttbridge
    tag: 0.4.0-preview
    pullPolicy: IfNotPresent
  protocol: v5
  bridgeInstances: 1
  remoteBrokerConnection:
    endpoint: example.broker.endpoint:8883
    tls:
      tlsEnabled: true
      trustedCaCertificateConfigMap: my-ca-certificate
    authentication:
      x509:
        keyVault:
          vault:
            name: my-key-vault
            directoryId: <AKV directory ID>
            credentials:
              servicePrincipalLocalSecretName: aio-akv-sp
          vaultCaChainSecret:
            name: my-remote-broker-certificate
            # version: 939ecc2...