MQTT メッセージを発行またはサブスクライブするための Microsoft Entra JWT 認証と Azure RBAC 認可
Microsoft Entra JWT を使用して MQTT クライアントを認証して、Event Grid 名前空間に接続できます。 Azure ロールベースのアクセス制御 (Azure RBAC) を使用すると、特定のトピック空間に対する発行またはサブスクライブのアクセスを、Microsoft Entra ID を使って MQTT クライアントに対して、許可できます。
重要
- この機能は、MQTT v5 プロトコル バージョンを使用している場合にのみサポートされます
- JWT 認証は、マネージド ID とサービス プリンシパルでのみサポートされます
前提条件
- MQTT が有効になっている Event Grid 名前空間が必要です。 Event Grid 名前空間の作成について学習します
Microsoft Entra JWT を使用した認証
MQTT v5 CONNECT パケットを使用して、クライアントを認証するための Microsoft Entra JWT トークンを提供し、MQTT v5 AUTH パケットを使用してトークンを更新できます。
CONNECT パケットでは、次のフィールドに必須の値を指定できます。
フィールド | Value |
---|---|
認証方法 | OAUTH2-JWT |
認証データ | JWT トークン |
CONNECT パケットでは、次のフィールドに必須の値を指定できます。
フィールド | Value |
---|---|
認証方法 | OAUTH2-JWT |
認証データ | JWT トークン |
認証理由コード | 25 |
値 25 を持つ理由コードを認証すると、再認証が示されます。
Note
- 対象ユーザー: "aud" 要求は "https://eventgrid.azure.net/"" に設定する必要があります。
アクセス許可を付与するための承認
Microsoft Entra ID ベースの JWT 認証を使用するクライアントには、Event Grid 名前空間と通信する権限が必要です。 次の 2 つの組み込みロールを割り当てて、Microsoft Entra ID を持つクライアントに発行またはサブスクライブのアクセス許可を提供できます。
- EventGrid TopicSpaces パブリッシャー ロールを使用して MQTT メッセージ パブリッシャーアクセスを提供する
- EventGrid TopicSpaces サブスクライバー ロールを使用して MQTT メッセージ サブスクライバー アクセスを提供する
これらのロールを使用して、サブスクリプション、リソース グループ、Event Grid 名前空間、または Event Grid トピック空間スコープでアクセス許可を提供できます。
トピック空間スコープで Microsoft Entra ID へのパブリッシャー ロールの割り当て
- Azure portal で、Event Hubs 名前空間に移動する
- アクセスを承認するトピック空間に移動します。
- トピック空間の [アクセス制御 (IAM)] ページに移動します
- [ロールの割り当て] タブを選択して、このスコープのロールの割り当てを表示します。
- [+ 追加] を選択し、[ロールの割り当ての追加] を選択します。
- [ロール] タブで、[Event Grid TopicSpaces Publisher] ロールを選択します。
- [メンバー] タブの [アクセスの割り当て] で、ユーザー、グループ、またはサービス プリンシパル オプションを選択して、選択したロールを 1 つ以上のサービス プリンシパル (アプリケーション) に割り当てます。
- [+ メンバーの選択] を選択します。
- サービス プリンシパルを検索して選択します。
- [次へ] を選択します
- [確認と割り当て] タブで、[確認と割り当て] を選択します。
Note
同様の手順に従って、 トピック空間スコープに組み込みの EventGrid TopicSpaces サブスクライバー ロールを割り当てることができます。
次のステップ
- 「Event Grid を使用して MQTT メッセージに発行およびサブスクライブする」を参照してください
- マネージド ID のしくみに関する詳細については、「Azure リソースのマネージド ID と Azure 仮想マシンの連携 - Microsoft Entra」を参照してください
- Microsoft Entra ID からトークンを取得する方法の詳細については、「Microsoft Entra トークンの取得」を参照してください。
- Azure ID クライアント ライブラリの詳細については、「Azure ID クライアント ライブラリの使用」を参照してください。
- トークンを提供できる資格情報のインターフェイスの実装の詳細については、「TokenCredential インターフェイス」を参照してください。
- Azure ID を使用した認証方法の詳細については、例を参照してください。
- カスタム ロールを使用する場合は、カスタム ロールを作成するプロセスを確認してください