Databricks アプリにシークレット リソースを追加する
Databricks シークレットを Databricks Apps リソースとして追加して、API キーやトークンなどの機密値をアプリに安全に渡します。Databricks Apps は、 シークレットスコープに保存されているシークレットをサポートしています。 アプリはランタイムでこれらのシークレットを取得するため、アプリケーションコードや環境定義から除外されます。
シークレットリソースを追加する
シークレットをアプリ リソースとして追加する前に、 前提条件を満たしていることを確認してください。
-
アプリを作成または編集するときに、[ アプリ リソース ] セクションで、[ + リソースの追加 ] をクリックします。
-
リソースの種類として [シークレット] を選択します。
-
シークレットスコープを選択します。
-
そのスコープ内で、アプリで使用するシークレットキーを選択します。
-
スコープのアクセス許可レベルを選択します (個々のシークレットではありません)。
- 読むことができます: 選択したスコープ内のすべてのシークレットへの読み取りアクセス権をアプリに付与します。
- 書くことができます: スコープ内のシークレットを更新するアクセス許可をアプリに付与します。
- 管理 できるもの: スコープ内のシークレットの読み取り、更新、削除のアクセス許可をアプリに付与します。
-
(オプション)カスタム リソース キー (アプリ構成でシークレットを参照する方法) を指定します。デフォルトのキーは
secret
です。
これらの手順により、アプリは、スコープから選択したシークレットに、その値を環境変数として渡すことで安全にアクセスできます。
ただし、シークレットのアクセス許可は スコープ レベルで適用され、個々のシークレットには適用されません。アプリ間のアクセスを制限するには、アプリごとに個別のシークレットスコープを作成し、そのスコープに必要なシークレットのみを格納します。
環境変数
シークレット リソースを使用するアプリをデプロイすると、Databricks は各シークレットを環境変数として挿入します。各変数の名前は、シークレットを追加したときに定義したリソースキーと一致します。
アプリからシークレットにアクセスするには、その環境変数を使用します。アプリの設定ファイル( app.yaml
など)で、 valueFrom
フィールドを使用してシークレットを参照する変数を定義します。この設定により、実際のシークレット値は Databricks によって安全に管理され、プレーンテキストで公開されません。
異なるリソース キーを持つ複数のリソース エントリで同じシークレットを使用すると、 valueFrom
で参照されるときに、それぞれが個別の環境変数になります。
詳細については、「 リソースから環境変数にアクセスする」を参照してください。
機密性の高い値を環境変数やアプリのコードに直接保存しないでください。代わりに、リソース キーを環境変数として Databricks に渡し、実行時にシークレット値を安全に取得します。
シークレットリソースを削除する
アプリからシークレットリソースを削除しても、シークレット自体はシークレットスコープに残ります。 ただし、シークレットを再度追加しない限り、アプリはシークレットにアクセスできなくなります。
おすすめの方法
アプリでシークレットを管理するときは、次のおすすめの方法に従ってください。
- 生のシークレット値を公開しないでください。環境変数として直接挿入されたシークレット値は、アプリの [環境] ページにプレーンテキストで表示されます。これを回避するには、アプリ構成の
valueFrom
フィールドを使用してシークレットを参照し、アプリ コード内で値を安全に取得します。 - アプリのアクセスを、必要な特定のスコープのみに制限します。ワークスペース内のすべてのスコープへのアクセス権を付与しないでください。
- すべてのシークレットのローテーションスケジュールを設定し、チームメンバーがロールを変更したり、組織を離れたりするとすぐにローテーションします。