シークレットSecrets

シークレットは、秘密のマテリアルを格納するキーと値のペアであり、秘密の スコープ内で一意のキー名を持ちます。A secret is a key-value pair that stores secret material, with a key name unique within a secret scope. 各スコープは、1000のシークレットに制限されています。Each scope is limited to 1000 secrets. 許可されるシークレットの最大サイズは 128 KB です。The maximum allowed secret value size is 128 KB.

シークレットの作成Create a secret

シークレットの名前は大文字と小文字が区別されません。Secret names are case insensitive.

シークレットを作成する方法は、Azure Key Vault によってサポートされるスコープと Databricks によってサポートされるスコープのどちらを使用しているかによって異なります。The method for creating a secret depends on whether you are using an Azure Key Vault-backed scope or a Databricks-backed scope.

Azure Key Vault に基づくスコープでシークレットを作成するCreate a secret in an Azure Key Vault-backed scope

でシークレットを作成するには Azure Key Vault Azure Setsecret REST API または Azure portal UI を使用します。To create a secret in Azure Key Vault you use the Azure SetSecret REST API or Azure portal UI.

Azure Key VaultAzure Key Vault

Databricks ベースのスコープでシークレットを作成するCreate a secret in a Databricks-backed scope

DATABRICKS CLI (バージョン0.7.1 以降) を使用して、Databricks でサポートされているスコープにシークレットを作成するには、次の手順を実行します。To create a secret in a Databricks-backed scope using the Databricks CLI (version 0.7.1 and above):

databricks secrets put --scope <scope-name> --key <key-name>

エディターが開き、次のような内容が表示されます。An editor opens and displays content like this:

# ----------------------------------------------------------------------
# Do not edit the above line. Everything that follows it will be ignored.
# Please input your secret value above the line. Text will be stored in
# UTF-8 (MB4) form and any trailing new line will be stripped.
# Exit without saving will abort writing secret.

行の上にシークレット値を貼り付け、エディターを保存して終了します。Paste your secret value above the line and save and exit the editor. 入力内容が削除され、スコープ内のキーに関連付けられているコメントが削除されます。Your input is stripped of the comments and stored associated with the key in the scope.

既に存在するキーを持つ書き込み要求を発行すると、新しい値によって既存の値が上書きされます。If you issue a write request with a key that already exists, the new value overwrites the existing value.

また、ファイルまたはコマンドラインからシークレットを指定することもできます。You can also provide a secret from a file or from the command line. シークレットの作成の詳細については、「 シークレット CLI」を参照してください。For more information about writing secrets, see Secrets CLI.

シークレットのリストList secrets

特定のスコープのシークレットを一覧表示するには、次のようにします。To list secrets in a given scope:

databricks secrets list --scope <scope-name>

応答には、秘密キー名や、タイムスタンプでの最終更新日 (エポック以降のミリ秒単位) など、シークレットに関するメタデータ情報が表示されます。The response displays metadata information about the secret, such as the secret key name and last updated at timestamp (in milliseconds since epoch). シークレットを読み取るには、ノートブックまたはジョブで シークレットユーティリティ を使用します。You use the Secrets utilities in a notebook or job to read a secret. 次に例を示します。For example:

databricks secrets list --scope jdbc
Key name    Last updated
----------  --------------
password    1531968449039
username    1531968408097

シークレットを読み取りますRead a secret

REST API または CLI を使用してシークレットを作成しますが、シークレットを読み取るには、ノートブックまたはジョブでシークレット ユーティリティ を使用する必要があります。You create secrets using the REST API or CLI, but you must use the Secrets utilities in a notebook or job to read a secret.

Spark の構成プロパティと環境変数のシークレットパス Secret paths in Spark configuration properties and environment variables

重要

この機能はパブリック プレビュー段階にあります。This feature is in Public Preview.

注意

Databricks Runtime 6.1 以降で使用できます。Available in Databricks Runtime 6.1 and above.

シークレットへのパスは、Spark 構成プロパティまたは環境変数に格納できます。You can store the path to a secret in a Spark configuration property or environment variable. 取得したシークレットは、notebook の出力、Spark ドライバー、および実行プログラムのログから最終されます。Retrieved secrets are redacted from notebook output and Spark driver and executor logs.

重要

