管理管線的身分識別、權限和特權

身份、權限與權限控制誰能運行、管理及查詢管線及其產生的資料。

Databricks 建議針對所有新的管線使用 Unity 目錄。 根據預設,由設定 Unity 目錄的管線所建立的具體化檢視和串流資料表只能由管線擁有者查詢。 請參閱 使用 Unity 目錄搭配管線。

如果您的管線會將資料集發佈到舊版 Hive 中繼儲存庫,請參閱 搭配舊版 Hive 中繼儲存庫使用 Lakeflow 管線。

如需身分識別組態的一般最佳實務,請參閱身分識別最佳實務。

管線更新使用什麼身分識別?

管線會利用 run-as 使用者的身份來處理更新。 預設情況下,當代使用者是管線建立者,但你可以將其改成其他使用者、服務主體或帳號群組。 參見 設定 run-as 使用者。

若要將管線作為群組執行,請參見 「將 run-as 身份設定為群組」。

Databricks 建議將 run-as 使用者設為服務主體,這樣管線更新就不會與個別使用者的帳戶綁定。 請參閱 服務主體。

僅授與該服務主體管線所需的 Unity Catalog 權限,而非廣泛的帳戶層級存取權限。 例如,在目標目錄上授予 USE CATALOG 權限,在輸出綱要上授予 USE SCHEMA 和適當的 SELECT 權限(CREATE 或 CREATE MATERIALIZED VIEW),並在其來源上授予 CREATE TABLE。 關於發佈至 Unity 目錄所需的完整權限,請參見 需求。

誰可以執行管線更新?

管線更新可以由任何具有 CAN RUN、CAN MANAGE 或 IS OWNER 權限的使用者或服務主體執行。

誰可以查看管線及其輸出?

要開啟管線並查看其詳細資料,使用者至少需要取得 CAN VIEW 管線權限。 有關完整的管線權限等級及各權限所賦予的能力,請參見 Lakeflow 管線 ACL。

若要檢視作為串流資料表或具體化檢視後端的管線,非管理員使用者除了必須具備該管線的權限外,還必須具有該串流資料表或具體化檢視的 REFRESH 權限。 若無該 REFRESH 權限,管線網址顯示 管線不可用。

設定管線權限

您必須擁有 CAN MANAGE 或 IS OWNER 的管線許可權,才能管理許可權。 管線會使用存取控制清單 (ACL) 來控制權限。 完整權限清單及其能力,請參見 Lakeflow 管線 ACL。

  1. 在側邊欄中,按一下 Jobs & Pipelines。
  2. 選取管線的 名稱 。
  3. 按一下 [分享]。 [ 權限設定 ] 對話方塊隨即顯示。
  4. 按一下 [選取使用者、群組或服務主體...] ,然後選取使用者、群組或服務主體。
  5. 從許可權下拉功能表中選取許可權。
  6. 按下 新增。
  7. 點選 [儲存]。

更換管線擁有者

預設情況下,管線擁有者同時也是管線更新執行時所使用的 run-as 使用者。 更改擁有者會改變未來更新時使用的身份。

如果你想在不更改擁有者的情況下變更管線更新執行時所使用的身分,請改為設定 run-as 使用者。 參見 設定 run-as 使用者。

要更改管線的擁有者,你必須同時是元儲存管理員和工作空間管理員。用 UI 或 REST API 更改擁有者。

使用使用者介面

  1. 在側邊欄中,按一下 Jobs & Pipelines。
  2. 選擇管線 名稱 。
  3. 按一下 [分享]。 [ 權限設定 ] 對話方塊隨即顯示。
  4. 清除現有擁有者,然後選擇新的擁有者。 擁有者可以是使用者或服務主體。 Databricks 建議使用服務主體。 請參閱 服務主體。
  5. 點選 [儲存]。

使用 REST API

如果使用者控制權在使用者介面中不可用,例如某些內部管理管線,請透過 設定管線權限 的 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)隔離在明確命名的結構中的特定欄位或資料表,讓存取權限授權和稽核更容易推理。