イベントへのアクセスを制御する
Azure Event Hubs では、認証と承認の両方を処理するために、Microsoft Entra ID と Shared Access Signature (SAS) の両方がサポートされています。 Azure には、Event Hubs データへの Microsoft Entra ID と OAuth を使ったアクセスを承認するために、次の Azure の組み込みロールが用意されています。
- Azure Event Hubs データ所有者: このロールを使用して、Event Hubs リソースへの 完全なアクセス 権を付与します。
- Azure Event Hubs データ送信者: Event Hubs リソースへの 送信アクセス 権を付与するには、このロールを使用します。
- Azure Event Hubs データ レシーバー: このロールを使用して、Event Hubs リソースへの アクセス権を受信 できるようにします。
マネージド ID を使用してアクセスを承認する
アプリケーションのマネージド ID から Event Hubs サービスへの要求を承認するには、そのマネージド ID の Azure ロールベースのアクセス制御設定を構成する必要があります。 Azure Event Hubs は、Event Hubs からの送受信のアクセス許可を含む Azure ロールを定義します。 Azure ロールがマネージド ID に割り当てられると、マネージド ID には適切なスコープで Event Hubs データへのアクセスが許可されます。
Microsoft ID プラットフォームでアクセスを承認する
Event Hubs で Microsoft Entra ID を使用する主な利点は、資格情報をコード内に格納する必要がなくなることです。 代わりに、Microsoft ID プラットフォームから OAuth 2.0 アクセス トークンを要求することができます。 Microsoft Entra は、アプリケーションを実行しているセキュリティ プリンシパル (ユーザー、グループ、またはサービス プリンシパル) の認証を行います。 認証が成功すると、Microsoft Entra ID からアプリケーションにアクセス トークンが返されます。アプリケーションでは、このアクセス トークンを使用して Azure Event Hubs への要求を承認できます。
Shared Access Signature を使用して Event Hubs パブリッシャーへのアクセスを承認する
イベント パブリッシャーは、Event Hubs の仮想エンドポイントを定義します。 パブリッシャーは、イベント ハブへのメッセージ送信にのみ使用でき、メッセージ受信には使用できません。 通常、Event Hub はクライアントごとに 1 つのパブリッシャーを使用します。 Event Hub のパブリッシャーに送信されるすべてのメッセージは、その Event Hub 内でキューに格納されます。 パブリッシャーでは、きめの細かいアクセス制御を行うことができます。
各 Event Hubs クライアントには、クライアントにアップロードされる一意のトークンが割り当てられます。 トークンを保持するクライアントでは、1 つのパブリッシャーにのみ送信でき、それ以外のパブリッシャーには送信できません。 複数のクライアントが同じトークンを共有する場合、これらのクライアントそれぞれがパブリッシャーを共有します。
すべてのトークンには、Shared Access Signature キーが割り当てられます。 通常、すべてのトークンは、同じキーで署名されます。 クライアントではキーが認識されません。そのため、クライアントがトークンを生成することはできません。 クライアントは、有効期限が切れるまで同じトークンで動作します。
Shared Access Signature を使用して Event Hubs コンシューマーへのアクセスを承認する
Event Hubs トークン認証では、Event Hubs プロデューサーによって生成されたデータを消費するバックエンド アプリケーションを認証するために、そのクライアントに対し、Event Hubs 名前空間、イベントハブ インスタンス、またはトピックに割り当てられた 管理 権限または リッスン 特権が必要です。 データは、コンシューマー グループを使用して Event Hubs から消費されます。 SAS ポリシーで詳細なスコープが提供されますが、このスコープは、コンシューマー レベルではなく、エンティティ レベルでのみ定義されます。 つまり、名前空間レベルまたはイベント ハブ インスタンスまたはトピック レベルで定義されている特権は、そのエンティティのコンシューマー グループに対して行われます。