次の方法で共有


Unity カタログ サービスの資格情報を使用して外部クラウド サービスに接続する

この記事では、Unity カタログのサービス資格情報を使用して外部クラウド サービスに接続する方法について説明します。 Unity Catalog のサービス資格情報オブジェクトは、ユーザーが Azure Databricks から接続する必要がある外部クラウド サービスへのアクセスを提供する長期的なクラウド資格情報をカプセル化します。

関連項目:

開始する前に

サービス資格情報を使用して外部クラウド サービスに接続するには、次が必要です。

  • Unity Catalog が有効な Azure Databricks ワークスペース。

  • Databricks Runtime 16.2 以降にあるコンピューティング リソース。

    SQL ウェアハウスはサポートされていません。

    サービス資格情報のパブリック プレビュー バージョンは、Databricks Runtime 15.4 LTS 以降で利用できます。Python はサポートされていますが、Scala はサポートされません。

  • クラウド サービスへのアクセスを許可する Unity カタログ メタストアで作成されたサービス資格情報。

  • サービス資格情報またはサービス資格情報の所有権に対する ACCESS 特権。

コードでサービス資格情報を使用する

このセクションでは、ノートブックでサービス資格情報を使用する例を示します。 プレースホルダーの値を置き換えます。 これらの例では、アクセスするクライアント サービスに依存する必要なライブラリのインストールが必ずしも示されるとは限りません。

Python の例: 特定のサービス資格情報を使用するように Azure SDK クライアントを構成する

from azure.keyvault.secrets import SecretClient # example Azure SDK client

credential = dbutils.credentials.getServiceCredentialsProvider('your-service-credential')
vault_url = "https://your-keyvault-name.vault.azure.net/"
client = SecretClient(vault_url=vault_url, credential=credential)

Scala の例 : 特定のサービス資格情報を使用するように Azure SDK クライアントを構成する

import com.azure.security.keyvault.secrets.{SecretClient, SecretClientBuilder}

// Get credentials from dbutils
val credential = dbutils.credentials.getServiceCredentialsProvider("your-service-credential")

// URL of the Key Vault
val vaultUrl = "https://your-keyvault-name.vault.azure.net/"

// Create the SecretClient
val client: SecretClient = new SecretClientBuilder()
  .vaultUrl(vaultUrl)
  .credential(credential)
  .buildClient()

コンピューティング リソースの既定のサービス資格情報を指定する

必要に応じて、環境変数を設定することで、汎用またはジョブコンピューティング クラスターの既定のサービス資格情報を指定できます。 既定では、認証が指定されていない場合、SDK はそのサービス資格情報を使用します。 ユーザーは、外部クラウド サービスに接続するために、そのサービス資格情報に対する ACCESS を引き続き必要とします。 Databricks では、コード内のサービス資格情報に名前を付けるよりもコードの移植性が低下するため、この方法は推奨されません。

Note

サーバーレス コンピューティングと SQL ウェアハウスは環境変数をサポートしていないため、既定のサービス資格情報はサポートされません。

  1. クラスターの編集ページを開きます。

    Manage コンピューティングを参照してください。

  2. ページの下部にある [ Advanced options をクリックし、[ Spark ] タブに移動します。

  3. を置き換えて、<your-service-credential>に次のエントリを追加します。

    DATABRICKS_DEFAULT_SERVICE_CREDENTIAL_NAME=<your-service-credential>

次のコード サンプルでは、サービス資格情報を指定しません。 代わりに、DATABRICKS_DEFAULT_SERVICE_CREDENTIAL_NAME 環境変数で指定されたサービス資格情報を使用します。

パイソン

既定のサービス資格情報を使用している場合は、引数として資格情報を指定する必要はありません。

from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient

vault_url = "https://your-keyvault-name.vault.azure.net/"
client = SecretClient(vault_url=vault_url, credential=credential)

これを、Python の例と比較します。特定のサービス資格情報を使用するように Azure SDK クライアントを構成します。この場合、DefaultAzureCredential はインポートされず、資格情報の仕様が追加されます。

credential = dbutils.credentials.getServiceCredentialsProvider('your-service-credential')

Scala

Scala の場合、サービス資格情報の名前を nullに置き換えます。

val azureCredentials = dbutils.credentials.getServiceCredentialsProvider(null).asInstanceOf[TokenCredential]