BrokerListener を使用して MQTT ブローカー通信をセキュリティで保護する

重要

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

Azure IoT Operations の一般公開リリースが提供されたときには、新規インストールをデプロイすることが必要になります。 プレビュー インストールからのアップグレードはできません。

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

ネットワーク アクセスとセキュリティをカスタマイズするには、BrokerListener リソースを使用します。 リスナーは、ブローカーをネットワークに公開するネットワーク エンドポイントに対応します。 Broker リソースごとに 1 つ以上の BrokerListener リソースを使用できるため、アクセス制御がそれぞれ異なる複数のポートを使用できます。

各リスナー ポートには、そのリスナーに誰が接続でき、その人物がブローカー上でどのアクションを実行できるかを定義する独自の認証と認可のルールを設定することができます。 BrokerAuthentication リソースと BrokerAuthorization リソースを使用して、各リスナーのアクセス制御ポリシーを指定できます。 この柔軟性により、MQTT クライアントのニーズとユース ケースに基づいて、MQTT クライアントのアクセス許可とロールを微調整できます。

ヒント

既定の MQTT ブローカー デプロイには、クラスター IP、TLS、サービス アカウント トークンを使用しないとアクセスできません。 クラスター外から接続するクライアントには、接続のための追加の構成が必要です。

リスナーには次の特性があります:

  • リスナーは最大 3 つまで指定できます。 loadBalancerclusterIp、または nodePort のサービスの種類ごとに 1 つのリスナー。 既定の listener という名前の BrokerListener は、サービスの種類 clusterIp です。
  • 各リスナーは複数のポートをサポートします
  • BrokerAuthentication と BrokerAuthorization の参照はポートごとに行われます
  • TLS 構成はポートごとに行われます
  • サービス名は一意である必要があります
  • ポートは異なるリスナーで競合できません

利用可能な設定の一覧については、Broker Listener API リファレンスを参照してください。

既定の BrokerListener

Azure IoT Operations (プレビュー) をデプロイすると、デプロイによって azure-iot-operations の名前空間に default の名前が付けられた BrokerListener リソースも作成されます。 このリスナーは、デプロイ時にも作成される default という名前の既定の "ブローカー" リソースにリンクされます。 既定のリスナーは、TLS と SAT 認証が有効なポート 18883 でブローカーを公開します。 TLS 証明書は、cert-manager によって自動的に管理されます。 承認は既定で無効になっています。

リスナーを表示または編集するには:

  1. Azure portal で、IoT Operations インスタンスに移動します。

  2. [Azure IoT Operations リソース] で、[MQTT ブローカー] を選択します。

    Azure portal を使用して Azure IoT Operations MQTT 構成を表示するスクリーンショット。

  3. ブローカー リスナーの一覧から、default リスナーを選択します。

    Azure portal を使用して既定のブローカー リスナーを表示または編集するスクリーンショット。

  4. リスナーの設定を確認し、必要に応じて変更を加えます。

新しいブローカー リスナーを作成する

この例では、Broker リソースに対して loadbalancer-listener という名前の新しい BrokerListener リソースを作成する方法を示します。 BrokerListener リソースは、クライアントからの MQTT 接続を受け入れる 2 つのポートを定義します。

  • 最初のポートは、TLS と認証をオフにせず、ポート 1883 でリッスンします。 クライアントは、暗号化または認証なしでブローカーに接続できます。
  • 2 番目のポートは、TLS と認証が有効になっているポート 18883 でリッスンします。 TLS 暗号化を使用してブローカーに接続できるのは、認証されたクライアントだけです。 TLS が automatic に設定した場合は、リスナーが cert-manager を使用してサーバー証明書を取得、更新することを意味します。
  1. Azure portal で、IoT Operations インスタンスに移動します。

  2. [Azure IoT Operations リソース] で、[MQTT ブローカー] を選択します。

  3. [LoadBalancer の MQTT ブローカー リスナー]>[作成] を選択します。 サービスの種類ごとにリスナーを 1 つだけ作成できます。 同じサービスの種類のリスナーが既にある場合は、既存のリスナーにポートをさらに追加できます。

    Azure portal を使用してロード バランサー リスナー用の MQTT ブローカーを作成するスクリーンショット。

    次の情報を入力します :

    設定 内容
    Name BrokerListener リソースの名前。
    サービス名 BrokerListener に関連付けられている Kubernetes サービスの名前。
    サービスの種類 LoadBalancerNodePortClusterIP などのブローカー サービスの種類。
    ポート BrokerListener が MQTT 接続をリッスンするポート番号。
    認証 認証リソース参照
    承認 認可リソース参照
    TLS 安全な通信で TLS を有効にするかどうかを示します。 自動または手動に設定できます。
  4. [リスナーの作成] を選択します。