Azure Event Hubsを使用してAzure Functionsをセキュリティで保護する

Azureでリソースへのアクセスを構成する場合は、リソースへのアクセス許可をきめ細かく制御します。 これらのリソースへのアクセスは、クライアントに許可された限られた一連のアクションのみを実行できるようにするため、知る必要性最小権限 のセキュリティ原則に基づいて制御します。

Event Hubs へのアクセスの承認

次のセキュリティ構造を使用して、Azure Event Hubs リソースへのアクセスを承認できます。

  • Microsoft Entra ID: Microsoft Entra ID は、Event Hubs リソースへのクライアントのアクセスをきめ細かく制御するための Azure ロールベースのアクセス制御 (Azure RBAC) を提供します。 付与されたロールとアクセス許可に基づいて、Microsoft Entra IDは OAuth 2.0 アクセス トークンを使用して要求を承認します。

  • Shared Access Signature: Shared Access Signature を使用して、承認規則に基づいて Event Hubs リソースを保護できます。 承認ポリシーを定義するには、メッセージの送信、メッセージのリッスン、名前空間内のエンティティの管理など、1 つ以上のポリシー規則を選択します。

Shared Access Signature の使用に関する考慮事項

Azure Functionsと Event Hubs で Shared Access Signature を使用する場合は、次の考慮事項を考慮してください。

  • 管理権限は避けてください。 Event Hubs 名前空間内のエンティティを管理する機能に加えて、管理権限には送信権限とリッスン権限の両方が用意されています。 関数アプリには、実行するアクションに応じて、送信権限とリッスン権限の組み合わせのみを付与するのが理想的です。

  • 既定の管理ルールは使用しないでください。RootManageSharedAccessKey という名前の既定のポリシー 規則は、関数アプリで必要な場合を除き、使用しないでください。これは一般的でないシナリオです。 また、この既定の規則は名前空間レベルで作成され、基になるすべてのイベント ハブにアクセス許可を付与する点にも注意してください。

  • 共有アクセス ポリシーのスコープを確認します。 共有アクセス ポリシーは、名前空間レベルとイベント ハブ レベルで作成できます。 クライアントの範囲とアクセス許可を制限するために、クライアントごとに調整された詳細なアクセス ポリシーを作成することを検討してください。

マネージド ID

ID は、関数アプリや Web アプリなど、Azureのマネージド リソースに割り当てることができます。 ID を割り当てると、サービス プリンシパルと同様に、承認にMicrosoft Entra IDを使用する他のリソースと対話できます。

関数アプリにマネージド ID を割り当てて、サービスのサブセット (Event Hubs を含む) に対して ID ベースの接続を利用することができます。 ID ベースの接続では、トリガーと出力のバインディング拡張機能の両方がサポートされます。

ネットワーク

既定では、要求で有効な認証と承認が提供されている限り、Event Hubs 名前空間にインターネットからアクセスできます。 Event Hubs 名前空間へのネットワーク アクセスを制限するには、次の 3 つのオプションを検討してください。

いずれの場合も、名前空間に対して少なくとも 1 つの IP ファイアウォール規則または仮想ネットワーク規則が指定されます。 それ以外の場合、IP アドレスまたは仮想ネットワーク規則が指定されていない場合は、名前空間にパブリック インターネット経由で (アクセス キー経由で) アクセスできます。

サービス エンドポイントまたはプライベート エンドポイントで設定されたイベント ハブからイベントを使用するか、イベント ハブに発行するようにAzure Functionsを構成できます。 関数アプリでは、サービス エンドポイントまたはプライベート エンドポイントを介してイベント ハブに接続するために、リージョンの仮想ネットワーク統合が必要です。

Functions を仮想ネットワークと統合し、vnetRouteAllEnabled を有効にすると、関数アプリからのすべての送信トラフィックが仮想ネットワーク経由で強制されます。 この構成は、Azure サービスへのトラフィックを含むすべてのトラフィックが、検査と制御のために仮想ネットワークを通過するようにして、関数アプリをセキュリティで保護するシナリオで特に重要です。 関数アプリを完全にロックダウンする場合は、ストレージ アカウントを制限する必要もあります。

仮想ネットワーク環境でイベントを使用するには、Premium プラン、専用 (App Service) プラン、またはApp Service Environmentで関数アプリをホストする必要があります。

さらに、Azure Functions Premium プランで実行し、仮想ネットワーク制限イベント ハブからのイベントを使用するには、仮想ネットワーク トリガーのサポート (ランタイム スケール監視とも呼ばれます) が必要です。 Azure ポータル、Azure CLI、またはその他のデプロイ ソリューションを使用して、ランタイム スケールの監視を構成できます。 ランタイム スケールの監視は、関数が専用 (App Service) プランまたはApp Service Environmentで実行されている場合は使用できません。

寄稿者

Microsoft では、この記事を保持しています。 この記事を書いたのは、以下の寄稿者です。

主要著者:

公開されていない LinkedIn プロフィールを見るには、LinkedIn にサインインしてください。

次のステップ

続行する前に、次の関連記事を確認することを検討してください。