シークレットは、stdout および stderr から は最終ませんSecrets are not redacted from stdout and stderr. 回避策として、[ spark.databricks.acl.needAdminPermissionToViewLogs true 管理] アクセス許可を持つユーザーのみに stdout ページを表示するように Spark 構成プロパティを設定します。A workaround is to set the Spark configuration property spark.databricks.acl.needAdminPermissionToViewLogs true to allow only users who have manage permission to view the stdout page.

要件と制限事項Requirements and limitations

  • クラスター所有者には、シークレットスコープに対する 読み取り アクセス許可が必要です。Cluster owners must have Read permission on the secret scope.
  • クラスター所有者だけが、Spark 構成または環境変数のシークレットへのパスを追加し、既存のスコープと名前を編集できます。Only cluster owners can add a path to a secret in a Spark configuration or environment variable and edit the existing scope and name. 所有者は、 Put secret API を使用してシークレットを変更します。Owners change a secret using the Put secret API. シークレットを再度フェッチするには、クラスターを再起動する必要があります。You must restart your cluster to fetch the secret again.
  • クラスターに対する 管理 権限を持つユーザーは、シークレットのプロパティと環境変数を削除できます。Users with the Can Manage permission on the cluster can delete secret properties and environment variables.

パスの値Path value

Spark プロパティまたは環境変数のパス値の構文は、である必要があり {{secrets/<scope-name>/<secret-name>}} ます。The syntax of the Spark property or environment variable path value must be {{secrets/<scope-name>/<secret-name>}}.

値はで始まり {{secrets/ 、で終わる必要があり }} ます。The value must start with {{secrets/ and end with }}. プロパティまたは環境変数の変数部分は次のとおりです。The variable portions of the property or environment variable are:

  • <secret-prop-name>: Spark 構成の secret プロパティの名前。<secret-prop-name>: The name of the secret property in the Spark configuration.
  • <scope-name>: シークレットが関連付けられているスコープの名前。<scope-name>: The name of the scope in which the secret is associated.
  • <secret-name>: スコープ内のシークレットの一意の名前。<secret-name>: The unique name of the secret in the scope.

注意

  • 中かっこの間にスペースを入れないでください。There should be no spaces between the curly brackets. スペースがある場合は、スコープまたはシークレットの名前の一部として扱われます。If there are spaces, they are treated as part of the scope or secret name.
  • 値の形式が正しくない場合、たとえば、開始中かっこまたは終了中かっこが1つしかない場合、値は Spark 構成プロパティまたは環境変数の値として扱われます。If the value format is incorrect, for example, there is only one starting brace or ending brace, the value is treated as a Spark configuration property or environment variable value.

Spark 構成プロパティのシークレットへのパスを格納するStore the path to a secret in a Spark configuration property

次の形式で、 Spark 構成 のシークレットパスを指定します。You specify a secret path in a Spark configuration in the following format:

spark.<secret-prop-name> <path-value>

spark.<secret-prop-name> は、シークレットパスにマップされる Spark 構成プロパティ名です。spark.<secret-prop-name> is a Spark configuration property name that maps to the secret path. シークレットのプロパティ名が一意である限り、Spark 構成に複数のシークレットを追加できます。You can add multiple secrets to the Spark configuration as long as the secret property names are unique.

Example

spark.password {{secrets/testScope/testKey1}}

ノートブックのシークレットを取得して使用するには、次のように実行し spark.conf.get("spark.<secret-name>") ます。To fetch the secret in the notebook and use it, run spark.conf.get("spark.<secret-name>"):

spark.conf.get("spark.password")

環境変数にシークレットへのパスを格納するStore the path to a secret in an environment variable

環境変数にシークレットパスを指定し、それをクラスタースコープの init スクリプトで使用します。You specify a secret path in an environment variable and use it in a cluster-scoped init script. これらの環境変数には、Spark で実行されているプログラムからアクセスすることはでき ませんThese environment variables are not accessible from a program running in Spark.

SPARKPASSWORD=<path-value>

Init スクリプトでシークレットを取得するには、次のようにアクセスし $SPARKPASSWORD ます。To fetch the secret in an init script, access $SPARKPASSWORD:

if [[ $SPARKPASSWORD ]]; then
  use $SPARKPASSWORD
fi

シークレットを削除しますDelete a secret

Azure Key Vault によってサポートされるスコープからシークレットを削除するには、Azure Setsecret REST API または Azure portal UI を使用します。To delete a secret from a scope backed by Azure Key Vault, use the Azure SetSecret REST API or Azure portal UI.