建立和管理 Delta Sharing 平台的資料接收者(Databricks-to-Databricks 共用)
本文說明如何在 Delta 共用中建立和管理收件者,當這些收件者位於已啟用 Unity 目錄的 Databricks 工作區時。
收件者是具名物件,代表真實世界中取用共用數據的使用者或使用者群組的身分識別。 您建立收件者的方式會根據收件者是否能夠存取針對 Unity 目錄啟用的 Databricks 工作區而有所不同:
- 對於擁有啟用 Unity Catalog 的 Databricks 工作區存取權的收件者,您可以透過 Databricks 全面管理的安全連線建立收件者物件。 此共享模式稱為 Databricks-to-Databricks 共享,並記載於本文中。
- 對於沒有存取啟用了 Unity Catalog 的 Databricks 工作區的收件者,您必須使用 開放共用,並透過您管理的基於令牌的驗證(如持記權杖或 OAuth 聯邦)來建立安全連線。 如需建立開放共用收件者的詳細資訊,請參閱 使用 Open ID Connect (OIDC) 聯合體系來啟用對 Delta Sharing 共用的驗證 和 使用持有者權杖建立非 Databricks 使用者的收件者物件。
如需了解這兩種共用模式以及選擇時機的更多資訊,請參閱 公開共用與 Databricks 對 Databricks 共用比較。
需求
若要建立收件者:
- 您必須是中繼存放區管理員,或擁有
CREATE_RECIPIENT
您要共享數據的 Unity 目錄中繼存放區的許可權。 - 您必須使用附加有 Unity Catalog 中繼存放區的 Azure Databricks 工作區來創建收件者。
- 如果您使用 Databricks 筆記本來建立收件者,您的計算必須使用 Databricks Runtime 11.3 LTS 或更新版本,以及標準或專用存取模式(先前共用和單一使用者存取模式)。
如需其他收件者管理作業(例如檢視、刪除、更新和授與收件者共用存取權),請參閱本文作業特定章節中列出的許可權需求。
為擁有 Databricks 存取權的使用者建立收件者物件(Databricks 與 Databricks 之間的共用)
如果您的數據收件者可以存取已為 Unity Catalog 啟用的 Databricks 工作區,您可以建立具有 DATABRICKS
驗證類型的收件者物件。
驗證類型的 DATABRICKS
收件者物件代表特定 Unity 目錄中繼存放區上的數據收件者,該物件定義是由 中繼存放區的雲端、區域和 UUID 所組成的共用識別符 字串所識別。 只有該中繼存放區可以存取與這個收件者共享的數據。
步驟 1:要求收件者的共享標識符
請求收件者使用者將工作區中附加之 Unity Catalog 中繼存放區的共用標識碼寄給您,以便收件者使用者或使用者群組使用共用數據進行工作。
共用識別碼是一個字串,其中包含中繼存放區的雲端、區域和 UUID(中繼存放區的唯一標識符),格式為 <cloud>:<region>:<uuid>
。
例如,在下列螢幕快照中,完整的共用識別符字串為 aws:us-west-2:19a84bee-54bc-43a2-87de-023d0ec16016
。
收件者可以使用目錄總管、Databricks Unity Catalog CLI,或者在 Databricks Notebook 或 Databricks SQL 查詢中使用預設的 SQL 函式 CURRENT_METASTORE
,來在他們想要使用的工作區中運行 Unity-Catalog 支援的計算,從而找到標識符。
目錄瀏覽器
若要使用目錄總管取得共享識別碼:
在 Azure Databricks 工作區中,按一下
[目錄]。
在目錄窗格頂端,按一下齒輪圖示,然後選取 [Delta Sharing]。
或者,從快速存取頁面,按一下Delta Sharing>按鈕。
在 [與我分享] 分頁上,按一下右上角的 Databricks 共用組織名稱,然後選擇 [複製共用識別碼]。
SQL
在筆記本或 Databricks SQL 查詢編輯器中執行下列命令:
SELECT CURRENT_METASTORE();
CLI (命令列介面)
使用 Databricks CLI 執行下列命令。 共用標識碼會以 global_metastore_id
傳回。
databricks metastores summary
您可以通過傳送您聯絡人的此步驟中的信息來協助收件者,或將他們引導到Databricks-to-Databricks 模型中的存取方式。
步驟 2:建立收件者
若要建立 Databricks 到 Databricks 共用的收件者,您可以使用目錄總管、Databricks Unity 目錄的 CLI,或在 Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中使用 CREATE RECIPIENT
SQL 命令。
所需許可權:中繼存放區管理員或在您要共用資料的 Unity 目錄中繼存放區中擁有 CREATE_RECIPIENT
許可權的使用者。
目錄瀏覽器
在 Azure Databricks 工作區中,按一下
[目錄]。
在 [目錄] 窗格頂端,按一下
gear icon,然後選取 [Delta Sharing]。
或者,從 [快速存取] 頁面,按一下 [Delta Sharing >] 按鈕。
在 由我共用 標籤上,按一下 新增收件者。
輸入 收件者名稱。
針對 [收件者類型],選取 [Databricks]。
輸入收件者的 共用識別碼。
使用格式
<cloud>:<region>:<uuid>
的整個共用識別符字串。 例如:aws:us-west-2:19a84bee-54bc-43a2-87de-023d0ec16016
。(選擇性)輸入批註。
按一下 [建立]。
(選擇性)建立自定義 收件者屬性。
在收件者 概觀 索引標籤上,點擊
位於 [收件者屬性] 旁的 編輯圖示。 然後新增屬性名稱 (鍵) 和 值。 如需詳細資訊,請參閱 管理收件者屬性。
SQL
在筆記本或 Databricks SQL 查詢編輯器中執行下列命令:
CREATE RECIPIENT [IF NOT EXISTS] <recipient-name>
USING ID '<sharing-identifier>'
[COMMENT "<comment>"];
使用格式 <cloud>:<region>:<uuid>
的整個共用識別符字串。 例如: aws:eu-west-1:g0c979c8-3e68-4cdf-94af-d05c120ed1ef
。
您也可以為收件者新增自訂屬性。 如需詳細資訊,請參閱 管理收件者屬性。
CLI
使用 Databricks CLI 執行下列命令。 取代預留位置值:
-
<recipient-name>
:收件者的名稱。 -
<sharing-identifier>
:整個共用識別符字串的格式為<cloud>:<region>:<uuid>
。 例如:aws:eu-west-1:g0c979c8-3e68-4cdf-94af-d05c120ed1ef
。 -
<authentication-type>
:當針對<sharing-identifier>
提供格式<cloud>:<region>:<uuid>
的共享識別符字串時,將DATABRICKS
設定為<cloud>:<region>:<uuid>
。
databricks recipients create <recipient-name> <authentication-type> --sharing-code <sharing-identifier>
您也可以為收件者新增自訂屬性。 如需詳細資訊,請參閱 管理收件者屬性。
收件者是由 DATABRICKS
使用 authentication_type
建立的。
將共用的存取權授與收件者
建立收件者並 建立共享之後,您可以將這些共用的存取權授與收件者。
若要授與收件者的共用存取權,您可以使用目錄總管、Databricks Unity 目錄 CLI,或 GRANT ON SHARE
Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中的 SQL 命令。
所需權限:下列其中一個:
- 中繼存放區管理員。
- 共用以及收件者物件的委派權限或所有權 ((
USE SHARE
+SET SHARE PERMISSION
) 或共用擁有者) 和 (USE RECIPIENT
或收件者擁有者)。
如需指示,請參閱管理對 Delta Sharing 數據共用的存取權(適用於提供者)。
檢視收件者
若要檢視收件者清單,您可以使用目錄總管、Databricks Unity 目錄 CLI,或 SHOW RECIPIENTS
Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中的 SQL 命令。
需要許可權:您必須是中繼存放區管理員,或具有 USE RECIPIENT
檢視中繼存放區中所有收件者的許可權。 其他使用者只能存取他們管理的收件者。
目錄瀏覽器
在 Azure Databricks 工作區中,按一下
[目錄]。
在 [目錄] 窗格頂端,按一下
,然後選取 [Delta Sharing]。
或者,從 [快速存取] 頁面中,按一下 [Delta Sharing >] 按鈕。
在 由我共用 標籤上,按一下 收件者。
SQL
在筆記本或 Databricks SQL 查詢編輯器中執行下列命令。 可以選擇將 <pattern>
替換為 LIKE
述詞。
SHOW RECIPIENTS [LIKE <pattern>];
CLI
使用 Databricks CLI 執行下列命令。
databricks recipients list
檢視收件者詳細數據
若要檢視收件者的詳細數據,您可以使用目錄總管、Databricks Unity 目錄 CLI,或 DESCRIBE RECIPIENT
Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中的 SQL 命令。
需要的許可權:Metastore 管理員、具有 USE RECIPIENT
許可權的使用者或收件者對象的擁有者。
詳細資料包括:
- 收件者的建立者、建立時間戳、批注和驗證類型(
TOKEN
或DATABRICKS
)。 - 如果收件者使用開啟共用:令牌有效期限、啟用連結、啟用狀態(是否已下載憑證),以及已指派的IP位址存取清單。
- 如果收件者使用 Databricks 對 Databricks 共用:收件者 Unity 目錄中繼存放區的雲端、區域和中繼存放區標識碼,以及啟用狀態。
- 收件者屬性,包括自定義屬性。 請參閱 管理收件者屬性。
目錄瀏覽器
在 Azure Databricks 工作區中,按一下
[目錄]。
在 [目錄] 窗格頂端,按一下 [齒輪圖示],然後選取 [Delta Sharing]。
或者,從 [快速存取] 頁面,按一下 [Delta Sharing >] 按鈕。
在 [ 由我 共用] 索引標籤上,按兩下 [ 收件者],然後選取收件者。
SQL
在筆記本或 Databricks SQL 查詢編輯器中執行下列命令。
DESCRIBE RECIPIENT <recipient-name>;
指令列界面(CLI)
使用 Databricks CLI 執行下列命令。
databricks recipients get <recipient-name>
檢視收件者的共享許可權
若要檢視收件者已獲授與存取權的共用清單,您可以使用目錄總管、Databricks CLI 或 SHOW GRANTS TO RECIPIENT
Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中的 SQL 命令。
所需的許可:中繼存放區管理員、具有 USE RECIPIENT
許可權的使用者或接收對象的擁有者。
目錄瀏覽器
在 Azure Databricks 工作區中,按一下
[目錄]。
在目錄窗格頂端,按一下
,然後選取Delta Sharing。
或者,從 [快速存取] 頁面,按一下 Delta Sharing > 按鈕。
在 [ 由我 共用] 索引標籤上,按兩下 [ 收件者],然後選取收件者。
移至 [ 共用] 索引標籤,以檢視與收件者共用的共享清單。
SQL
在筆記本或 Databricks SQL 查詢編輯器中執行下列命令。
SHOW GRANTS TO RECIPIENT <recipient-name>;
命令列介面 (CLI)
使用 Databricks CLI 執行下列命令。
databricks recipients share-permissions <recipient-name>
更新收件者
若要更新收件者,您可以使用目錄總管、Databricks Unity 目錄 CLI 或 ALTER RECIPIENT
Azure Databricks Notebook 或 Databricks SQL 查詢編輯器中的 SQL 命令。
您可以更新的屬性包括收件者名稱、擁有者、批注和自定義屬性。
需要許可權:您必須是接收對象的中繼資料存儲管理員或所有者,才能更新所有者。 您必須是中繼存放區管理員(或擁有 CREATE_RECIPIENT
權限的使用者),並且是擁有者,才能更新名稱。 您必須是擁有者,才能更新批注或自定義屬性。
目錄瀏覽器
在 Azure Databricks 工作區中,按一下
[目錄]。
在 [目錄] 窗格頂端,按一下 [齒輪圖示],然後選取 [Delta Sharing]。
或者,從 快速存取 頁面,按一下 Delta Sharing 按鈕。
在 [ 由我 共用] 索引標籤上,按兩下 [ 收件者],然後選取收件者。
在收件者詳細資料頁面上:
SQL
在筆記本或 Databricks SQL 查詢編輯器中執行下列一或多個命令。
ALTER RECIPIENT <recipient-name> RENAME TO <new-recipient-name>;
ALTER RECIPIENT <recipient-name> OWNER TO <new-owner>;
COMMENT ON RECIPIENT <recipient-name> IS "<new-comment>";
ALTER RECIPIENT <recipient-name> SET PROPERTIES ( <property-key> = property_value [, ...] )
ALTER RECIPIENT <recipient-name> UNSET PROPERTIES ( <property-key> [, ...] )
如需屬性的詳細資訊,請參閱 管理收件者屬性。
命令行界面 (CLI)
建立 JSON 檔案,其中包含收件者名稱、批注、擁有者、IP 存取清單或自定義屬性的更新。
{
"name": "new-recipient-name",
"owner": "someone-else@example.com",
"comment": "something new",
"ip_access_list": {
"allowed_ip_addresses": ["8.8.8.8", "8.8.8.4/10"]
},
"property": {
"country": "us",
"id": "001"
}
}
然後使用 Databricks CLI 執行下列命令。
<recipient-name>
取代為目前的收件者名稱,並以 JSON 檔案的檔案名稱取代 update-recipient-settings.json
。
databricks recipients update --json-file update-recipient-settings.json
如需屬性的詳細資訊,請參閱 管理收件者屬性。
(選擇性)使用存取清單限制收件者存取
當您設定收件者物件時,您可以限制收件者對一組受限IP位址的存取。 參考使用 IP 存取清單限制 Delta 分享接收者的存取權(公開分享)。
管理收件者屬性
收件者物件包含預先定義的屬性,可用來精簡數據共享存取。 例如,您可以使用它們來執行下列動作:
- 與不同的收件者共用不同的表分區,讓您能夠在多個收件者間共享相同資源,同時維持數據之間的界限。
- 根據收件者屬性,共用動態檢視,以限制收件者存取數據列或數據行層級的數據表數據。
您也可以建立自訂屬性。
預先定義的屬性開頭為 databricks.
,並包含下列內容:
-
databricks.accountId
:數據收件者所屬的 Azure Databricks 帳戶(僅限 Databricks-to-Databricks 共用)。 -
databricks.metastoreId
:資料接收者隸屬於的 Unity Catalog 中繼存放區(僅限 Databricks-to-Databricks 共用)。 -
databricks.name
:數據收件者的名稱。
自訂屬性可能具有的價值可以包括,例如 country
。 例如,如果您將自定義屬性 'country' = 'us'
附加至收件者,您可以依國家/地區分割數據表數據,並且只與已指派該屬性的收件者共用具有美國數據的數據列。 您也可以共用動態檢視,以根據收件者屬性限制數據列或數據行存取。 如需更詳細的範例,請參閱 使用收件者屬性執行數據分割篩選 和 將動態檢視新增至共用以篩選數據列和數據行。
需求
Databricks Runtime 12.2 和更新版本支援收件者屬性。
建立或更新收件者時新增屬性
您可以在建立收件者或更新現有收件者時新增屬性。 您可以在 Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中使用目錄總管、Databricks Unity 目錄 CLI 或 SQL 命令。
需要的許可權:具有 Unity Catalog 中繼存放區的使用權限的中繼存放區管理員或使用者。
目錄瀏覽器
當您 使用目錄總管建立 或 更新 收件者時,請執行下列動作來新增或更新自定義屬性:
移至 [收件者詳細數據] 頁面。
如果您要建立新的收件者,請在按兩下 [建立] 之後,登入此頁面。 如果您要更新現有的收件者,請按下
齒輪圖示 > Delta Sharing > 我分享的 > 收件者,然後選取收件者以移至此頁面。
按兩下 [ 編輯屬性 > + 新增屬性]。
輸入屬性名稱(鍵)和值。
例如,如果您想要依國家/地區篩選共享數據,並只與這個收件者共用美國數據,您可以建立名為 「country」 且值為 「US」 的索引鍵。
按一下 [儲存]。
SQL
若要在建立收件者時新增自定義屬性,請在筆記本或 Databricks SQL 查詢編輯器中執行下列命令:
CREATE RECIPIENT [IF NOT EXISTS] <recipient-name>
[USING ID '<sharing-identifier>'] /* Skip this if you are using open sharing */
[COMMENT "<comment>"]
PROPERTIES ( '<property-key>' = '<property-value>' [, ...] );
<property-key>
可以是字串常值或標識碼。
<property-value>
必須是字串常值。
例如:
CREATE RECIPIENT acme PROPERTIES ('country' = 'us', 'partner_id' = '001');
若要新增、編輯或刪除現有收件者的自訂屬性,請執行下列其中一項:
ALTER RECIPIENT <recipient-name> SET PROPERTIES ( '<property-key>' = '<property-value>' [, ...] );
ALTER RECIPIENT <recipient-name> UNSET PROPERTIES ( '<property-key>' );
CLI
若要在建立收件者時新增自定義屬性,請使用 Databricks CLI 執行下列命令。 替換預留值:
-
<recipient-name>
:收件者的名稱。 -
<property-key>
可以是字串常值或標識碼。 -
<property-value>
必須是字串常值。
databricks recipients create \
--json='{
"name": "<recipient-name>",
"properties_kvpairs": {
"properties": {
"<property-key>": "<property-value>",
}
}
}'
例如:
databricks recipients create \
--json='{
"name": "<recipient-name>",
"properties_kvpairs": {
"properties": {
"country": "us",
"partner_id":"001"
}
}
}'
若要新增或編輯現有收件者的自訂屬性,請使用 update
,而不是 create
:
databricks recipients update \
--json='{
"name": "<recipient-name>",
"properties_kvpairs": {
"properties": {
"country": "us",
"partner_id":"001"
}
}
}'
檢視收件者屬性
若要檢視收件者屬性,請遵循檢視收件者詳細數據中的指示。
刪除收件者
若要刪除收件者,您可以使用目錄總管、Databricks Unity 目錄 CLI 或 DROP RECIPIENT
Azure Databricks Notebook 或 Databricks SQL 查詢編輯器中的 SQL 命令。 您必須是收件者對象擁有者,才能刪除收件者。
當您刪除收件者時,收件者所代表的使用者就無法再存取共享數據。 收件者在公開共用情境中使用的令牌已失效。
所需權限:收件者物件擁有者。
目錄瀏覽器
在 Azure Databricks 工作區中,按一下
[目錄]。
在 目錄 窗格頂端,按一下
,然後選取 Delta Sharing。
或者,從快速存取頁面中,按一下Delta Sharing>按鈕。
在 [ 由我 共用] 索引標籤上,按兩下 [ 收件者],然後選取收件者。
在 [ 收件者] 索引 標籤上,尋找並選取收件者。
按兩下 kebab 選單,然後選取 [刪除]。
在確認對話框中,按兩下 [ 刪除]。
SQL
在筆記本或 Databricks SQL 查詢編輯器中執行下列命令。
DROP RECIPIENT [IF EXISTS] <recipient-name>;
命令列介面 (CLI)
使用 Databricks CLI 執行下列命令。
databricks recipients delete <recipient-name>