Databricksにおけるシークレットの管理のコンテンツです。
Secret workflow example | Databricks on AWS [2021/4/12時点]の翻訳です。
このワークフロー例においては、Azure Data Lake Storeに接続するために、JDBCの認証情報を格納するためのシークレットを設定します。
シークレットスコープの作成
jdbc
という名前でシークレットスコープを作成します。
databricks secrets create-scope --scope jdbc
注意
Premium planを契約していない場合には、全てのユーザー("users")に対して、スコープに対するMANAGE
権限を付与する必要がああります。例えば、以下のコマンドを実行します。
databricks secrets create-scope --scope jdbc --initial-manage-principal users
# シークレットの作成
シークレット`username`と`password`を追加します。以下のコマンドを実行し、開いたエディターにシークレットの値を入力します。
```bash
databricks secrets put --scope jdbc --key username
databricks secrets put --scope jdbc --key password
ノートブックからシークレットを使用する
ノートブック上でjdbc
スコープに格納されたシークレットを読み込み、JDBCコネクターを設定します。
Scala
val driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
val connectionProperties = new java.util.Properties()
connectionProperties.setProperty("Driver", driverClass)
val jdbcUsername = dbutils.secrets.get(scope = "jdbc", key = "username")
val jdbcPassword = dbutils.secrets.get(scope = "jdbc", key = "password")
connectionProperties.put("user", s"${jdbcUsername}")
connectionProperties.put("password", s"${jdbcPassword}")
これで、JDBCコネクター経由でConnectionProperties
を使用して、データソースと接続することができます。スコープから取得したシークレットはノートブック上には表示されません。(シークレットの検閲を参照ください)
他のグループにアクセス権を設定する
注意
この操作を行うためには、Premium planが必要となります。
認証情報が適切に設定されたことを確認した後で、datasicence
グループにこの認証情報を共有することにします。
datasicence
グループに認証情報の読み取り権限を与えるには、以下を実行します。
databricks secrets put-acl --scope jdbc --principal datascience --permission READ