シークレットのスコープ

シークレットの管理は、シークレットのスコープの作成から始まります。 シークレットのスコープとは、名前によって識別されるシークレットのコレクションです。 ワークスペースは、最大 100 個のシークレットのスコープに制限されています。

注意

Databricks では、シークレットのスコープを個人ではなくロールまたはアプリケーションに配置することをお勧めします。

概要

シークレットのスコープには、Azure Key Vault でサポートされるもののと Databricks でサポートされるものの 2 種類があります。

Azure Key Vault でサポートされるスコープ

Azure Key Vault に格納されているシークレットを参照するために、Azure Key Vault によってサポートされるシークレットのスコープを作成できます。 これで、対応する Key Vault インスタンス内のすべてのシークレットを、そのシークレットのスコープから利用できます。 Azure Key Vault によってサポートされるシークレットのスコープは Key Vault の読み取り専用インターフェイスであるため、Secrets API 2.0 操作 PutSecretDeleteSecret は許可されません。 Azure Key Vault でシークレットを管理するには、Azure SetSecret REST API または Azure portal UI を使用する必要があります。

Databricks でサポートされるスコープ

Databricks でサポートされるシークレットのスコープは、Azure Databricks によって所有および管理される暗号化されたデータベースに格納されます (によってサポートされます)。 シークレットのスコープ名は次のとおりです。

  • ワークスペース内で一意である必要があります。
  • 英数字、ダッシュ、アンダースコア、@、およびピリオドで構成する必要があり、128 文字を超えることはできません。

名前は、機密ではないと見なされ、ワークスペース内のすべてのユーザーが読み取り可能です。

Databricks でサポートされるシークレットのスコープは、Databricks CLI (バージョン 0.7.1 以上) を使用して作成します。 あるいは、Secrets API 2.0 を使用できます。

スコープのアクセス許可

スコープは、ACL によって制御されるアクセス許可を使用して作成されます。 既定では、スコープを作成したユーザー ("作成者") に対する MANAGE アクセス許可があるスコープが作成されます。これにより、作成者はスコープ内のシークレットの読み取り、スコープへのシークレットの書き込み、およびスコープの ACL の変更を実行できます。 アカウントに Premium プランがある場合は、スコープを作成した後で、いつでもきめ細かいアクセス許可を割り当てることができます。 詳細については、「シークレットのアクセス制御」を参照してください。

スコープの作成時に、既定値を上書きし、すべてのユーザーに明示的に MANAGE アクセス許可を付与することもできます。 実際に、アカウントに Premium プランがない場合は、この操作を行う "必要があります"。

ベスト プラクティス

チーム リーダーは、Azure Synapse Analytics と Azure Blob Storage の資格情報に対して異なるスコープを作成し、それらのスコープへのアクセスをチーム内の異なるサブグループに提供することが必要になる場合があります。 異なるスコープの種類を使用してこれを実現する方法を検討する必要があります。

  • Databricks でサポートされるスコープを使用する場合、その 2 つのスコープにシークレットを追加すると、それらは異なるシークレット (スコープ 1 で Azure Synapse Analytics、スコープ 2 で Azure Blob Storage) になります。
  • Azure Key Vault でサポートされるスコープを使用し、各スコープで異なる Azure Key Vault を参照する場合、その 2 つの Azure Key Vault にシークレットを追加すると、それらは異なるシークレット セット (スコープ 1 で Azure Synapse Analytics のもの、スコープ 2 で Azure Blob Storage) になります。 これらは、Databricks によってサポートされるスコープと同様に機能します。
  • Azure Key Vault でサポートされるスコープを使用し、両方のスコープで同じ Azure Key Vault を参照する場合、その Azure Key Vault にシークレットを追加すると、すべての Azure Synapse Analytics と Azure Blob Storage のシークレットを利用できるようになります。 ACL はスコープ レベルであるため、2 つのサブグループのすべてのメンバーに、すべてのシークレットが表示されます。 この方法は、一連のシークレットへのアクセスを各グループに制限するユースケースに対応していません。

Azure Key Vault でサポートされるシークレットのスコープを作成する

UI を使用するか Databricks CLI を使用して、Azure Key Vault でサポートされるシークレットのスコープを作成できます。

