パイプラインの ID、アクセス許可、および特権を管理する

ID、アクセス許可、および特権は、パイプラインと生成されるデータを実行、管理、クエリできるユーザーを制御します。

Databricks では、すべての新しいパイプラインに Unity カタログを使用することをお勧めします。 既定では、Unity Catalog で構成されたパイプラインによって作成された具体化されたビューとストリーミング テーブルは、パイプライン所有者のみがクエリを実行できます。 「パイプラインで Unity カタログを使用する」を参照してください。

パイプラインでデータセットを従来の Hive メタストアに発行する場合は、「従来の Hive メタストアで Lakeflow パイプラインを使用する」を参照してください。

ID 構成に関する一般的なベスト プラクティスについては、「 ID のベスト プラクティス」を参照してください。

パイプラインの更新に使用される ID は何ですか?

パイプラインは、 実行 ユーザーの ID を使用して更新を処理します。 既定では、実行ユーザーはパイプライン作成者ですが、別のユーザーまたはサービス プリンシパルに変更できます。 「 実行ユーザーの設定」を参照してください。

Databricks では、パイプラインの更新が個々のユーザーのアカウントに関連付けられないように、実行ユーザーをサービス プリンシパルに設定することをお勧めします。 サービス プリンシパルを参照してください。

そのサービスプリンシパルに、広範なアカウントレベルのアクセスではなく、パイプラインのニーズを特権とするUnity Catalogのみを付与してください。 例えば、ターゲットカタログには USE CATALOG 、出力スキーマには USE SCHEMA および適切な CREATE 権限(CREATE MATERIALIZED VIEW または CREATE TABLE)、ソースには SELECT を付与します。 Unityカタログへの公開に必要な完全な権限については、「 要件」を参照してください。

誰がパイプライン更新を実行できますか?

パイプラインの更新は、CAN RUN、CAN MANAGE、または IS OWNER アクセス許可を持つ任意のユーザーまたはサービス プリンシパルによって実行できます。

誰がパイプラインとその出力を表示できますか?

パイプラインを開いて詳細を表示するには、ユーザーには少なくともパイプラインに対する CAN VIEW アクセス許可が必要です。 パイプラインのアクセス許可レベルの完全な一覧と、それぞれが付与する機能については、 Lakeflow パイプラインの ACL に関するページを参照してください。

ストリーミング テーブルまたは具体化されたビューをバックアップするパイプラインを表示するには、管理者以外のユーザーには、パイプラインに対するアクセス許可に加えて、そのストリーミング テーブルまたは具体化されたビューに対する REFRESH 特権も必要です。 REFRESH特権がないと、パイプライン URL にパイプラインが使用できないと表示されます。

パイプラインのアクセス許可を構成する

アクセス許可を管理するには、パイプラインに対する CAN MANAGE または IS OWNER アクセス許可が必要です。 パイプラインでは、アクセス制御リスト (ACL) を使用してアクセス許可を制御します。 アクセス許可とその機能の完全な一覧については、 Lakeflow パイプラインの ACL に関するページを参照してください。

  1. サイドバーで、[ ジョブとパイプライン] をクリックします。
  2. パイプラインの 名前 を選択します。
  3. [共有] をクリックします。 [ アクセス許可の設定] ダイアログが表示されます。
  4. [ ユーザー、グループ、またはサービス プリンシパルの選択...] をクリックし、ユーザー、グループ、またはサービス プリンシパルを選択します。
  5. [アクセス許可] ドロップダウン メニューからアクセス許可を選択します。
  6. 追加をクリックします。
  7. [保存] をクリックします。

パイプラインの所有者を変更する

既定では、パイプラインの所有者は、パイプラインの更新が実行される実行ユーザーでもあります。 所有者を変更すると、今後の更新に使用される ID が変更されます。

パイプラインの更新が所有者を変更せずに実行される ID を変更する場合は、代わりに実行ユーザーを設定します。 「 実行ユーザーの設定」を参照してください。

パイプラインの所有者を変更するには、メタストア管理者とワークスペース管理者の両方である必要があります。UI または REST API を使用して所有者を変更します。

UI を使用する

  1. サイドバーで、[ ジョブとパイプライン] をクリックします。
  2. パイプラインの 名前 を選択します。
  3. [共有] をクリックします。 [ アクセス許可の設定] ダイアログが表示されます。
  4. 現在の所有者をクリアし、新しい所有者を選択します。 所有者には、ユーザーまたはサービス プリンシパルを指定できます。 Databricks はサービス プリンシパルを推奨しています。 サービス プリンシパルを参照してください。
  5. [保存] をクリックします。

REST API を使用する

一部の内部管理パイプラインなど、UI で所有者コントロールが使用できない場合は、 パイプラインのアクセス許可の設定 REST API 操作で所有者を変更します。 user_name アクセス許可レベルで、新しい所有者の service_principal_name (または サービス プリンシパルの場合は IS_OWNER) を指定します。

{
  "access_control_list": [
    {
      "user_name": "new.owner@example.com",
      "permission_level": "IS_OWNER"
    }
  ]
}

メタストア管理者でもありワークスペース管理者でもあるユーザーがいない場合

組織内の誰もメタストア管理者とワークスペース管理者の両方でない場合は、Databricks の担当者に連絡してパイプラインの所有者を変更してください。

管理者以外のユーザーが Unity カタログ対応パイプラインからドライバー ログを表示できるようにする

既定では、Unity カタログ対応パイプラインを実行するクラスターのドライバー ログを表示できるのは、パイプライン所有者とワークスペース管理者だけです。 パイプライン設定の オブジェクトに次の Spark 構成パラメーターを追加することでconfigurationを持つ任意のユーザーのドライバー ログへのアクセスを有効にすることができます。

{
  "configuration": {
    "spark.databricks.acl.needAdminPermissionToViewLogs": "false"
  }
}

シークレット スコープ内の資格情報を参照

APIキー、データベースのパスワード、トークンをパイプラインのソースコードにハードコードしてはいけません。 それらを秘密のスコープに保存し、実行時に参照します:

api_token = dbutils.secrets.get(scope="orders-pipeline-secrets", key="external_api_token")

Azure Databricksは、ノートブックやログ出力に印刷されるはずの秘密値([REDACTED])を自動的に編集し、秘密のACLでスコープを読む人を制限できます。 「シークレットの管理」を参照してください。

パイプライン出力における機密データを保護

個人識別情報(PII)を含む列については、パイプラインコード内でカスタムマスキングロジックを書くのではなく、パイプライン生成するテーブルにUnity Catalogガバナンスを適用してください。

  • カラムマスクは 、クエリユーザーのグループメンバーシップに基づいてカラムの値を編集またはハッシュ化します。
  • 行フィルターは ユーザーが閲覧できる行を制限します。

Unity Catalogテーブルにこれらのコントロールを適用することで、ダッシュボード、アドホッククエリ、下流ジョブなど、パイプライン内だけでなく、テーブルのすべての利用者に対して個人を特定できる情報を一貫して保護できます。 「行フィルターと列マスク」を参照してください。 さらに、PIIは明確な名前のスキーマ内の特定の列やテーブルに隔離し、アクセス許可や監査の判断がより簡単になります。