イベンド ハンドラーへのイベント配信の認証 (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 キュー - Storage BLOB (Deadletter) |
トピックのマネージド システム ID を有効にし、それを宛先の該当するロールに追加します。 詳細については、「イベント配信にシステム割り当て ID を使用する」を参照してください。 |
Microsoft Entra で保護された Webhook を使用したベアラー トークン認証 | ウェブフック | 詳細については、「Webhook エンドポイントへのイベント配信の認証」セクションを参照してください。 |
クエリ パラメーターとしてクライアント シークレット | Webhook | 詳細については、「クエリ パラメーターとしてクライアント シークレットを使用する」を参照してください。 |
Note
Microsoft Entra アプリを使用して Azure 関数を保護する場合、HTTP トリガーを使用する一般的な Webhook アプローチを採用する必要があります。 サブスクリプションを追加するときは、Azure 関数エンドポイントを Webhook URL として使用します。
イベント配信にシステム割り当て ID を使用する
トピックまたはドメインに対してシステム割り当てのマネージド ID を有効にすることができ、その ID を使用して Service Bus のキューやトピック、イベント ハブ、ストレージ アカウントなどのサポートされている宛先にイベントを転送できます。
次に手順を示します。
- システム割り当て ID を持つトピックまたはドメインを作成するか、既存のトピックまたはドメインを更新して ID を有効にする。 詳細については、システム トピックのマネージド ID を有効にする方法、またはカスタム トピックまたはドメインのマネージド ID を有効にする方法に関するページを参照してください。
- 配信先 (Service Bus キューなど) の適切なロール (Service Bus データ送信者など) に ID を追加する。 詳細については、ID に Event Grid の配信先へのアクセスを許可する方法に関するページを参照してください
- イベント サブスクリプションを作成する際に 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 で古いシークレットと新しいシークレットの両方を受け入れるようにします。
クエリ パラメーターにはクライアント シークレットを含めることができるため、これらは特別な注意を払って処理されます。 これらは暗号化されて保存され、サービス オペレーターがアクセスすることはできません。 これらは、サービス ログ/トレースの一部としてログ記録されません。 イベント サブスクリプションのプロパティを取得するときに、送信先クエリ パラメーターは既定では返されません。 たとえば、--include-full-endpoint-url パラメーターは、Azure CLI 内で使用されます。
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 スキーマを使用する」を参照してください。
次のステップ
トピックまたはドメインにイベントを発行するクライアントを認証する方法については、「発行クライアントを認証する」を参照してください。