1.はじめに

背景
現代のデータ処理システムにおいて、パスワード、APIキー、データベース接続文字列などの機密情報を安全に管理することは必須要件となっています。
これらの情報をノートブックやソースコードへ直接格納した場合、セキュリティポリシー違反となるだけでなく、情報漏洩リスクにもつながります。
Azure Databricksは大規模データ処理に適した強力なプラットフォームですが、安全性を確保するためにはシークレットを適切に管理する仕組みが必要です。
Azure Key Vaultは、シークレットを安全に保管し、アクセス権限を一元管理できるサービスであり、本番環境におけるセキュリティ基準への準拠にも役立ちます。

目的
本記事では、Azure DatabricksとAzure Key Vaultを連携し、企業向けセキュリティ基準に準拠したシークレット管理を実現する方法について解説します。
これにより、機密情報の保護、シークレットの一元管理、ローテーション対応、および監査(Audit)を効率的に実施できるようになります。

目標
本記事を読み終えることで、以下を実施できるようになります。

  • Azure Potal上でキーコンテナーの作成
  • Databricksからキーコンテナーへアクセスするための権限設定実施
  • Databricks上でAzure Key Vaultと連携したシークレットスコープの作成
  • ノートブック上からシークレットの取得
  • Databricksと連携したスコープとAzure Key Vaultと連携したスコープの違いについて理解

2.Azure Key Vaultの概要

Azure Key Vaultは、クラウドベースの暗号情報管理サービスであり、アプリケーション運用時における機密データ保護の課題を解決するために設計されています。主に以下 3 つの機能を提供しています。
・シークレット管理(Secrets Management):APIキー、パスワード、データベース接続文字列などの機密情報を安全に保管し、アクセス権限を管理する。
・キー管理(Key Management):データ保護に利用する暗号化キー(Encryption Key)の作成および管理を行う。
・証明書管理(Certificate Management):公開証明書や社内向けSSL/TLS証明書の発行、管理、配布を行う。

本記事では、シークレット管理機能に焦点を当て、DatabricksのシークレットスコープにおけるバックエンドストレージとしてAzure Key Vaultを利用する方法を紹介します。
Azure Key Vaultを利用することで、シークレットを安全に保管できるだけでなく、RBAC(Azure Role-Based Access Control)による細かな権限制御も実現できます。
これにより、システム運用における最小権限の原則(Least Privilege)を維持しながら、安全なシークレット管理を行うことが可能になります。
詳細については、こちらの公式ドキュメントをご参照ください。

Azure DatabricksとAzure Key Vaultの連携とは、Databricksが機密情報(シークレット)をワークスペース内へ直接保存するのではなく、Azure上の集中管理ストレージから安全に参照できるようにするための連携構成を指します。
現代的なデータ基盤アーキテクチャにおいて、この連携は、パスワード、APIキー、 接続文字列などの認証情報を、アプリケーションコードやノートブックの処理ロジックから完全に分離する重要な役割を担います。

また、Azure Key Vaultをシークレットスコープのバックエンドとして利用することで、以下のような統一されたセキュリティポリシーを適用できます。
・アクセス権限の集中管理
・シークレット/キーのローテーション管理
・詳細なアクセス監査(Audit)
これにより、ノートブック共同開発時における機密情報漏洩リスクを大幅に低減できるほか、本番環境に求められるセキュリティおよびコンプライアンス要件への対応も容易になります。

3.前提条件

本手順を実施する前に、以下の前提条件を満たしていることをご確認ください。

  • ユーザーがAzureサブスクリプション上でキーコンテナーを作成可能な権限(共同作成者または所有者)を保有していること
  • ユーザーがキーコンテナー内へシークレットを登録できる権限(キーコンテナー管理者 または シークレット責任者)を保有していること
  • ユーザーがDatabricks Workspace上でシークレットスコープを作成可能な管理者権限を保有していること
  • Databricksから接続可能となるよう、Azure Key Vaultのネットワーク設定が構成されていること

4.基本的なハンズオン

4.1. Azure上でキーコンテナーの作成

