Microsoft Entra ID を使用して Event Hubs リソースへのアクセスを承認する
Azure Event Hubs は、Microsoft Entra ID を使用して Event Hubs リソースへの要求を承認することをサポートしています。 Microsoft Entra ID では、Azure ロールベースのアクセス制御 (RBAC) を使って、セキュリティ プリンシパル (ユーザーでも、アプリケーションのサービス プリンシパルでもかまいません) にアクセス許可を付与できます。 ロールとロールの割り当ての詳細については、各種ロールの理解に関するページを参照してください。
概要
セキュリティ プリンシパル (ユーザーまたはアプリケーション) が Event Hubs リソースにアクセスしようとした場合、要求は承認される必要があります。 Microsoft Entra ID では、リソースへのアクセスは 2 段階のプロセスです。
- まず、セキュリティ プリンシパルの ID が認証され、OAuth 2.0 トークンが返されます。 トークンを要求するリソース名は
https://eventhubs.azure.net/
であり、すべてのクラウド/テナントで同じです。 Kafka クライアントの場合、トークンを要求するリソースはhttps://<namespace>.servicebus.windows.net
です。 - 次に、指定したリソースへのアクセスを承認するために、トークンが要求の一部として Event Hubs サービスに渡されます。
認証の手順により、実行時にアプリケーション要求に OAuth 2.0 アクセス トークンが含まれる必要があります。 アプリケーションが Azure VM、仮想マシン スケール セット、または Azure 関数アプリなどの Azure エンティティ内から実行されている場合、そのアプリケーションは、マネージド ID を使用してリソースにアクセスできます。 マネージド ID によって Event Hubs サービスに対して行われる要求を認証する方法については、Azure リソースに Microsoft Entra ID とマネージド ID を使用して Azure Event Hubs リソースへのアクセスを認証する方法に関する記事を参照してください。
承認の手順では、セキュリティ プリンシパルに 1 つまたは複数の Azure ロールを割り当てる必要があります。 Azure Event Hubs には、Event Hubs リソースの一連のアクセス許可を含む Azure ロールが用意されています。 セキュリティ プリンシパルに割り当てられたロールによって、そのプリンシパルが持つアクセス許可が決定されます。 Azure ロールの詳細については、「Azure Event Hubs の Azure の組み込みロール」を参照してください。
Event Hubs に対して要求を行うネイティブ アプリケーションと Web アプリケーションは、Microsoft Entra ID を使用して承認することもできます。 アクセス トークンを要求し、それを使用して Event Hubs リソースへの要求を承認する方法については、アプリケーションから Microsoft Entra ID を使用して Azure Event Hubs へのアクセスを認証する方法に関する記事を参照してください。
アクセス権の Azure ロールを割り当てる
Microsoft Entra は、Azure ロールベースのアクセス制御 (Azure RBAC) を通じて、セキュリティで保護されたリソースへのアクセス権を承認します。 Azure Event Hubs には、イベント ハブ データへのアクセスに使用される一般的なアクセス許可のセットを含む一連の Azure の組み込みロールが定義されています。また、データにアクセスするためのカスタム ロールを定義することもできます。
Azure ロールが Microsoft Entra セキュリティ プリンシパルに割り当てられると、Azure はそれらのリソースへのアクセスをそのセキュリティ プリンシパルに許可します。 アクセスでは、サブスクリプションのレベル、リソース グループ、Event Hubs 名前空間、またはそれ以下の任意のリソースにスコープを設定することができます。 Microsoft Entra セキュリティ プリンシパルは、ユーザー、またはアプリケーション サービス プリンシパル、または Azure リソースのマネージド ID である可能性があります。
Azure Event Hubs の Azure の組み込みロール
Azure には、Event Hubs データへの Microsoft Entra ID と OAuth を使ったアクセスを承認するために、次の Azure の組み込みロールが用意されています。
Role | 説明 |
---|---|
Azure Event Hubs データ所有者 | Event Hubs リソースへの完全なアクセス権を付与するには、このロールを使用します。 |
Azure Event Hubs データ送信者 | Event Hubs リソースへの送信アクセス権を付与するには、このロールを使用します。 |
Azure Event Hubs データ受信者 | Event Hubs リソースへの使用/受信アクセス権を付与するには、このロールを使用します。 |
スキーマ レジストリの組み込みロールについては、スキーマ レジストリのロールに関する記事を参照してください。
リソースのスコープ
セキュリティ プリンシパルに Azure ロールを割り当てる前に、セキュリティ プリンシパルに必要なアクセスのスコープを決定します。 ベスト プラクティスとしては、常にできるだけ狭いスコープのみを付与するのが最善の方法です。
次の一覧で、Event Hubs リソースへのアクセスのスコープとして指定できるレベルを、最も狭いスコープから順に示します。
- コンシューマー グループ:このスコープでは、ロールの割り当てはこのエンティティにのみ適用されます。 現時点で、Azure portal は、このレベルのセキュリティ プリンシパルに Azure ロールを割り当てることをサポートしていません。
- イベント ハブ: ロールの割り当ては、イベント ハブとそのコンシューマー グループに適用されます。
- 名前空間:ロールの割り当ては、名前空間以下とそれに関連付けられているコンシューマー グループに対する Event Hubs のトポロジ全体にわたります。
- [リソース グループ] :ロールの割り当ては、リソース グループのすべての Event Hubs リソースに適用されます。
- サブスクリプション:ロールの割り当ては、サブスクリプションのすべてのリソース グループ内のすべての Event Hubs リソースに適用されます。
Note
- Azure ロールの割り当ての反映には最大で 5 分かかる場合があることに注意してください。
- このコンテンツは、Event Hubs と Apache Kafka 用 Event Hubs の両方を対象としています。 Kafka 用 Event Hubs のサポートの詳細については、Kafka 用 Event Hubs のセキュリティと認証に関するセクションを参照してください。
組み込みのロールの定義方法の詳細については、ロール定義に関するページを参照してください。 Azure カスタム ロールの作成については、「Azure カスタム ロール」を参照してください。
サンプル
Microsoft.Azure.EventHubs サンプル。
これらのサンプルでは、レガシ Microsoft.Azure.EventHubs ライブラリが使われていますが、最新の Azure.Messaging.EventHubs ライブラリを使うように簡単に更新できます。 レガシ ライブラリから新しいライブラリを使うようにサンプルを移行する方法については、Microsoft.Azure.EventHubs から Azure.Messaging.EventHubs への移行のガイドに関する記事を参照してください。
Azure.Messaging.EventHubs サンプル
このサンプルは、最新の Azure.Messaging.EventHubs ライブラリを使用するように更新されています。
関連するコンテンツ
- Azure 組み込みロールをセキュリティ プリンシパルに割り当てる方法については、Microsoft Entra ID を使用して Event Hubs リソースへのアクセスを認証する方法に関する記事を参照してください。
- Azure RBAC を使用してカスタム ロールを作成する方法について学習します。
- EH で Microsoft Entra ID を使用する方法について学習します
次の関連記事を参照してください。