Securely Accessing Azure Data Sources from Azure Databricksの翻訳です。
Azure Databricksは、Microsoft Azure Cloudの一部である統合データ分析プラットフォームです。Delta Lake、MLFlow、Koalas、Apache Sparkの上に構築されたAzure Databricksは、Microsoft Azureクラウドのファーストパーティーサービスであり、小規模から大規模なグローバルのお客様に対しるデータ、AIのユースケースをサポートするエンタープライズレベルのセキュリティ、インタラクティブなワークスペース、他のAzureサービスとのネイティブ統合、ワンクリックのセットアップを提供します。このプラットフォームは、企業におけるデータエンジニア、データサイエンティスト、データアナリスト、SecOps/クラウドエンジニアのように異なるデータペルソナ間の真のコラボレーションを実現します。
2つのシリーズの最初の記事では、Azure Databricksアーキテクチャの概要と、お客様がどのようにして自身が管理するAzureデータサービスのインスタンスにセキュアに接続できるのかを説明します。
Azure Databricksのアーキテクチャ概要
Azure DatabricksはAzureクラウドにおけるマネージドアプリケーションです。ハイレベルにおいては、アーキテクチャはコントロール/管理プレーンとデータプレーンから構成されます。コントロールプレーンはMicrosoftが管理するサブスクリプションに存在し、ウェブアプリケーション、クラスターマネージャ、ジョブサービスなどを提供します。デフォルトのデプロイメントでは、データプレーンは完全にお客様のサブスクリプションで管理されるコンポーネントとなります。これには、VNET、NSG、そして、DBFSとして知られるルートストレージアカウントが含まれます。
データプレーンをお客様管理VNETにデプロイすることも可能であり、SecOpsやクラウドエンジニアリングチームは、自身の会社のガバナンスポリシーに沿って、サービスのセキュリティ&ネットワークアーキテクチャを構築することができます。この機能は、Bring Your Own VNETあるいはVNET Injectionと呼ばれるものです。以下の図では、そのようなお客様のアーキテクチャの概要を表現しています。
Azureデータサービスへのセキュアな接続
エンタープライズセキュリティは、DatabricksとMicrosoft両方にとってソフトウェア開発を行う際のコアとなる教義となっており、Azure Databricksにおける第一市民として考えられています。
オプション1: Azure Private Link
Azure DatabricksからAzureデータにアクセスする最もセキュアな方法は、Private Linkを設定するというものです。Azureのドキュメントによると、Private Linkを用いることで、お使いのバーチャルネットワークにおいて、プライベートエンドポイント経由でAzure PaaSサービス(例えば、Azure Storage、Azure Cosmos DB、SQL Database)、Azureがホストするカスタマー/パートナーサービスにアクセスできるようになります。お使いのバーチャルネットワークとサービス間のトラフィックは、Microsoftのネットワークバックボーン経由で転送され、公衆インターネットに公開されません。お使いのバーチャルネットワーク(VNet)にご自身のPrivate Link Serviceを作成することができ、皆様のお客様に対してプライベートでデリバリーすることができます。Azure Private Linkを用いたセットアップと利用体験は、Azure PaaS、顧客管理、パートナー共有サービスで一貫性のあるものとなっています。
Azure DatabricksとPrivate Linkをどのように活用できるのかを以下の図で示しています。
別のVNETで動作するAzure DatabricksとAzureデータサービス
同じVNETで動作するAzure DatabricksとAzureデータサービス
プライベートエンドポイントに対する検討
プライベートエンドポイントを実装する前に以下の点を検討してください。
- デフォルトでデータ流出に対する保護を提供します。Azure Databricksの場合、お客様がコントロールプレーンの特定サービスへのアクセスをホワイトリスト化した際に、これは適用されます。
- トラフィックはAzureのネットワークバックボーンに限定されるので、あらゆるデータフローで公衆ネットワークは使用されません。
- プライベートネットワークアドレス空間をAzureデータサービスに拡張します。Azureデータサービスはお使いのVNETのプライベートIPを効率的に取得し、あなたの広大なプライベートネットワークの一部となります。
- 別のリージョンのAzureデータサービスにプライベートに接続しますので、リージョンAのVNETはプライベートリンクを介してリージョンBのエンドポイントに接続できます。
- プライベートリンクは、他のセキュアアクセス機構に比べて若干セットアップが複雑です。
- プライベートリンクのメリットとサービス固有の可用性の詳細なリストに関してはドキュメントを参照ください。
プライベートリンクを使用するユースケースとして、お客様が本番環境でAzure Databricksと、Blob Storage、ADLS Gen2、SQL DBなどわずかのAzureデータサービスを使っている場合があります。ビジネス側は、ユーザーがマスクされた集計データをADLS Gen2からクエリーさせたいと考えますが、他のデータソースにあるマスクされていない秘密データへのアクセスは禁止したいと考えたとします。この場合、プライベートエンドポイントを、上で述べたサブオプションを用いて、ADLS Gen2に対してのみ構築します。
このような環境の構築手順を以下に示します。
Azureデータサービスに対して1つ以上のプライベートリンクを設定可能であることに注意してください。これにより、皆様の企業のガバナンス要件に合わせたアーキテクチャの構築が可能となります。
オプション2: Azureバーチャルネットワークサービスエンドポイント
Azureのドキュメントによれば、バーチャルネットワーク(VNET)サービスエンドポイントはお使いのバーチャルネットワークのプライベートアドレス空間を拡張します。また、このエンドポイントはお使いのVNetのアイデンティティを、直接接続を介してAzureサービスに拡張します。エンドポイントを用いることで、重要なAzureサービスのリソースをお使いのバーチャルネットワークのみに限定することが可能となります。お使いのVNetからAzureサービスへのトラフィックは常に、Microsoft Azureのネットワークバックボーンに限定されます。
サービスエンドポイントが提供するメリット(ソース)
お使いのAzureサービスリソースのセキュリティ改善
異なるバーチャルネットワークに対するプライベートアドレス空間はお互いにオーバーラップできます。特定のVNETから発生したトラフィックをユニークに識別するために、オーバーラップしたネットワーク空間を使用することはできません。お使いのVNETのサブネットに対してサービスエンドポイントを有効化すれば、お使いのVNETのIDをAzureデータサービスに拡張することで、Azureデータサービスに対する制限をかけるためのバーチャルネットワークファイアウォールルールを追加することができます。
お使いのバーチャルネットワークからのAzureデータサービストラフィックの最適ルーティング
現時点では、お使いのクラウド・オンプレミスベースのバーチャルアプライアンスを経由して公衆ネットワークに向かうVNETのあらゆるルートは、Azureデータサービスのトラフィックにも使用されます。サービスエンドポイントを用いることで、Azureのトラフィックの最適なルートを提供できます。
Azureネットワークバックボーンにトラフィックを限定
サービスエンドポイントは常に、Azureデータソーストラフィックをお使いのVNETからMicrosoft Azureネットワークバックボーンのリソースへと直接割り振ります。Azureネットワークバックボーンにトラフィックを限定することで、強制トンネリングを通じて、データサービスのトラフィックにインパクトを与えることなしに、お使いのバーチャルネットワークからインターネットへのアウトバウンドトラフィックの監査、モニタリングの継続が可能となります。ユーザー定義ルートと強制トンネリングに関しては、Azure virtual network traffic routingを参照ください。
管理オーバーヘッドなしにシンプルにセットアップ
IPファイアウォールを通じたAzureデータサービスリソースへのアクセスをセキュアにするために、もはやバーチャルネットワークのパブリックIPを予約する必要はありません。サービスエンドポイントをセットアップするのに必要なNAT(Network Address Translation)やゲートウェイデバイスは不要です。サブネットに対してシンプルなセットアップを通じてサービスエンドポイントを設定することができます。エンドポイントを維持するための追加のオーバーヘッドはありません。
Azure DatabricksにおけるAzureサービスエンドポイント
Azureサービスエンドポイントに対する検討
サービスエンドポイントを実装する前に以下を検討してください。
- デフォルトではデータ流出に対する保護は提供しません。
- Azureネットワークバックボーンにトラフィックを限定するので、あらゆるデータフローで公衆ネットワークは使用されません。
- お使いのプライベートネットワークアドレス空間をAzureデータサービスには拡張しません。
- 別のリージョンのAzureデータサービスにプライベート接続はできません(paired regionは除く)。
- Azureサービスエンドポイントのメリットと制限に関してはドキュメントを参照ください。
プライベートで述べたのと同じ例をサービスエンドポイントではどのようになるのかを考えます。この場合、Azureストレージサービスエンドポイントは、Azure Databricksサブネットで設定され、同じサブネットがADLS Gen2のファイアウォールルールでホワイトリスト化されます。
以下に、この環境の構築手順を示します。
- Setup Service Endpoint for ADLS Gen2
- Deploy Azure Databricks in your VNET
- Configure IP firewall rules on ADLS Gen2
セキュアなAzureデータアクセスを使ってみる
Azure Databricks環境からAzureデータサービスにセキュアにアクセスするための選択肢を議論しました。ビジネス要件に基づいて、Azure Private Linkあるいはバーチャルネットワークサービスエンドポイントを使用することができます。ネットワーク接続に関するアプローチを決定したら、これらのリソースに接続するためにセキュアな認証アプローチを活用することができます。
- 特定のデータソースに関してはAzure Databrikcsのドキュメントを参照してください。
- あらゆる認証情報を隠蔽するためにシークレットを使用することを検討してください。
- 可能であれば、Azure AD credential passthroughを使ってADLS Gen2にアクセスしてください。
シリーズの次の記事では、データ流出を防ぐためのボトムアップのロックダウン環境の構築方法(言い換えると、データ損失防御アーキテクチャの実装です)についてご説明します。ここでは、上で議論した選択肢とAzure Firewallを組み合わせて活用します。ご質問があれば、MicrosoftあるいはDatabricksのアカウントチームにコンタクトしてください。