Azure上でキーコンテナーを作成するには、以下の手順を順番に実施します。

  1. Azure Portalへアクセスします。
  2. 「キー コンテナー」を選択します。

  1. 「+作成」をクリックします。

  1. 「キーコンテナーの作成」画面の「基本」タブにて、以下の情報を入力します。
  • サブスクリプション: Databricks Workspaceが配置されているリソースグループを含むサブスクリプションを選択する。
  • リソース グループ: Databricks Workspaceが配置されているリソースグループを選択する。
  • Key Vault名: キーコンテナー名を入力する。
  • 地域: Databricks Workspaceと同じリージョンを選択する。
  • 価格レベル: 「標準」を選択する。
  1. 入力内容を確認後、「確認および作成」をクリックします。

  1. 「確認および作成」タブで「作成」ボタンをクリックします。

キーコンテナーの作成完了後、対象のキーコンテナーをクリックし、次の手順へ進みます。

4.2. キーコンテナーにシークレットの登録

キーコンテナーにシークレットを登録するには、以下の手順を実施します。

  1. 左側メニューより「オブジェクト」をクリックし、次に「シークレット」をクリックし、そのあと「生成/インポート」を選択する。

  1. 「シークレットの作成」画面にて、以下の情報を入力します。
  • 名前: シークレット名を入力する。
  • シークレット値: シークレットの値を入力する。
  • コンテンツの種類 (省略可能): シークレットの種類を入力する。
  1. 「作成」ボタンをクリックします。

  1. シークレットを正常に登録後、左側のメニューから「設定」をクリックし、「アクセス構成」を選択します。

  1. 「アクセス許可モデル」項目にて、「コンテナーのアクセス ポリシー」を選択し、「適用」ボタンをクリックします。

これで、キーコンテナー側のシークレット設定は完了です。Databricksから接続可能な状態になりました。

4.3. DatabricksでAzure Key Vaultと連携したシークレットスコープの作成

Databricksでは、シークレットを安全に管理するために、主に以下2種類のシークレットスコープが提供されています。

  • Azure Key Vaultと連携したスコープ:シークレットは企業側のAzure Key Vault上に独立して保存されており、Azure Databricksはシークレットを取得するための読み取り用インターフェースとしてのみ機能します。そのため、シークレットのCUD(作成・更新・削除)操作は、Azure PortalまたはAzure CLI上で直接実施する必要があります。
  • Databricksと連携したスコープ:シークレットは、Databricksが管理する暗号化データベース上に保存されます。Databricks Workspace管理者は、Databricks CLIを利用してシークレットのCRUD (作成・読み取り・更新・削除)操作を直接実施できます。

本手順では、Databricks上でAzure Key Vaultと連携したシークレットスコープを作成します。

  1. 作成したキーコンテナーの「概要」画面にて、「コンテナーのURI」横のコピーアイコンをクリックします。
    ※この値は後続手順で使用するため、メモしておきます。 (a)
  2. 続いて、「JSON ビュー」を開き、「リソースID」横のコピーアイコンをクリックします。
    ※こちらも後続手順で使用するため、メモしておきます。 (b)

  1. 以下のURLへアクセスします。

※<databricks-instance> には、ご利用中のAzure Databricks WorkspaceのURLを指定してください。

  1. 「Ceate Secret Scope」画面にて、以下の情報を入力します。
  • Scope Name:スコープ名を入力する。
    ※この名称はノートブックなどからシークレットを参照する際に使用される。
  • Manage Principal:管理対象ユーザーを設定する。
    ①Creator:高いセキュリティ要件や最小権限の原則が求められる環境向けであり、スコープ作成者のみがシークレットスコープの管理および設定変更を行える。
    ②All workspace users:開発環境や共有プロジェクト向けの設定であり、Workspace内のすべてのユーザーがシークレットスコープの管理および設定変更を行える。
  • DNS Name: 前手順でコピーした(a)の値を入力する。
  • Resource ID: 前手順でコピーした(b)の値を入力する。
  1. 「Create」をクリックします。

これで、Azure Key Vaultと連携したシークレットスコープの作成は完了です。

