Azure Purview では、「ネットワーク」の設定に「パブリックネットワークアクセスを拒否 (Deny Public Network Access)」という設定があります。
デフォルトでは「許可」となっており、初期状態であれば、Purview へのアクセス / Purview からのデータ収集 (インジェスト) を阻害する要因はないのですが、この設定を「拒否」にすると、様々なネットワークアクセスに影響が出てきます。
本投稿では、パブリックネットワークアクセスを「拒否」にした場合の挙動についてまとめておきたいと思います。
Contents
Purview のパブリックネットワークアクセスについてのドキュメント
パブリックネットワークアクセスに関するドキュメントには次のようなものがあります。
- Azure Purview アカウントにプライベート エンドポイントを使用する
- Azure Purview プライベート エンドポイントに関する FAQ
- Azure Purview ネットワーク アーキテクチャとベスト プラクティス
- Azure Purview での接続のトラブルシューティング
パブリックネットワークアクセスとプライベートエンドポイントには密接なかかわりがありますので、パブリックネットワークアクセスの情報を確認する際には、Purview のプライベートエンドポイントの情報も関連してきます。
パブリックネットワークアクセスを拒否した動作については、Azure Purview プライベート エンドポイントに関する FAQ の記載と パブリック アクセスを制限するファイアウォール がポイントとなります。
前者には、次のように記載がされており、
Azure Purview マネージド ストレージ アカウントと Event Hub 名前空間へのアクセスを制限しつつ (プライベート エンドポイント インジェストのみ)、Web 経由のユーザーによるポータルへのアクセスを有効にしておくことは可能ですか?
いいえ。 [公衆ネットワーク アクセス] を [拒否] に設定すると、Azure Purview マネージド ストレージ アカウントと Event Hub 名前空間へのアクセスは、自動的にプライベート エンドポイント インジェストのみに設定されます。 [公衆ネットワーク アクセス] を [許可] に設定すると、Azure Purview マネージド ストレージ アカウントと Event Hub 名前空間へのアクセスは、自動的に [すべてのネットワーク] に設定されます。 マネージド ストレージ アカウントや Event Hub 名前空間のプライベート エンドポイント インジェストを手動で変更することはできません。
[公衆ネットワーク アクセス] を [許可] に設定した場合、これはマネージド ストレージ アカウントと Event Hub 名前空間にパブリックにアクセスできるという意味ですか?
いいえ。 保護されたリソースとして、Azure Purview マネージド ストレージ アカウントと Event Hub 名前空間へのアクセスは、Azure Purview のみに制限されます。 これらのリソースは、すべてのプリンシパルへの割り当てが拒否された状態でデプロイされ、アプリケーション、ユーザー、グループがアクセスできないようになっています。
Azure の拒否の割り当ての詳細については、「Azure 拒否割り当てについて」を参照してください。
後者には次のように記載されています。
パブリック インターネットからの Azure Purview アカウントへのアクセスを完全に遮断するには、これらの手順に従います。 この設定は、プライベート エンドポイントとインジェスト プライベート エンドポイントの両方の接続に適用されます。
パブリックネットワークアクセスを許可 / 拒否した場合のアクセスについては上記の内容が動作を把握する際のポイントとなるのですが、ドキュメントを確認しただけでは動作を把握することが難しいので、実際の挙動を確認しながら検証を行うのが良いかと。
パブリックネットワークアクセスを拒否した場合の挙動の考え方
パブリックネットワークアクセスを「拒否」した場合の挙動の基本的な考え方ですが、次の 2 点がポイントとなるかと思います。
最初「Purview のエンドポイントへのアクセス (web.purview.azure.com / <Purview アカウント名>.purview.azure.com (または他の API の URL)) をプライベートエンドポイント経由でのみ許可する設定」かと思っていたのですが、これは誤りでした。
- Purview アカウントへのアクセス (<Purview アカウント名>.purview.azure.com または、他の API の URL (<Purview アカウント名>.xxxxx.purview.azure.com)) が、プライベートエンドポイント経由でのアクセスのみ許可されるように制限される
- Purview のマネージドリソースグループ内のリソース (Stroage / Event Hub) へのアクセスが、インジェスト用のプライベートエンドポイント経由でのアクセスのみ許可されるように制限される
それぞれの制限が同時に行われ、どちらか一方の制限のみを適用するということは現時点では実施することは出いません。
パブリックネットワークアクセスを拒否すると、上記の 2 点のアクセスが制御され、Purview の操作を行う Purview Studio へのアクセス以外にも様々な箇所で制限が行われます。
上述の 2 点の制限が行われることでどのような動作になるのかについても見ていきます。
Purview アカウントへのアクセスが、プライベートエンドポイント経由でのアクセスのみ許可されるように制限される
この制限はわかりやすいかと思います。
「パブリックネットワークアクセスを拒否」した後に、Purview Studio にアクセスを行うと次のような画面となります。
Not authorized to access this Purview account
This Purview account is behind a private endpoint. Please access the account from a client in the same virtual network (VNet) that has been configured for the Purview account’s private endpoint.
Purview Studio 内では、主に、次の 2 種類の URL が使用されています。
- web.purview.azure.com : Purview Studio の URL
- <Purview アカウント名>.purview.azure.com or <Purview アカウント名>.xxxxx.purview.azure.com : Purview アカウント
パブリックネットワークアクセスを拒否することで「2.」の URL (API) へのアクセスがプライベートエンドポイント経由以外では拒否され、Purview の各種情報 / 操作を行うための Purview アカウントを含んだ URL へのアクセスが制限されます。(Azure Purview リソース プロバイダー Rest API へのアクセスが制限されている状態となります)
Purview 向けのプライベートエンドポイントとしては、「account」「portal」の 2 種類があります。
パブリックネットワークアクセスを拒否した Purview アカウントでは、Purview アカウントを含む URL へのアクセスは、プライベートエンドポイント経由で実施する必要がありますので、対象サブリソースに「account」を設定したプライベートエンドポイントを作成した仮想ネットワーク経由で Purview アカウントにアクセスを行う必要があります。
Purview アカウント (account) へのプライベートエンドポイントがリンクされている仮想ネットワークであれば、Purview アカウントの URL を呼び出すことができるようになるため、Purview Studio へのアクセスが可能となります。
パブリックネットワークアクセスを拒否しても、web.purview.azure.com へのアクセスについては制限されませんので、「portal」のサブリソースのプライベートエンドポイントの作成については、必須ではありません。Purview Studio へのアクセスをプライベートエンドポイント経由で実施したい場合は、任意で「portal」のサブリソースのプライベートエンドポイントを作成することになります。
Purview のマネージドリソースグループ内のリソースへのアクセスが、インジェスト用のプライベートエンドポイント経由でのアクセスのみ許可されるように制限される
Purview アカウントへのアクセスは Purview Studio にアクセスした際にメッセージが表示されますのでわかりやすいのですが、こちらの動作がわかりづらかったです…。
Purview では、インジェスト (スキャン) を行う際には、Azure Storage と Event Hub が使用されており、これらのリソースについては「マネージドリソースグループ」という、サブスクリプション内の特殊なリソースとして、Purview アカウントを作成した際に同時に作成が行われます。
Purview アカウントの「マネージドリソース」の情報から、リソースグループ名とリソースが確認できるのですが、これらのリソースは Purview アカウントを作成したサブスクリプション内に実体のあるリソースとして作成が行われ、IAM と各リソースのネットワーク設定により、可能な操作に制限が行われています。
「パブリックネットワークアクセスが許可」された状態では、マネージドリソースグループ内のリソースについては、Azure Purview / Purview アカウントのみがアクセスできるようになっており、各リソースのネットワーク設定は次のようになっています。
「パブリックネットワークアクセスを拒否」した場合は、上記のリソースのネットワーク設定が次のように変更されます。
許可の状態ではすべてのネットワークからアクセスが許可されていたのですが、拒否にした場合は、信頼された Azure サービス と、プライベートエンドポイント経由での接続のみが許可された状態になります。
Purview でインジェストを実行する場合は、マネージドリソースグループ内のリソースにアクセスができる必要があり、これらのリソースにアクセスできない場合は「インジェストのためのスキャンを実行した場合にエラー」となります。(スキャンのテスト接続 (Test Connection) は成功するが、スキャンを実行した際にエラーになるので、エラーの原因がわかりにくいのですが…)
「パブリックネットワークアクセスを拒否」の設定にした場合、「Azure 統合ランタイム」から、マネージドリソースグループ内のリソースにアクセスができなくなり、インジェストのスキャンを実行した場合にエラーとなります。
「パブリックネットワークアクセスを拒否」の設定にした場合、Purview でインジェストを行うためには、「セルフホステッド統合ランタイム (SHIR) でインジェスト プライベートエンドポイント接続 (プライベートエンドポイント接続のインジェスト) を介してマネージドリソースグループ内のリソースにアクセス」をする必要があります。
インジェストプライベートエンドポイント接続は、Purveiw アカウントの「ネットワーク」から作成することができます。
このプライベートエンドポイントをリンクした仮想ネットワークからであれば、マネージドリソースグループ内のリソースにアクセスができるようになります。
「パブリックネットワークアクセスを拒否」した場合、インジェストのスキャンを実行するためには、「インジェストプライベートエンドポイント接続をリンクした仮想ネットワーク内に展開した、セルフホステッド統合ランタイムの環境」が必要になるというのがポイントではないでしょうか。
現状、AWS S3 等、セルフホステッド統合ランタイム経由でのスキャンができないソースもありますので、パブリックネットワークアクセスを拒否した場合には使用できないソースが出てくることも意識しておく必要があります。
また、セルフホステッド統合ランタイムを使用する場合、Azure のリソースに対してのアクセスに MSI が使用できなくなるので、「Key Vault + シークレット」で接続の資格情報を管理する必要があるので、接続のための情報の管理についても変わってきます。
セルフホステッド統合ランタイムのトラブルシューティング
「パブリックネットワークアクセスを拒否」した場合、セルフホステッド統合ランタイム経由でインジェストのスキャンを行う必要があります。
「パブリックネットワークアクセスを拒否して、インジェストプライベートエンドポイント接続を有効化していない」場合、セルフホステッド統合ランタイムを使用したスキャンを実行しようとすると、エラーになります。
セルフホステッド統合ランタイムを使用したインジェストでエラーとなる場合ですが、統合ランタイムをインストールしている Windows のイベントログでエラーの発生状況を確認することができます。
イベントログの中には「Connectors – Integration Runtime」とうログがあり、このログからエラーを確認することができます。
ログを確認しているとマネージドリソースグループ内の Azure Storage にアクセスをしており、その後エラーになっていることが確認できます。
このことからインジェストプライベートエンドポイント接続が有効になっていないためエラーが発生しているというような判断を行うことができるのではないでしょうか。
まとめ
「パブリックネットワークアクセスを拒否」すると、
- Purview アカウントへのアクセスがプライベートエンドポイント経由でアクセスが必要
- マネージドリソースグループへのアクセスにインジェストプライベートエンドポイント接続が必要
- インジェストのスキャンを行うためにはセルフホステッド統合ランタイム (SHIR) が必要となる
- セルフホステッド統合ランタイムが必要になることで、統合ランタイムがサポートされるソースのみにアクセスが制限される
- MSI による Azure の認証ができなくなる
というような制限が行われることになるのではないでしょうか。