次の方法で共有


イベンド ハンドラーへのイベント配信の認証 (Azure Event Grid)

この記事では、イベント ハンドラーへのイベント配信の認証について説明します。

概要

Azure Event Grid ではさまざまな認証方法を利用してイベントをイベント ハンドラーに配信します。 `

認証方法 サポートされているイベント ハンドラー 説明
アクセス キー
  • Event Hubs
  • Service Bus
  • Storage キュー
  • リレー・ハイブリッド接続
  • Azure Functions
  • Storage BLOB (Deadletter)
Event Grid サービス プリンシパルの資格情報はアクセス キーをフェッチします。 Azure サブスクリプションに Event Grid リソース プロバイダーを登録するときに、Event Grid に必要なアクセス許可を付与します。
マネージド システム ID
&
ロールベースのアクセス制御
  • Event Hubs
  • Service Bus
  • Storage キュー
  • ストレージ ブロブ (デッドレター)
トピックのマネージド システム ID を有効にし、それを宛先の該当するロールに追加します。 詳細については、「イベント配信にシステム割り当て ID を使用する」を参照してください。
Microsoft Entra で保護する Webhook によるベアラー トークン認証 ウェブフック 詳細については、「Webhook エンドポイントへのイベント配信の認証」セクションを参照してください。
クエリ パラメーターとしてクライアント シークレット ウェブフック 詳細については、「 クエリ パラメーターとしてクライアント シークレットを使用する 」セクションを参照してください。

注意

Microsoft Entra アプリで Azure 関数を保護する場合は、HTTP トリガーを使用して一般的な Webhook アプローチを採用する必要があります。 サブスクリプションを追加するときは、Azure 関数エンドポイントを Webhook URL として使用します。

イベント配信にシステム割り当て ID を使用する

トピックまたはドメインに対してシステム割り当てのマネージド ID を有効にすることができ、その ID を使用して Service Bus のキューやトピック、イベント ハブ、ストレージ アカウントなどのサポートされている宛先にイベントを転送できます。

次の手順に従います。

  1. システム割り当て ID を持つトピックまたはドメインを作成するか、既存のトピックまたはドメインで ID を有効にする。 詳細については、「 システム トピックのマネージド ID を有効にする 」または 「カスタム トピックまたはドメインのマネージド ID を有効にする」を参照してください。
  2. 配信先 (Service Bus キューなど) の適切なロール (Service Bus データ送信者など) に ID を追加する。 詳細については、Event Grid の宛先に対するアクセスを特定の識別情報に付与するを参照してください。
  3. イベント サブスクリプションを作成する際に ID の使用を有効にして、イベントを配信先に配信する。 詳細については、ID を使用するイベント サブスクリプションを作成する方法に関するページを参照してください。

詳細な手順については、「マネージド ID を使用したイベント配信」を参照してください。

Webhook エンドポイントへのイベント配信の認証

以下のセクションでは、Webhook エンドポイントへのイベント配信を認証する方法について説明します。 使用する方法に関係なく、検証ハンドシェイク メカニズムを使用します。 詳細については、「Webhook のイベント配信」を参照してください。

Microsoft Entra ID を使用する

Microsoft Entra ID を使用して、Event Grid からイベントを受信する Webhook エンドポイントをセキュリティで保護できます。 Microsoft Entra アプリケーションを作成し、Event Grid を承認するロールとサービス プリンシパルをアプリケーションに作成し、Microsoft Entra アプリケーションを使用するようにイベント サブスクリプションを構成します。 Event Grid で Microsoft Entra ID を構成する方法について確認します。

クエリ パラメーターとしてクライアント シークレットを使用する

イベント サブスクリプションの作成の一環として指定したWebhook の送信先 URL にクエリ パラメーターを追加することで、Webhook エンドポイントをセキュリティで保護することもできます。 クエリ パラメーターのいずれかを、アクセス トークンなどのクライアント シークレットまたは共有シークレットとして設定します。 Event Grid サービスでは、Webhook へのすべてのイベント配信要求にすべてのクエリ パラメーターを含めます。 Webhook サービスはシークレットを取得して検証できます。 クライアント シークレットを更新する場合は、イベント サブスクリプションも更新する必要があります。 このシークレットのローテーション中の配信エラーを回避するために、イベント サブスクリプションを新しいシークレットで更新する前に、一定期間、Webhook で古いシークレットと新しいシークレットの両方を受け入れるようにします。

クエリ パラメーターにはクライアント シークレットを含めることができるので、細心の注意を払って処理してください。 これらは暗号化されて保存され、サービス オペレーターがアクセスすることはできません。 これらは、サービス ログまたはトレースの一部としてログに記録されません。 イベント サブスクリプションのプロパティを取得する場合、既定では宛先クエリ パラメーターは返されません。 たとえば、Azure --include-full-endpoint-url パラメーターを使用する必要があります。

Webhook にイベントを配信する方法の詳細については、 Webhook イベント配信に関するページを参照してください。

重要

Azure Event Grid は、HTTPS Webhook エンドポイントのみをサポートします。

CloudEvents v1.0 を使用したエンドポイントの検証

Event Grid を既に使い慣れている場合、不正使用を防ぐためのエンドポイント検証ハンドシェイクをご存じかもしれません。 CloudEvents v1.0 では、HTTP OPTIONS メソッドを使用することで、独自の不正使用防止のセマンティクスが実装されます。 詳細については、イベント配信用の HTTP 1.1 Web Hooks (バージョン 1.0) を参照してください。 出力に CloudEvents スキーマを使用すると、Event Grid では、Event Grid の検証イベント メカニズムではなく CloudEvents v1.0 の不正使用防止が使用されます。 詳細については、「Event Grid に CloudEvents v1.0 スキーマを使用する」を参照してください。

トピックまたはドメインにイベントを発行するクライアントの認証については、「 発行クライアントの認証」を参照してください。