シークレットのスコープ
シークレットの管理は、シークレットのスコープの作成から始まります。 シークレットのスコープとは、名前によって識別されるシークレットのコレクションです。
ワークスペースは、最大 1,000 個のシークレット スコープに制限されています。 さらに必要な場合は、Azure Databricks のサポート チームにお問い合わせください。
Note
Databricks では、シークレットのスコープを個人ではなくロールまたはアプリケーションに配置することをお勧めします。
概要
シークレットのスコープには、Azure Key Vault でサポートされるもののと Databricks でサポートされるものの 2 種類があります。
Azure Key Vault でサポートされるスコープ
Azure Key Vault に格納されているシークレットを参照するために、Azure Key Vault によってサポートされるシークレットのスコープを作成できます。 これで、対応する Key Vault インスタンス内のすべてのシークレットを、そのシークレットのスコープから利用できます。 Azure Key Vault によってサポートされるシークレットのスコープは Key Vault の読み取り専用インターフェイスであるため、Secrets API の操作 PutSecret
と DeleteSecret
は許可されません。 Azure Key Vault でシークレットを管理するには、Azure Set Secret REST API または Azure portal UI を使用する必要があります。
Databricks でサポートされるスコープ
Databricks でサポートされるシークレットのスコープは、Azure Databricks によって所有および管理される暗号化されたデータベースに格納されます (によってサポートされます)。 シークレットのスコープ名は次のとおりです。
- ワークスペース内で一意である必要がある。
- 英数字、ダッシュ、アンダースコア、
@
、およびピリオドで構成する必要があり、128 文字を超えることはできません。
名前は、機密ではないと見なされ、ワークスペース内のすべてのユーザーが読み取り可能です。
Databricks でサポートされるシークレットのスコープは、Databricks CLI (バージョン 0.205 以上) を使用して作成します。 あるいは、Secrets API を使用できます。
スコープのアクセス許可
スコープは、シークレットACL によって制御されるアクセス許可を使用して作成されます。 既定では、スコープを作成したユーザー ("作成者") に対する MANAGE アクセス許可があるスコープが作成されます。これにより、作成者はスコープ内のシークレットの読み取り、スコープへのシークレットの書き込み、およびスコープの ACL の変更を実行できます。 アカウントに Premium プランがある場合は、スコープを作成した後で、いつでもきめ細かいアクセス許可を割り当てることができます。 詳細については、シークレット ACL に関する記事を参照してください。
スコープの作成時に、既定値を上書きし、すべてのユーザーに明示的に MANAGE アクセス許可を付与することもできます。 実際に、アカウントに Premium プランがない場合は、この操作を行う "必要があります"。
Note
シークレット ACL はスコープ レベルです。 Azure Key Vault ベースのスコープを使用する場合、スコープへのアクセスが許可されているユーザーは、Azure Key Vault 内のすべてのシークレットにアクセスできます。 アクセスを制限するには、個別の Azure キー コンテナー インスタンスを使用します。
Azure Key Vault でサポートされるシークレット スコープを作成する
このセクションでは、Azure portal と Azure Databricks ワークスペース UI を使用して、Azure Key Vault でサポートされるシークレット スコープを作成する方法について説明します。 Databricks CLI を使用して、Azure Key Vault でサポートされるシークレットのスコープを作成することもできます。
要件
シークレット スコープをサポートするために使用したい Azure Key Vault インスタンス上の Key Vault 共同作成者、共同作成者、または所有者のロールが必要です。
Key Vault インスタンスがない場合は、Azure portal を使用した Key Vault の作成に関する記事に記載されている手順に従ってください。
Note
Azure Key Vault がサポートするシークレット スコープを作成するには、Azure キー コンテナー インスタンスに対する共同作成者または所有者のロールが必要です。これは、Azure Databricks サービスが以前にそのキー コンテナーへのアクセスを許可されている場合でも必要です。
キー コンテナーが Azure Databricks ワークスペースとは異なるテナントに存在する場合、シークレットのスコープを作成する Azure AD ユーザーは、キー コンテナーのテナントにサービス プリンシパルを作成するアクセス許可を持っている必要があります。 そうでないと、次のエラーが発生します:。
Unable to grant read/list permission to Databricks service principal to KeyVault 'https://xxxxx.vault.azure.net/': Status code 403, {"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"Insufficient privileges to complete the operation."},"requestId":"XXXXX","date":"YYYY-MM-DDTHH:MM:SS"}}
Azure Databricks 用に Azure キー コンテナー インスタンスを構成する
Azure Portal にログインし、Azure キー コンテナー インスタンスを見つけて選択します。
[設定] の下の [アクセス構成] タブに移動します。
[アクセス許可モデル] を [Vault アクセス ポリシー] に設定します。
Note
Azure Key Vault がサポートするシークレット スコープ ロールを作成すると、キー コンテナー アクセス ポリシーを使用して、Azure Databricks サービスのリソース ID に Get および List アクセス許可が付与されます。 Azure ロールベースのアクセス制御アクセス許可モデルは、現在 Azure Databricks ではサポートされていません。
[設定] で [ネットワーク] タブを選択します。
[ファイアウォールと仮想ネットワーク] で、[次からのアクセスを許可する:] を [特定の仮想ネットワークと IP アドレスからのパブリック アクセスを許可する] に設定します。
[例外] で、[信頼された Microsoft サービスがこのファイアウォールをバイパスすることを許可します] を選択します。
Note
次からのアクセスを許可する: を すべてのネットワークからのパブリック アクセスを許可する に設定することもできます。
Azure Key Vault でサポートされるシークレット スコープを作成する
「
https://<databricks-instance>#secrets/createScope
」を参照してください。<databricks-instance>
を Azure Databricks デプロイのワークスペース URL に置き換えます。 この URL では大文字と小文字が区別されます (createScope
のスコープは大文字にする必要があります)。シークレットのスコープの名前を入力します。 シークレットのスコープの名前は大文字と小文字が区別されません。
[Manage Principal]\(プリンシパルの管理\) ドロップダウンを使用して、"すべてのユーザー" にこのシークレットのスコープの MANAGE アクセス許可を付与するか、シークレットのスコープの "作成者" (つまり、あなた) のみにするかを指定します。
MANAGE アクセス許可により、ユーザーはこのシークレットのスコープの読み取りと書き込みが可能になります。Premium プランのアカウントの場合は、スコープのアクセス許可を変更できます。
[作成者] を選択できるようにするには、アカウントに Premium プランが必要です。 シークレットのスコープを作成するときに MANAGE アクセス許可を "作成者" に付与し、スコープをテストした後でよりきめ細かいアクセス許可を割り当てる方法をお勧めします。 ワークフローの例については、「シークレットのワークフローの例」を参照してください。
アカウントに Standard プランがある場合は、"すべてのユーザー" グループに MANAGE アクセス許可を設定する必要があります。 ここで [作成者] を選択すると、スコープを保存しようとしたときにエラーメッセージが表示されます。
MANAGE アクセス許可の詳細については、シークレット ACL に関する記事を参照してください。
[DNS 名] (例:
https://databrickskv.vault.azure.net/
) と [リソース ID] (次の例) を入力します。/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/databricks-rg/providers/Microsoft.KeyVault/vaults/databricksKV
これらのプロパティは、Azure portal 内の Azure Key Vault の [設定 > プロパティ] タブで使用できます。
[作成] ボタンをクリックします。
Databricks CLI の
databricks secrets list-scopes
コマンドを使用して、スコープが正常に作成されたことを確認します。
Databricks を利用するシークレットのスコープを作成する
シークレットのスコープの名前は大文字と小文字が区別されません。
Databricks CLI を使用してスコープを作成するには:
databricks secrets create-scope <scope-name>
既定では、スコープは、スコープを作成したユーザーに対する MANAGE アクセス許可付きで作成されます。 アカウントに Premium プランがない場合は、その既定値をオーバーライドし、スコープを作成するときに、"users" (すべてのユーザー) に対して明示的に MANAGE アクセス許可を付与する "必要があります"。
databricks secrets create-scope <scope-name> --initial-manage-principal users
Secrets API を使用して、Databricks でサポートされているシークレットのスコープを作成することもできます。
アカウントに Premium プランがある場合は、スコープを作成した後で、いつでもアクセス許可を変更できます。 詳細については、シークレット ACL に関する記事を参照してください。
Databricks でサポートされているシークレットのスコープを作成したら、シークレットを追加できます。
シークレットのスコープを一覧表示する
CLI を使用してワークスペースの既存のスコープを一覧表示するには、次のようにします。
databricks secrets list-scopes
Secrets API を使用して、既存のスコープを一覧表示することもできます。
シークレットのスコープを削除する
シークレットのスコープを削除すると、スコープに適用されているすべてのシークレットと ACL が削除されます。 CLI を使用してスコープを削除するには、以下を実行します。
databricks secrets delete-scope <scope-name>
Secrets API を使用して、シークレットのスコープを削除することもできます。