はじめに
Databricksでは、機密情報を安全に管理するためのシークレット管理機能が提供されています。
この記事では、Databricks CLIを使用したシークレットの管理方法と、
登録したシークレット値のDatabricks Appsからの利用方法について説明します。
前提条件
- Databricks CLIがインストールされていること
- Databricks CLIが設定されていること
-
databricks configure --token
で設定
-
シークレット管理の基本操作
1. シークレットスコープの作成
シークレットスコープは、シークレットをグループ化するための論理的なコンテナです。
databricks secrets create-scope <scope-name>
# 例:
databricks secrets create-scope my-scope
2. シークレットの追加
シークレットスコープ内にシークレットを追加します。
databricks secrets put-secret --json '{
"scope": "<scope-name>",
"key": "<key-name>",
"string_value": "<secret>"
}'
# 例:
databricks secrets put-secret --json '{
"scope": "my-scope",
"key": "my-key",
"string_value": "my-secret"
}'
3. シークレットの確認
作成したシークレットスコープとシークレットを確認できます。
# シークレットスコープの一覧表示
databricks secrets list-scopes
# 特定のスコープ内のシークレット一覧表示
databricks secrets list-secrets <scope-name>
# 例:
databricks secrets list-secrets my-scope
Databricks Appsでのシークレットの利用
1. アプリ設定でのシークレット参照
Databricks Appsのアプリ設定画面でシークレットを参照するには、以下の設定を行います:
- scope: シークレットスコープ名
- secret key: シークレットキー名
- 権限: 読み取り可能
- リソースキー: 任意(アプリ内で参照する際に使用)
2. アプリでのシークレット利用
app.yamlの設定
アプリの設定ファイル(app.yaml)でシークレットを参照するには、以下のように設定します:
env:
- name: 'my-key' # アプリ内で使用する環境変数名
valueFrom: 'my-key' # 設定したリソースキー名
アプリケーションコードでの利用
アプリケーションコードでは、環境変数としてシークレットを参照できます:
import os
# シークレットの取得
secret_value = os.getenv('my-key')
まとめ
Databricksのシークレット管理機能を使用することで、以下のメリットが得られます:
- 機密情報の安全な管理
- アプリケーションコードからの簡単な参照
- アクセス権限の細かい制御
シークレット管理はセキュリティの重要な要素です。適切な管理と定期的な見直しを行うことで、より安全な運用が可能になります。