UI を使用して Azure Key Vault でサポートされるシークレットのスコープを作成する

  1. シークレットのスコープのサポートに使用する Azure Key Vault インスタンスに対する共同作成者アクセス許可があることを確認します。

    Key Vault インスタンスがない場合は、クイック スタート: Azure portal を使用した Key Vault の作成に関する記事に記載されている手順に従ってください。

  2. https://<databricks-instance>#secrets/createScope にアクセスします。 この URL では大文字と小文字が区別されます。createScope のスコープは大文字にする必要があります。

    スコープの作成

  3. シークレットのスコープの名前を入力します。 シークレットのスコープの名前は大文字と小文字が区別されません。

  4. [Manage Principal] (プリンシパルの管理) ドロップダウンを使用して、[すべてのユーザー] にこのシークレットのスコープの MANAGE アクセス許可を付与するか、シークレットのスコープの [作成者] (つまり、あなた) のみにするかを指定します。

    MANAGE アクセス許可により、ユーザーはこのシークレットのスコープを読み書きでき、Premium プランのアカウントの場合は、スコープのアクセス許可を変更できます。

    [作成者] を選択できるようにするには、アカウントに Premium プランが必要です。 シークレットのスコープを作成するときに MANAGE アクセス許可を [作成者] に付与し、スコープをテストした後でよりきめ細かいアクセス許可を割り当てる方法をお勧めします。 ワークフローの例については、「シークレットのワークフローの例」を参照してください。

    アカウントに Standard プランがある場合は、[すべてのユーザー] グループに MANAGE アクセス許可を設定する必要があります。 ここで [作成者] を選択すると、スコープを保存しようとしたときにエラーメッセージが表示されます。

    MANAGE アクセス許可の詳細については、「シークレットのアクセス許可」を参照してください。

  5. [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 の [プロパティ] タブで使用できます。

    Azure Key Vault の [プロパティ] タブ

  6. [作成] ボタンをクリックします。

  7. Databricks CLIdatabricks secrets list-scopes コマンドを使用して、スコープが正常に作成されたことを確認します。

Azure Blob Storage にアクセスするときにシークレットを使用する例については、「Azure Databricks へのクラウド オブジェクト ストレージのマウント」を参照してください。

Databricks CLI を使用して Azure Key Vault でサポートされるシークレットのスコープを作成する

  1. CLI をインストールし、認証に Azure Active Directory (Azure AD) トークンを使用するように構成します。

    重要

    Databricks CLI を使用して Azure Key Vault でサポートされるシークレットのスコープを作成するには、Azure AD ユーザー トークンが必要です。 Azure Databricks 個人用アクセス トークン、またはサービス プリンシパルに属する Azure AD アプリケーション トークンを使用することはできません。

    キー コンテナーが 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"}}
    
  2. 次のように、Azure Key Vault スコープを作成します。

    databricks secrets create-scope --scope <scope-name> --scope-backend-type AZURE_KEYVAULT --resource-id <azure-keyvault-resource-id> --dns-name <azure-keyvault-dns-name>
    

    既定では、スコープは、スコープを作成したユーザーに対する MANAGE アクセス許可付きで作成されます。 アカウントに Premium プランがない場合は、その既定値をオーバーライドし、スコープを作成するときに、users (すべてのユーザー) グループに対して明示的に MANAGE アクセス許可を付与する必要があります。

     databricks secrets create-scope --scope <scope-name> --scope-backend-type AZURE_KEYVAULT --resource-id <azure-keyvault-resource-id> --dns-name <azure-keyvault-dns-name> --initial-manage-principal users
    

    アカウントに Premium プランがある場合は、スコープを作成した後で、いつでもアクセス許可を変更できます。 詳細については、「シークレットのアクセス制御」を参照してください。

    Databricks でサポートされているシークレットのスコープを作成したら、シークレットを追加できます。

Azure Blob Storage にアクセスするときにシークレットを使用する例については、「Azure Databricks へのクラウド オブジェクト ストレージのマウント」を参照してください。

Databricks を利用するシークレットのスコープを作成する

シークレットのスコープの名前は大文字と小文字が区別されません。

Databricks CLI を使用してスコープを作成するには:

databricks secrets create-scope --scope <scope-name>

既定では、スコープは、スコープを作成したユーザーに対する MANAGE アクセス許可付きで作成されます。 アカウントに Premium プランがない場合は、その既定値をオーバーライドし、スコープを作成するときに、"users" (すべてのユーザー) に対して明示的に MANAGE アクセス許可を付与する "必要があります"。

databricks secrets create-scope --scope <scope-name> --initial-manage-principal users

Secrets API のシークレットの入力操作を使用して、Databricks でサポートされているシークレットのスコープを作成することもできます。

アカウントに Premium プランがある場合は、スコープを作成した後で、いつでもアクセス許可を変更できます。 詳細については、「シークレットのアクセス制御」を参照してください。

Databricks でサポートされているシークレットのスコープを作成したら、シークレットを追加できます。

シークレットのスコープを一覧表示する

CLI を使用してワークスペースの既存のスコープを一覧表示するには、次のようにします。

databricks secrets list-scopes

Secrets API のシークレットの一覧表示操作を使用して、既存のスコープを一覧表示することもできます。

シークレットのスコープを削除する

シークレットのスコープを削除すると、スコープに適用されているすべてのシークレットと ACL が削除されます。 CLI を使用してスコープを削除するには、次のようにします。

databricks secrets delete-scope --scope <scope-name>

Secret API の シークレットのスコープの削除操作を使用して、シークレットのスコープを削除することもできます。