4.4. ノートブック上でPythonを利用してシークレットの取得

Pythonを利用してノートブック上からシークレットを取得するには、以下の手順を実施します。

  1. 新規のノートブックを作成し、言語に「Python」を選択する。
  2. 以下のコードをセルへ入力し、実行する。

作成済ものシークレットスコープ一覧が表示される。

  1. 以下のコードをセルへ入力し、実行します。

実行結果として「REDACTED」が表示されれば、キーコンテナーからシークレットを正常に取得できていることを意味します。

※Databricks では、セキュリティ確保のため、実際のシークレット値は表示されず、ノートブックやログ上では「REDACTED」としてマスクされます。

  1. シークレットを取得できた後は、保護すべきサービスおよびリソースへアクセスする安全な変数としてコード内で利用できます。

例えば、シークレットがAPIキーの場合は、以下のように利用できます。

5.Databricksと連携したスコープとの比較

比較対象 Azure Key Vaultと連携したスコープ Databricksと連携したスコープ
格納場所 Workspace外部のAzure Key Vault上に独立して保存され、企業のAzure環境で管理される。 Databricksが管理する暗号化データベース内へ内部保存される。
管理ツール Azure Portal、Azure CLI、PowerShell、またはInfrastructure as Code(Terraform)などを利用して管理する。 Databricks CLIまたはDatabricks Secrets APIを利用して直接管理する。
Databricksの権限範囲 ・読み取り専用(Read-only)。

・Databricksからキーコンテナー内のシークレットを上書き・追加・削除することはできない。

・フルコントロール可能。

・Databricksがシークレットの作成から削除まで、ライフサイクル全体を管理できる。

推奨利用環境 本番環境や、高いセキュリティ・コンプライアンス要件が求められる企業向けプロジェクトに適している。 開発環境、概念実証(PoC)、または小規模プロジェクトに適している。

6.利用時の制限事項

以下は、システムの安定性を維持するために注意すべき主な技術的制限事項です。

  • サイズ制限(25 KB
    1つのシークレットに保存できる最大サイズは25KBです。そのため、パスワードやAPIキーの保存には適していますが、大容量の設定ファイルなどを保存する用途には適していません。
  • アクセス制限(Throttling
    Azure Key Vaultでは、10秒あたり2,000リクエストの上限が設定されています。この上限を超えた場合、HTTP429エラーが発生し、データパイプラインの実行へ影響を与える可能性があります。
  • 実行時の注意点
    Databricks上で、ループ処理やUDF(User Defined Function)内からシークレットを取得する実装は避けてください。 複数のワーカーノードから同時に大量アクセスが発生すると、Azure Key Vaultのスロットリング制御が発動しやすくなります。

詳細については、こちらの公式ドキュメントをご参照ください。

7.まとめ

Azure DatabricksとAzure Key Vaultの連携は、本番環境において機密情報を安全に管理するための重要な構成です。

シークレットスコープを利用することで、パスワードやAPIキーなどの認証情報をソースコードから完全に分離でき、企業で求められる厳格なセキュリティ基準へ対応しやすくなります。

一部の技術的制限は存在するものの、本構成は大規模なデータパイプラインを安全に運用・保護する上で非常に高い価値を提供します。

本環境を出発点として、より実践的なユースケースへ発展させたり、必要に応じてDatabricksのフル機能版へ移行することも可能です。

今回の記事が少しでも皆さんの新しい知識や業務のご参考になれば幸いです。

双日テックイノベーションでは、Azure Databricksの環境構築パッケージを用意しています。

Azure DatabricksやAzure活用、マイクロソフト製品の活用についてご相談事がありましたら是非お問い合わせください!

・Azure Databricks連載記事のまとめはこちら

お問い合わせはこちら


この記事を読んだ方へのオススメコンテンツはこちら


[/vc_column_text][/vc_column][/vc_row]

この記事を書いた人

Azure支援デスク 管理者
Azure支援デスク 管理者
双日テックイノベーション(旧:日商エレクトロニクス)特設サイト「Azure導入支援デスク」サイトマスターです。