統一目錄API 2.0規範
目的和範圍
本文給出了一個緊湊的統一規範目錄(UC) 2.0 API,關注和端點的消息構成加州大學的公共API。三角洲共享API也在範圍內。
以下領域不本文檔:
- Databricks-internal api(例如,相關數據沿襲或信息模式)
- 枚舉可能返回的錯誤代碼和描述每個API端點
術語
用戶類型
所有用戶訪問統一目錄api必須帳戶級別用戶。他們還必須被添加到相關數據磚工作區(為了獲得帕特令牌用於訪問加州大學API服務器)。
Metastore管理員
Metastore管理員可以管理所有可獲得的對象在一個Metastore的特權,比如誰可以創建目錄或查詢一個表。給定Metastore Metastore管理員的用戶:
請注意,Metastore管理可能是也可能不是一個工作區管理(即對於一個給定的工作空間。作為一個工作區管理並不會自動讓用戶Metastore Admin)。
賬戶管理員
帳戶管理是一個戶頭級別用戶賬戶中的“賬戶所有者”角色配置控製台。創建和更新Metastore隻能由一個帳戶管理。一個帳戶管理員可以指定其他用戶Metastore管理員通過改變Metastore的所有者(使用updateMetastore端點)。
客戶端類型
統一目錄三種類型的API訪問服務器的客戶:
- PE集群:客戶來自集群執行“信任”Permissions -E在執行引擎nforcing過濾數據。這些都是集群安全模式= "用戶隔離”,從而支持SQL。他們的客戶與內部生成令牌驗證,包括unity_catalog: permission_enforcing為了這個目的範圍。PE-restricted API端點返回結果沒有服務器端過濾基於客戶端用戶的權限,等DBR客戶機信任進行過濾。
- 不群:客戶來自DBR集群支持加州大學和沒有n -Permissions -Enforcing。目前,隻有這種類型的DBR集群是安全模式=“單用戶”)。這些客戶機進行身份驗證和一個包含一個內部生成令牌unity_catalog:集群範圍(盡管不是unity_catalog: permission_enforcing範圍)。對於這些客戶,團結目錄的API服務執行訪問控製需求的統一目錄數據治理模型過濾數據和發送結果過濾由客戶機用戶的權限。
- 外部客戶:所有其他客戶不PE集群或不集群。這些“外部”標記的客戶進行身份驗證(例如,帕特從工作區中獲得令牌)而不是內部生成令牌DBR集群。這包括使用databricks-cli的客戶的unity-catalog命令來訪問加州大學API。與集群客戶不一樣,加州大學API端點提供給這些客戶也在服務器端執行訪問控製要求。
API的約定
- 為了簡化管理API消息類型,*信息消息(用於輸入創建*,更新*和刪除*端點)和輸出(從創建*,得到*,列表*和更新*端點)。字段是標有點播/ OPT / IGN標簽來指定是否要求的事情國關,選擇維或IGN為每個操作(或有組織的表列的規範)。
- 所有的名字字段是utf - 8編碼的字符串,最初由用戶和用戶可見。這些對象名稱是由用戶提供的SQL命令(例如,“創建表的東西……”或通過直接訪問加州大學API。
名字由用戶轉換為小寫DBR客戶(之前發送到加州大學API)。同時,輸入名稱(為所有對象類型表列名除外)由加州大學服務器轉換為小寫,在處理這個案子時,通過直接訪問加州大學加州大學創建對象的API。這個轉換為小寫的名字,這個名字處理實際上是不區分大小寫的。即。,if a user creates a table with relative name “FooBar”,它將與現有的表名為“衝突foobar”。
SQL對象引用他們的全名的RESTful API的uri,因為這些名稱是他們必須url編碼utf - 8。例如,請求URI與全名“SomeCAt.SømeSchema表。テーブル”將:
/ api / 2.0 /團結-目錄/表/ SomeC % C3 % 84 t % C3%B8meSch % C3%ABma. E3 % % E3 % 83% 86% 83% E3 % bc % E3 % 83% 96% 83% ab
- 所有主體(用戶和組)引用的用戶/組名稱字符串,而不是用戶id (int64由磚控製飛機的服務在內部使用。在加州大學的API,這意味著用戶引用的郵件地址(例如,“username@examplesemail.com”),團體組名稱(例如,“引用的用戶帳戶”)。
- 時間戳等created_at字段是int64在時代(時間單位為毫秒)。
- 所有storage_root,storage_location(存儲)url字段包含一個路徑與方案前綴,如。
”abfss: / / mycontainer@myacct.dfs.core.windows.net/my/path”,
”s3: / / some-bucket-name /我/路徑”
- API端點中列出紅色的文字目前還沒有實現。
API使用筆記
- 所有操作在目錄範圍內,執行模式和表Metastore目前分配給客戶端用戶的工作區(該工作區從用戶的API認證令牌)。即目前,用戶不能在一個目錄中創建一個模式駐留的Metastore Metastore目前分配給不同用戶的工作空間。
- 沒有子對象列表中*信息結構(例如,SchemaInfo不包括一個字段,其中包含表內模式)的列表。得到的子對象列表需要執行列表*操作子與查詢參數指定父對象類型標識符(例如,<前綴> /表? schema_name = < some_parent_schema_name >)
- 要指定錯誤響應的細節,但錯誤響應身體的一般形式是:
{
“error_code”:“< error_code >”,
“消息”:“<短暫user-readable描述”
}
具體的error_code每個端點所使用的值將在稍後詳細。
常見的數據模型
屬性
的目錄,模式和表對象都有一個屬性場,這是一個不透明的鍵值對列表。這個列表允許未來的擴展或定製的對象的配置。
字段名 |
類型 |
描述 |
屬性 |
地圖(字符串,字符串) |
可擴展的目錄屬性 |
公共api
API端點在本節中是不使用和外部客戶;也就是說,他們是不限於體育客戶。這些API端點執行權限統一目錄對象,以便客戶端用戶隻有他們有權限訪問對象。
這些端點的URI前綴是:
<前綴>=/ api / 2.0 /團結-目錄
Metastore CRUD API
對象模型
DeltaSharingScope
所支持的價值觀的delta_sharing_scope字段(在一個MetastoreInfo)以下字符串:
- “內部”
內部三角洲metastore上啟用共享。這適用於Databricks-managed身份驗證提供者和接受者都是在同樣的帳戶。
- “INTERNAL_AND_EXTERNAL”
內部和外部的三角洲分享metastore上啟用。這允許所有類型的三角洲共享。
MetastoreInfo:
字段名 |
類型 |
創建 |
更新 |
描述 |
的名字 |
字符串 |
要求的事情 |
選擇 |
metastore名稱 |
storage_root |
字符串(url) |
要求的事情 |
犯錯 |
Metastore存儲根路徑。創造,新metastore的ID (UUID)添加到提供storage_root,所以輸出storage_root不一樣的輸入storage_root。 |
default_data_access_config_id (棄用) |
字符串(uuid) |
IGN |
選擇 |
唯一標識符的默認DataAccessConfiguration Metastore創建訪問令牌對象。現在取而代之的是storage_root_credential_id。 |
storage_root_credential_id |
字符串(uuid) |
IGN |
選擇 |
唯一標識符的默認訪問存儲憑證使用storage_root雲存儲領域。 |
老板 |
字符串 |
IGN[1] |
選擇 |
用戶名/ groupname Metastore業主 |
delta_sharing_enabled(棄用) |
bool |
IGN |
選擇 |
δ共享是否支持這個Metastore(默認值:假) |
delta_sharing_scope |
字符串(DeltaSharingScope) |
IGN |
選擇 |
三角洲共享作用域(默認值:內部)。 |
delta_sharing_recipient_token_lifetime_in_seconds |
int32 |
IGN |
選擇 |
一生δ共享令牌在幾秒鍾內(沒有違約;必須指定時delta_sharing_scope被設置為INTERNAL_AND_EXTERNAL)。 |
delta_sharing_organization_name |
字符串 |
IGN |
選擇 |
δ共享實體的組織名稱。名稱將用於Databricks-to-Databricks三角洲共享作為官方名稱。 |
輸出: |
metastore_id |
字符串(uuid) |
IGN |
IGN |
metastore的惟一標識符 |
雲 |
字符串 |
IGN |
IGN |
雲供應商Metastore碎片,如。”aws”、“azure” |
地區 |
字符串 |
IGN |
IGN |
雲的區域Metastore碎片,如。”us-west-2”、“westus” |
global_metastore_id |
字符串 |
IGN |
IGN |
全局唯一metastore ID在雲層和地區。例如,“aws: us-east-1:8dd1e334-c7df-44c9-a359-f86f9aae8919” |
created_at |
int64 |
IGN |
IGN |
metastore創建日期 |
created_by |
字符串 |
IGN |
IGN |
metastore創造者的用戶名 |
updated_at |
int64 |
IGN |
IGN |
metastore最後更新日期 |
updated_by |
字符串 |
IGN |
IGN |
最後修改用戶名的用戶metastore |
DeleteMetastoreOpts:
字段名 |
類型 |
要求嗎? |
描述 |
力 |
bool |
選擇 |
默認值:假。當假指定Metastore非空時,刪除失敗(包含non-deleted目錄DataAccessConfigurations,股票或接受者)。當設置為真正的,刪除指定的Metastore不管其內容。 |
RPC端點
HTTP方法 |
URI |
端點的名字 |
輸入 |
輸出 |
帖子 |
<前綴>/metastores |
createMetastore |
MetastoreInfo (部分) |
MetastoreInfo |
得到 |
<前綴>/metastores |
listMetastores |
沒有一個 |
數組(MetastoreInfo) |
得到 |
<前綴>/metastores/:id |
getMetastore |
沒有一個 |
MetastoreInfo |
補丁 |
<前綴>/metastores/:id |
updateMetastore |
MetastoreInfo (部分) |
MetastoreInfo |
刪除 |
<前綴>/metastores/:id |
deleteMetastore |
DeleteMetastoreOpts |
沒有一個 |
端點行為筆記
授權
所有Metastore管理僅限於CRUD API端點Metastore管理員。
listMetastores輸出
的listMetastores端點並不列出所有Metstores中存在的客戶帳戶。相反,它限製了列表的工作區(取決於客戶的拍牌)可以訪問。有效的,這意味著輸出將是一個空列表(如果沒有分配給Metastore工作區)或者一個列表包含一個Metastore工作區(分配)。
Metastore總結API
的metastore_summary端點為客戶提供了一個簡單的方法來確定metastore_idMetastore指定的工作區推斷從用戶的身份驗證令牌。
對象模型
MetastoreSummaryInfo
字段名 |
類型 |
描述 |
metastore_id |
字符串(uuid) |
metastore的惟一標識符 |
的名字 |
字符串 |
metastore名稱 |
storage_root_credential_id |
字符串(uuid) |
唯一標識符的存儲憑證使用訪問表數據的雲存儲 |
default_data_access_config_id (棄用) |
字符串(uuid) |
DAC的惟一標識符來訪問表數據雲存儲 |
雲 |
字符串 |
雲供應商Metastore碎片,如。”aws”、“azure” |
地區 |
字符串 |
雲的區域Metastore碎片,如。”us-west-2”、“westus” |
global_metastore_id |
字符串 |
全局唯一metastore ID在雲層和地區。例如,“aws: us-east-1:8dd1e334-c7df-44c9-a359-f86f9aae8919” |
RPC端點
HTTP方法 |
URI |
端點的名字 |
輸出 |
得到 |
<前綴>/ metastore_summary |
getMetastoreSummary |
MetastoreSummaryInfo |
Metastore作業API
對象模型
MetastoreAssignment:
字段名 |
類型 |
創建 |
更新 |
刪除 |
描述 |
metastore_id |
字符串(uuid) |
要求的事情 |
選擇 |
要求的事情 |
metastore的惟一標識符 |
default_catalog_name |
字符串 |
要求的事情 |
選擇 |
IGN |
默認的目錄用於此任務 |
RPC端點
HTTP方法 |
URI |
端點的名字 |
輸入 |
輸出 |
把 |
<前綴>/工作/ :workspace_id / metastore |
createMetastoreAssignment |
MetastoreAssignment |
沒有一個 |
補丁 |
<前綴>/工作/ :workspace_id / metastore |
updateMetastoreAssignment |
MetastoreAssignment |
沒有一個 |
刪除 |
<前綴>/工作/ :workspace_id / metastore |
deleteMetastoreAssignment |
MetastoreAssignment |
沒有一個 |
輸入
的workspace_id路徑參數是一個int64號碼,工作空間的唯一標識符。
端點行為筆記
- createMetastoreAssignment
如果一個任務一樣workspace_id已經存在,它將被覆蓋metastore_id和default_catalog_name。
- updateMetastoreAssignment
這個端點可以用來更新metastore_id和/或default_catalog_name對於一個指定的工作區,是否已經分配一個Metastore工作區。
- 沒有清單Metastore UC API端點來閱讀或作業(目前每工作空間)。
授權
的createMetastoreAssignment和deleteMetastoreAssignment端點要求客戶機用戶是一個管理員的賬戶。
的updateMetastoreAssignment端點要求:
- 如果更新metastore_id:客戶端用戶必須一個帳戶管理員
- 否則,客戶端用戶必須工作空間管理員
存儲憑證CRUD API
對象模型
AwsIamRole
字段名 |
類型 |
創建 |
更新 |
描述 |
role_arn |
字符串 |
要求的事情 |
選擇 |
亞馬遜資源名(攻擊)的AWS S3數據訪問我的角色 |
輸出: |
unity_catalog_iam_arn |
字符串 |
IGN |
IGN |
亞馬遜的資源名(攻擊)的AWS用戶由磚我。這是假設的身份AWS我的角色。 |
external_id |
字符串 |
IGN |
IGN |
外部ID用於作用的假設,以防止混淆副問題。 |
AzureServicePrincipal
字段名 |
類型 |
創建 |
更新 |
描述 |
directory_id |
字符串 |
要求的事情 |
選擇 |
相對應的目錄ID Azure Active directory (AAD)租戶的應用程序 |
application_id |
字符串 |
要求的事情 |
選擇 |
應用程序的應用程序ID注冊在引用AAD的房客 |
client_secret |
字符串 |
要求的事情 |
選擇 |
客戶端生成的秘密在廣告上麵的應用程序ID。這個字段是屏蔽輸出。 |
GcpServiceAccountKey
字段名 |
類型 |
創建 |
更新 |
描述 |
電子郵件 |
字符串 |
要求的事情 |
選擇 |
服務的電子郵件帳戶 |
private_key_id |
字符串 |
要求的事情 |
選擇 |
服務帳戶的ID的私鑰 |
private_key |
字符串 |
要求的事情 |
選擇 |
服務帳戶的RSA私鑰。這個字段是屏蔽輸出。 |
DeleteStorageCredentialOpts:
字段名 |
類型 |
要求嗎? |
描述 |
力 |
bool |
選擇 |
默認值:假。當假,刪除失敗當指定存儲憑證依賴外部位置或外部表。當設置為真正的刪除指定的存儲憑證無論其依賴項。 |
StorageCredentialInfo
字段名 |
類型 |
創建 |
更新 |
描述 |
的名字 |
字符串 |
要求的事情 |
選擇 |
的名字存儲憑證(父Metastore)中必須是唯一的 |
評論 |
字符串 |
選擇 |
選擇 |
用戶提供的自由格式的文本 |
老板 |
字符串 |
IGN[2] |
選擇 |
用戶名/ groupname存儲證書的所有者 |
skip_validation |
bool |
選擇 |
選擇 |
指定存儲憑證與指定的配置是否應該測試(用於訪問雲存儲)在對象創建/更新。默認值:假 注意:這是一個隻輸入字段 |
憑證細節-之一: |
aws_iam_role |
AwsIamRole |
要求的事情 |
選擇 |
AWS的憑證細節 |
azure_service_principal |
AzureServicePrincipal |
要求的事情 |
選擇 |
Azure的憑證細節 |
gcp_service_account_key |
GcpServiceAccountKey |
要求的事情 |
選擇 |
GCP的憑證細節 |
輸出: |
id |
字符串(uuid) |
IGN |
IGN |
唯一標識符的存儲憑證 |
metastore_id |
字符串(uuid) |
IGN |
IGN |
父Metastore的惟一標識符 |
created_at |
int64 |
IGN |
IGN |
創建存儲憑證的日期 |
created_by |
字符串 |
IGN |
IGN |
用戶名的存儲憑證創造者 |
updated_at |
int64 |
IGN |
IGN |
最後更新日期存儲憑證 |
updated_by |
字符串 |
IGN |
IGN |
最後更新存儲用戶名的用戶憑據 |
RPC端點
HTTP方法 |
URI |
端點的名字 |
輸入 |
輸出 |
帖子 |
<前綴>/ storage-credentials |
createStorage 憑證 |
StorageCredentialInfo (部分) |
StorageCredentialInfo |
得到 |
<前綴>/ storage-credentials |
listStorage 憑證 |
沒有一個 |
數組(StorageCredentialInfo) |
得到 |
<前綴>/ storage-credentials:名字 |
getStorage 憑證 |
沒有一個 |
StorageCredentialInfo |
補丁 |
<前綴>/ storage-credentials:名字 |
updateStorageCredential |
StorageCredentialInfo (部分) |
StorageCredentialInfo |
刪除 |
<前綴>/ storage-credentials:名字 |
deleteStorageCredential |
DeleteStorageCredentialOpts |
沒有一個 |
端點行為筆記
授權
的createStorageCredential終端用戶要求
- 是一個Metastore管理
- 在Metastore創建存儲憑證特權嗎
的getStorageCredential端點要求的用戶:
- 是一個Metastore管理
- 是存儲證書的所有者
- 有一些特權存儲憑證嗎
的listStorageCredentials端點返回:
- 所有存儲憑證(在當前Metastore),當用戶Metastore admin
- 所有存儲用戶憑證的業主或用戶一些特權
的updateStorageCredential端點需要:
- 用戶存儲證書的所有者
- 用戶是一個Metastore管理,隻有老板字段是改變
的deleteStorageCredential端點要求用戶存儲證書的所有者。
外部位置CRUD API
對象模型
DeleteExternalLocationOpts
字段名 |
類型 |
要求嗎? |
描述 |
力 |
bool |
選擇 |
默認值:假。當假,刪除失敗時指定的外部位置依賴外部表。當設置為真正的刪除指定的外部位置無論其依賴項。 |
ListFilesReq
字段名 |
類型 |
要求嗎? |
描述 |
url |
字符串(url) |
要求的事情 |
使用列表文件路徑的URL |
credential_name |
字符串 |
選擇 |
存儲憑證的名稱用於訪問URL |
max_results |
int32 |
選擇 |
限製返回的結果數 |
FileInfo
字段名 |
類型 |
描述 |
路徑 |
字符串(url) |
路徑存儲對象的URI |
的名字 |
字符串 |
對象的名稱 |
大小 |
int64 |
大小的字節 |
mtime |
int64 |
修改時間,基於unix新紀元 |
is_dir |
bool |
對象是一個目錄(或文件) |
ListFilesResp
字段名 |
類型 |
描述 |
文件 |
數組(FileInfo) |
的列表FileInfo對象,每一個文件/目錄 |
ExternalLocationInfo
字段名 |
類型 |
創建 |
更新 |
描述 |
的名字 |
字符串 |
要求的事情 |
選擇 |
名稱的外部位置(父Metastore)中必須是唯一的 |
評論 |
字符串 |
選擇 |
選擇 |
用戶提供的自由格式的文本 |
老板 |
字符串 |
IGN[3] |
選擇 |
用戶名/ groupname外部位置的所有者 |
url |
字符串(url) |
要求的事情 |
選擇 |
路徑的URL在雲存儲的形式: AWS:“s3: / / bucket-host / [bucket-dir]” Azure:“abfss: / /主機/(路徑)” GCP:“g: / / bucket-host /(路徑)” |
credential_name |
字符串 |
要求的事情 |
選擇 |
存儲憑證的名稱使用這個外部的位置 |
read_only |
bool |
選擇 |
選擇 |
是否外部位置是隻讀的(默認值:假) |
handlder程序(更新): |
力 |
bool |
N /一個 |
選擇 |
力更新即使發生變化url無效的依賴外部表(默認值:假) |
skip_validation |
bool |
N /一個 |
選擇 |
是否跳過存儲憑證驗證在外部位置的更新(默認值:假) |
輸出: |
credential_id (棄用) |
字符串(uuid) |
IGN |
IGN |
外部的惟一標識符的位置 |
metastore_id |
字符串(uuid) |
IGN |
IGN |
父Metastore的惟一標識符 |
created_at |
int64 |
IGN |
IGN |
外部位置創建日期 |
created_by |
字符串 |
IGN |
IGN |
用戶名外部位置的創造者 |
updated_at |
int64 |
IGN |
IGN |
最後更新日期到外部的位置 |
updated_by |
字符串 |
IGN |
IGN |
用戶名的用戶最後更新外部位置 |
RPC端點
HTTP方法 |
URI |
端點的名字 |
輸入 |
輸出 |
帖子 |
<前綴>/ external-locations |
createExternalLocation |
ExternalLocation 信息(部分) |
ExternalLocationInfo |
得到 |
<前綴>/ external-locations |
listExternal 位置 |
沒有一個 |
數組(ExternalLocationInfo) |
得到 |
<前綴>/ external-locations:名字 |
getExternal 位置 |
沒有一個 |
ExternalLocationInfo |
補丁 |
<前綴>/ external-locations:名字 |
updateExternalLocation |
ExternalLocation 信息(部分) |
ExternalLocationInfo |
刪除 |
<前綴>/ external-locations:名字 |
deleteExternalLocation |
DeleteExternal LocationOpts |
沒有一個 |
得到 |
<前綴> /文件 |
listFiles |
ListFilesReq |
ListFilesResp |
端點行為筆記
外部URL位置約束
存儲url外部位置不能與其他外部衝突地點或外部表。具體地說,
- 外部位置的url不能重疊(是一個孩子,父母,或一樣)url另一個外部的位置
- 外部位置的url不能在(或一樣)的孩子url外部表
授權
的createExternalLocation終端用戶要求
- 是一個Metastore管理
- 在Metastore創建外部位置的特權嗎
的getExternalLocation端點要求的用戶:
- 是一個Metastore管理
- 外部位置的主人嗎
- 在外部位置有特權嗎
的listExternalLocations端點返回:
- 所有外部位置(在當前Metastore),當用戶Metastore admin
- 所有外部位置的用戶是業主或用戶一些特權
的updateExternalLocation端點需要:
- 用戶的所有者外部位置
- 用戶是一個Metastore管理,隻有老板字段是改變
的deleteExternalLocation端點需要外部位置的用戶是一個所有者。
目錄CRUD API
對象模型
CatalogInfo
字段名 |
類型 |
創建 |
更新 |
描述 |
的名字 |
字符串 |
要求的事情 |
選擇 |
的名字目錄相對於父metastore |
評論 |
字符串 |
選擇 |
選擇 |
用戶提供的自由格式的文本 |
屬性 |
地圖(字符串,字符串) |
選擇 |
選擇 |
可擴展的目錄屬性 |
老板 |
字符串 |
IGN[4] |
選擇 |
用戶名/ groupname目錄老板 |
provider_name |
字符串 |
選擇 |
IGN |
三角洲共享目錄:δ共享供應商的名稱 |
share_name |
字符串 |
選擇 |
IGN |
三角洲共享目錄:共享下共享供應商的名稱 |
輸出: |
metastore_id |
字符串(uuid) |
IGN |
IGN |
父Metastore的惟一標識符 |
created_at |
int64 |
IGN |
IGN |
日期目錄創建 |
created_by |
字符串 |
IGN |
IGN |
的用戶名目錄創造者 |
updated_at |
int64 |
IGN |
IGN |
最後更新日期目錄 |
updated_by |
字符串 |
IGN |
IGN |
用戶名的用戶最後一次更新目錄 |
RPC端點
HTTP方法 |
URI |
端點的名字 |
輸入 |
輸出 |
帖子 |
<前綴>/目錄 |
createCatalog |
CatalogInfo (部分) |
CatalogInfo |
得到 |
<前綴>/目錄 |
listCatalogs |
沒有一個 |
數組(CatalogInfo) |
得到 |
<前綴>/目錄/:名稱 |
getCatalog |
沒有一個 |
CatalogInfo |
補丁 |
<前綴>/目錄/:名稱 |
updateCatalog |
CatalogInfo (部分) |
CatalogInfo |
刪除 |
<前綴>/目錄/:名稱 |
deleteCatalog |
沒有一個 |
沒有一個 |
端點行為筆記
授權
的createCatalog終端用戶要求
- 是一個Metastore管理
- 在Metastore創建目錄權限嗎
當創建一個增量共享目錄,用戶需要也是一個所有者的提供者。
的getCatalog端點要求的用戶:
- 是一個Metastore管理
- 目錄的所有者
- 有使用特權的目錄
的listCatalogs端點返回:
- 所有的目錄(在當前Metastore),當用戶Metastore admin
- 所有的目錄(在當前Metastore)的用戶是業主或用戶使用特權
一般來說,updateCatalog端點需要:
- 用戶目錄的所有者
- 用戶是一個Metastore管理,隻有老板字段是改變
如果目錄的名字改變,updateCatalog要求用戶目錄的所有者和Metastore管理。
的deleteCatalog端點要求用戶目錄的所有者。
模式CRUD API
對象模型
SchemaInfo
字段名 |
類型 |
創建 |
更新 |
描述 |
的名字 |
字符串 |
要求的事情 |
選擇 |
模式相對於父母的名字目錄 |
catalog_name |
字符串 |
要求的事情 |
IGN |
父母的名字目錄 |
評論 |
字符串 |
選擇 |
選擇 |
用戶提供的自由格式的文本 |
老板 |
字符串 |
IGN[5] |
選擇 |
用戶名/ groupname模式所有者 |
屬性 |
地圖(字符串, 字符串) |
選擇 |
選擇 |
可擴展的模式屬性 |
輸出: |
metastore_id |
字符串(uuid) |
IGN |
IGN |
父Metastore的惟一標識符 |
full_name |
字符串 |
IGN |
IGN |
完全限定名稱的模式為<目錄>。<模式> |
created_at |
int64 |
IGN |
IGN |
模式創建日期 |
created_by |
字符串 |
IGN |
IGN |
用戶名的模式的創造者 |
updated_at |
int64 |
IGN |
IGN |
最後更新日期模式 |
updated_by |
字符串 |
IGN |
IGN |
用戶名的用戶最後更新模式 |
RPC端點
HTTP方法 |
URI |
端點的名字 |
輸入 |
輸出 |
帖子 |
<前綴>/模式 |
createSchema |
SchemaInfo (部分) |
SchemaInfo |
得到 |
<前綴>/模式[?< q_args >] |
listSchemas |
q_args |
數組(SchemaInfo) |
得到 |
<前綴>/ /模式:full_name |
getSchema |
沒有一個 |
SchemaInfo |
補丁 |
<前綴>/ /模式:full_name |
updateSchema |
SchemaInfo (部分) |
SchemaInfo |
刪除 |
<前綴>/ /模式:full_name |
deleteSchema |
沒有一個 |
沒有一個 |
輸入
q_args:
字段名 |
類型 |
要求/ OPT |
描述 |
catalog_name |
字符串 |
要求的事情 |
父母的名字目錄 |
端點行為筆記
授權
所有*模式端點要求用戶訪問父目錄。這意味著用戶
- 是一個Metastore管理
- 父目錄的所有者
- 有使用特權的父目錄
下麵所有的需求除了這個需求訪問父目錄。
的createSchema端點要求用戶
- 是一個Metastore管理
- 有創建特權的父目錄
的getSchema端點要求的用戶:
- 是一個Metastore管理
- 模式的主人嗎
- 有使用的特權模式
的listSchemas端點返回:
- 所有模式(在當前Metastore和父目錄),當用戶Metastore管理員或父目錄的所有者
- 所有模式(在當前Metastore和父目錄)的用戶是業主或用戶使用特權
一般來說,updateSchema端點需要:
- 用戶模式的所有者
- 用戶是一個Metastore管理,隻有老板字段是改變
如果模式的名字改變,updateSchema還要求用戶有在父目錄創建權限(或者是一個Metastore admin)。
的deleteSchema端點需要模式的用戶是一個所有者或所有者的父目錄。
Staging表API
這些API端點用於cta(創建表選擇)或δ表創建的火花需要寫入數據首先然後提交元數據統一Catalog。Staging表僅供DBR集群使用API端點。
對象模型
StagingTableInfo:
字段名 |
類型 |
創建 |
描述 |
的名字 |
字符串 |
要求的事情 |
表的名稱 |
catalog_name |
字符串 |
要求的事情 |
父母的名字目錄 |
schema_name |
字符串 |
要求的事情 |
父模式相對於母公司的名稱目錄 |
輸出: |
id |
字符串(uuid) |
IGN |
分段的惟一標識符表將提升為實際表id |
staging_location |
字符串 |
IGN |
存儲根URL生成的staging表 |
RPC端點
HTTP方法 |
URI |
端點的名字 |
輸入 |
輸出 |
帖子 |
<前綴>/ stagingF-tables |
createStagingTable |
StagingTableInfo (部分) |
StagingTableInfo |
端點行為筆記
授權
createStagingTable端點用戶都要求
- 使用特權的父目錄
- 使用和創建父模式上的特權
表CRUD API
對象模型
TableInfo
字段名 |
類型 |
創建 |
更新 |
描述 |
的名字 |
字符串 |
要求的事情 |
選擇 |
相對於父模式名稱的表 |
catalog_name |
字符串 |
要求的事情 |
IGN |
父母的名字目錄 |
schema_name |
字符串 |
要求的事情 |
IGN |
父模式相對於母公司的名稱目錄 |
table_type |
字符串 |
要求的事情 |
IGN |
區分一個視圖和管理/外部表 |
data_source_format |
字符串 |
要求* |
選擇 |
看到數據源格式規範 |
列 |
數組(ColumnInfo) |
要求的事情 |
選擇 |
序列表列 |
storage_location |
字符串 |
要求* |
要求* |
表數據的URL存儲位置(*為外部表要求。對於管理表,如果路徑需要提供一個臨時表路徑生成通過Sttaging表API,否則應該是空的) |
storage_credential_name |
字符串 |
選擇 |
IGN |
僅供外部表:存儲憑證使用的名稱(通過UpdateTable端點可能不會改變)。 |
view_definition |
字符串 |
請求的視圖 |
選擇 |
SQL文本(用於定義視圖table_type= = "視圖”) |
sql_path |
字符串 |
選擇 |
選擇 |
計劃列表的對象可以引用沒有資格(裁判) |
評論 |
字符串 |
選擇 |
選擇 |
用戶提供的自由格式的文本 |
老板 |
字符串 |
IGN[6] |
選擇 |
用戶名/ groupname表的所有者 |
屬性 |
地圖(字符串,字符串) |
選擇 |
選擇 |
可擴展表屬性 |
輸出: |
metastore_id |
字符串(uuid) |
IGN |
IGN |
父Metastore的惟一標識符 |
full_name |
字符串 |
IGN |
IGN |
完全限定表名稱為<目錄>,<模式>。<表> |
data_access_configuration_id (棄用) |
字符串(uuid) |
IGN |
IGN |
惟一標識符DataAccessConfig使用訪問表數據。
|
created_at |
int64 |
IGN |
IGN |
表創建日期 |
created_by |
字符串 |
IGN |
IGN |
用戶名的創建者 |
updated_at |
int64 |
IGN |
IGN |
最後更新日期表 |
updated_by |
字符串 |
IGN |
IGN |
用戶名的用戶最後更新表 |
要求* =所需外部和管理表
表類型
所支持的價值觀的table_type字段(在一個TableInfo)以下字符串:
列類型名稱
支持type_name字段的值(在ColumnInfo)以下字符串:
- “布爾”
- “字節”(SQL別名:“非常小的整數”)
- “短”(SQL別名:“短整型”)
- “INT”(SQL別名:“整數”)
- “長”(SQL別名:“長整型數字”)
- “浮動”(SQL別名:“真正的”)
- “替身”
- “日期”
- “時間戳”
- “字符串”
- “二元”
- “小數”(SQL別名:“12月”、“數字”)
- “間隔”
- “數組”
- “結構”
- “地圖”
- “字符”
- “零”
數據源格式
在多個外部表支持數據源格式。字符串常量確定這些格式是:
- “δ”
- “CSV”
- “JSON”
- “AVRO”
- “鋪”
- “獸人”
- “文本”
- “UNITY_CATALOG”(表內聯合目錄的信息模式)
- “DELTASHARING”(表共享通過三角洲共享協議)
ColumnInfo
字段名 |
類型 |
創建 |
更新 |
描述 |
的名字 |
字符串 |
要求的事情 |
選擇 |
用戶可見的名字列 |
type_name |
字符串 |
要求的事情 |
選擇 |
(外部)類型的名稱;看到列類型名稱以上 |
type_text |
字符串 |
要求的事情 |
選擇 |
列類型規範(元數據)和SQL文本 |
type_json |
字符串 |
要求的事情 |
選擇 |
列類型規範(元數據)為JSON字符串 |
type_precision |
int32 |
選擇 |
選擇 |
位精度的;適用於十進製列 |
type_scale |
int32 |
選擇 |
選擇 |
數字小數點向右;適用於十進製列 |
type_interval_type |
字符串 |
選擇 |
選擇 |
間隔的格式列 |
位置 |
int32 |
要求的事情 |
選擇 |
順序列的位置,從0開始。 |
評論 |
字符串 |
選擇 |
選擇 |
用戶提供的自由格式的文本 |
可以為空 |
bool |
選擇 |
選擇 |
字段是否可以為空(默認值:真正的) |
partition_index |
int16 |
選擇 |
選擇 |
分區ID |
RPC端點
HTTP方法 |
URI |
端點的名字 |
輸入 |
輸出 |
帖子 |
<前綴>/表 |
不知道
警告:不要使用不知道在這個時間。 |
TableInfo (部分) |
TableInfo |
得到 |
<前綴>/表[?< q_args >] |
listTables |
q_args |
TableList |
得到 |
<前綴>/ /表:full_name |
可以獲得的 |
沒有一個 |
TableInfo |
補丁 |
<前綴>/ /表:full_name |
updateTable |
TableInfo (部分) |
TableInfo |
刪除 |
<前綴>/ /表:full_name |
deleteTable |
沒有一個 |
沒有一個 |
得到 |
< pe_prefix > /表/:full_name |
privilegedGetTable |
沒有一個 |
TableInfo |
輸入
q_args:
字段名 |
類型 |
要求/ OPT |
描述 |
catalog_name |
字符串 |
要求的事情 |
父母的名字目錄 |
schema_name |
字符串 |
要求的事情 |
父模式相對於母公司的名稱目錄 |
這兩個catalog_name和schema_name的參數listTables端點是必需的。列出多個模式(在同一個表目錄在分頁),“批量”的方式,請參閱listTableSummaries下麵的API。
端點行為筆記
授權
的不知道端點用戶滿足要求所有以下要求:
- 所有權或者使用父目錄和特權模式(無論Metastore管理狀態)
- 所有權或者創建在家長模式特權
如果新表table_type的“外部“用戶必須是Metastore管理員或滿足存儲憑證的權限要求和/或外部外部表所使用的位置。
的可以獲得的端點要求用戶要麼Metastore管理員或滿足下列條件:
- 所有權或者使用父目錄和特權模式
- 所有權或者選擇特權所請求的桌子上
的listTables端點返回:
- 所有表(在當前Metastore和父目錄和模式),當用戶Metastore admin
- 所有表(在當前Metastore和父目錄和模式)的用戶或所有權選擇提供用戶特權,也或者所有權使用父目錄和特權模式
一般來說,updateTable端點需要這兩個下麵的:
- 用戶擁有所有權或使用特權在父目錄和家長模式
- 用戶表的所有者或用戶Metastore管理,隻有老板字段是改變
如果桌子上的名字改變,updateTable還要求父母的特權用戶的創建模式(即使用戶Metastore admin)。
的表中table_type的“視圖”和所有者領域正在改變,updateTable端點要求用戶是新主人的一員。
的deleteTable端點要求用戶
- 是一個父目錄的所有者
- 有使用父目錄和特權是一個擁有父模式
- 有使用特權在父目錄和模式和表的所有者
ListTableSummaries API
對象模型
TableSummariesReq
字段名 |
類型 |
要求/ OPT |
描述 |
catalog_name |
字符串 |
要求的事情 |
父母的名字目錄對感興趣的模式和表 |
schema_name_pattern |
字符串 |
選擇 |
這樣的SQL模式(支持%和_)指定感興趣的模式的名稱 |
table_name_pattern |
字符串 |
選擇 |
這樣的SQL模式(支持%和_)指定感興趣的表的名稱 |
max_results |
int32 |
選擇 |
最大數量的表返回(即。,頁麵長度);默認為1000 |
page_token |
字符串 |
選擇 |
不透明的令牌發送下一個頁麵的結果 |
TableSummary
字段名 |
類型 |
描述 |
full_name |
字符串 |
完全限定名稱表、表單 <目錄>,<模式>。<表> |
table_type |
字符串 |
區分一個視圖和管理/外部表 |
TableSummariesResp
字段名 |
類型 |
描述 |
表 |
數組(TableSummary) |
名單表總結 |
next_page_token |
字符串 |
不透明的令牌用於檢索結果的下一頁 |
RPC端點
HTTP方法 |
URI |
端點的名字 |
輸入 |
輸出 |
帖子 |
<前綴>/ table-summaries |
listTableSummaries |
TableSummariesReq |
TableSummariesResp |
端點行為筆記
授權
的listTables端點返回:
- TableSummary的所有表(在當前Metastore和父目錄和模式),當用戶Metastore admin
- TableSummary的所有表和模式(在當前Metastore和父目錄)的用戶或所有權選擇放在桌子上,所有權或特權使用特權模式,用戶也有所有權或提供使用特權的父目錄
權限API
術語和權限管理模型
的磚權限API管理權限水平(例如,“CAN_USE”,“CAN_MANAGE”),一個標量值,用戶對各種對象類型(筆記本、就業、令牌,等等)。由統一管理的對象目錄主體(用戶或組)可能沒有權限的集合組織一直到水平,因為它們是獨立的能力。例如,一個給定的用戶可能有能力修改模式,但能力並不意味著用戶的能力模式中創建表,也亦然。
雖然術語可能不是行業標準,我們定義以下條款:
- 主要:用戶名(郵箱地址)或組名稱(包括特殊群體”賬戶用戶”,所有用戶所屬)
- 可獲得的:一個SQL對象(目錄、模式、表)或其他對象由統一管理目錄(如股票)
- 特權:一組特定的能力(可獲得的)
- 權限:一個映射的主體(用戶/組)的特權
通過這種方式,我們能說的可獲得的權限,或者一個用戶的權限在可獲得的(對象)。
SQL對象特權
統一目錄數據治理模型是一個allowlist(即。,there are no privileges inherited from目錄模式表,與蜂巢metastore權限模型和遺傳模型用於管理的對象權限API),所以沒有明確的否認行為。
支持的特權值Metastore SQL對象(目錄下麵的字符串、模式、表):
外部位置和存儲憑證支持以下特權:
- “read_file”
- “WRITE_FILES”
- “CREATE_TABLE”
注意沒有“所有“特權。有責任API客戶端將所有權限的集合/從“所有”的別名。
對象模型
PrivilegeAssignment
的PrivilegesAssignment地圖類型單一主體的權限分配給主體。
字段名 |
類型 |
描述 |
主要 |
字符串 |
用戶名(郵箱地址)或組名稱 |
特權 |
數組(字符串) |
列表的權限分配給校長 |
PermissionsList
的PermissionsList消息類型是用來列出所有給定可獲得的權限。地圖每個主要分配權限。
字段名 |
類型 |
描述 |
privilege_assignments |
數組(PrivilegeAssignment) |
所有權限列表(配置為一個可獲得的),所有指定的主體映射到相關的特權。 |
一個例子PermissionsList:
{
“privilege_assignments”:(
{
“主要”:“username@examplesemail.com”,
“特權”(“選擇”):
},
{
“主要”:“eng-data-security”,
“特權”(“選擇”,“修改”,“創造”)
},
{
“主要”:“用戶”,
“特權”(“使用”):
}
]
}
PermissionsChange
的updatePermissions(補丁)端點允許客戶端指定一組增量變化可獲得的的權限。
的PermissionsChange類型指定權限添加和/或刪除從一個校長。
字段名 |
類型 |
描述 |
主要 |
字符串 |
用戶名(郵箱地址)或組名稱 |
添加 |
數組(字符串) |
校長的特權添加列表 |
刪除 |
數組(字符串) |
從校長的特權列表刪除 |
PermissionsDiff
的PermissionsDiff消息類型指定了一個列表的變化使一個可獲得的權限。
字段名 |
類型 |
描述 |
變化 |
數組(PermissionsChange) |
列表的變化使一個可獲得的權限 |
一個例子PermissionsDiff:
{
“變化”:[
{
“主要”:“username@examplesemail.com”,
“添加”:“選擇”,
“刪除”(“修改”):
},
{
“主要”:“eng-data-security”,
“刪除”(“創造”):
},
{
“主要”:“用戶”,
“添加”(“使用”):
}
]
}
改變所有權
一個特例擁有權限的變化是一個變化。這對應於SQL命令”修改< securable_type > < securable_name >所有者<校長>”,是治理模型描述的限製。
改變所有權是通過調用更新<可到手的>端點與輸入,包括“所有者”字段包含用戶名/ groupname的新主人。需要澄清的是,這種所有權的改變不涉及API調用權限。
在不久的將來,可能會有一個“擁有”特權添加到加州大學支持的特權。
RPC端點
統一目錄權限api適用於多種可到手的類型,使用以下可到手的標識符(sec_full_name)字段:
sec_type |
sec_id領域 |
描述 |
metastore |
id |
metastore ID |
目錄 |
的名字 |
的目錄的名字 |
模式 |
full_name |
模式的全名(<目錄>。<模式>) |
表 |
full_name |
表的全名(<目錄>,<模式>。<表>) |
storage-credential |
的名字 |
存儲證書的名字 |
外部位置的 |
的名字 |
外部位置的名字 |
HTTP方法 |
URI |
端點的名字 |
輸入 |
輸出 |
得到 |
<前綴>/ / < sec_type > /權限 < sec_full_name > [? q_args] |
getPermissions |
q_args |
PermissionsList |
補丁 |
<前綴>/ / < sec_type > /權限 < sec_full_name > |
updatePermissions |
PermissionsDiff |
PermissionsList |
把 |
<前綴>/ / < sec_type > /權限 < sec_full_name > |
replacePermissions |
PermissionsList |
沒有一個 |
例子:
GET / api / 2.0 /團結-目錄/ /權限目錄/ some_cat
把/ api / 2.0 /團結-目錄/ /表/ some_cat.other_schema.my_table權限
輸入
q_args:
字段名 |
類型 |
要求/ OPT |
描述 |
主要 |
字符串 |
選擇 |
本金的利息(隻返回權限的用戶/組) |
授權、錯誤響應
數據治理模型描述了細節格蘭特,撤銷和顯示格蘭特命令,這些對應添加、刪除的權限以及獲取的權限getPermissions端點。輸出和錯誤行為API端點:
- 如果客戶端用戶可獲得的的所有者或Metastore管理:
- 如果一個主要提供輸入,隻返回的權限主要在可獲得的。
- 如果沒有主要提供輸入,所有可獲得的權限配置如果沒有返回主要提供輸入。
- 如果客戶機用戶沒有的主人可獲得的,而不是Metastore管理主體提供匹配的客戶端用戶:
- 否則,端點將返回一個403 -禁止與身體:
{
“error_code”:“未經授權的”,
“消息”:“隻有管理員用戶或可獲得的的所有者可以閱讀其他用戶的權限。”
}
- updatePermissions,replacePermissions:
- 如果客戶機用戶不是可到手的的所有者或Metastore admin,端點將返回一個403錯誤的身體:
{
“error_code”:“未經授權的”,
“消息”:“用戶隻能授予或撤銷模式和表權限。”
}
- 如果權限/PermissionsChanges輸入無效的(例如,PermissionsChanges輸入試圖“添加”“選擇“許可模式),與適當的端點將返回一個400錯誤。
用戶信息的API
對象模型
GetMyInfoResp:
字段名 |
類型 |
描述 |
is_metastore_admin |
bool |
標誌指示用戶是否Metastore管理員 |
GetMyGroupsResp:
字段名 |
類型 |
描述 |
group_name |
數組(字符串) |
組名稱列表 |
RPC端點
HTTP方法 |
URI |
端點的名字 |
輸入 |
輸出 |
得到 |
<前綴>[/用戶信息我嗎?< q_args >] |
getMyInfo |
q_args |
GetMyInfoResp |
得到 |
<前綴>/用戶信息/我的群組 |
getMyGroups |
GetMyGroupsReq |
GetMyGroupsResp |
輸入
q_args:
字段名 |
類型 |
要求/ OPT |
描述 |
for_account_level |
bool |
選擇 |
組織是否返回對應帳戶級別或工作團體會員 |
臨時憑證API
表操作
支持的值操作的字段GenerateTemporaryTableCredentialReq消息是:
- “讀”——為隻讀訪問表數據雲存儲
- “READ_WRITE”——讀和寫訪問表數據雲存儲
路徑操作
支持的值操作的字段GenerateTemporaryPathCredentialReq消息是:
- “PATH_READ”——對於隻讀訪問數據在雲存儲路徑
- “PATH_READ_WRITE”——讀和寫訪問數據在雲存儲路徑
- “PATH_CREATE_TABLE”——為表創建雲存儲路徑
對象模型
方法:
字段名 |
類型 |
描述 |
access_key_id |
字符串 |
access key ID標識的臨時憑證 |
secret_access_key |
字符串 |
秘密訪問密鑰,可用於AWS API請求信號 |
session_token |
字符串 |
令牌,用戶必須通過AWS API使用的臨時憑證 |
AzureUserDelegationSAS:
字段名 |
類型 |
描述 |
sas_token |
字符串 |
簽署的URI (SAS令牌)用於訪問blob服務對於一個給定的路徑 |
GcpOauthToken:
字段名 |
類型 |
描述 |
oauth_token |
字符串 |
GCP的臨時憑證API認證(裁判) |
TemporaryCredentials:
字段名 |
類型 |
描述 |
expiration_time |
int64 |
服務器證書將過期,在時代毫秒 |
憑證之一: |
aws_temp_credentials |
方法 |
AWS的臨時憑證 |
azure_user_delegation_sas |
AzureUserDelegationSAS |
Azure簽署的URI (SAS令牌) |
gcp_oauth_token |
GcpOauthToken |
GCP OAuth令牌 |
GenerateTemporaryTableCredentialReq:
字段名 |
類型 |
描述 |
table_id |
字符串(uuid) |
表的唯一標識符 |
操作 |
字符串 |
上麵的表操作值之一 |
GenerateTemporaryPathCredentialReq:
字段名 |
類型 |
描述 |
url |
字符串(url) |
在雲存儲的URL路徑 |
操作 |
字符串 |
上麵一個路徑的操作值 |
credential_id |
字符串(uuid) |
惟一的ID存儲憑證使用獲得的臨時憑證 |
RPC端點
HTTP方法 |
URI |
端點的名字 |
輸入 |
輸出 |
帖子 |
<前綴>/臨時表- 憑證 |
generateTemporary TableCredential |
GenerateTemporary TableCredentialReq |
TemporaryCredentials |
帖子 |
<前綴>/ temporary-path - 憑證 |
generateTemporary PathCredential |
GenerateTemporary PathCredentialReq |
TemporaryCredentials |
分享CRUD API(δ分享)
對象模型
ShareInfo
字段名 |
類型 |
創建 |
更新 |
描述 |
的名字 |
字符串 |
要求的事情 |
選擇 |
相對於父metastore共享名稱 |
評論 |
字符串 |
選擇 |
選擇 |
用戶提供的自由格式的文本 |
對象 |
數組(ShareDataObject) |
IGN |
選擇 |
共享的數據對象的列表內的份額 |
老板 |
字符串 |
IGN[7] |
選擇 |
用戶名/ groupname分享主人的 |
輸出: |
created_at |
int64 |
IGN |
IGN |
共享創建日期 |
created_by |
字符串 |
IGN |
IGN |
用戶分享的創造者 |
updated_at |
int64 |
IGN |
IGN |
最後更新日期 |
updated_by |
字符串 |
IGN |
IGN |
最後更新用戶名的用戶分享 |
ShareDataObject
字段名 |
類型 |
創建 |
更新 |
描述 |
的名字 |
字符串 |
IGN |
選擇 |
一個完全限定名稱,惟一地標識一個數據對象。例如,一個表的完全限定名稱的格式的<目錄>。<模式>。<表>”。 |
評論 |
字符串 |
IGN |
選擇 |
用戶提供的自由格式的文本 |
shared_as |
字符串 |
IGN |
選擇 |
數據對象的用戶提供的新名字中的份額。如果不提供這個新名字,原始對象的名稱將被用作“shared_as”名稱。“shared_as”在分享名稱必須是惟一的。
表,新名稱必須遵循的格式”<模式>,<表>”。 |
partition_specification |
PartitionSpecification |
IGN |
選擇 |
定義了共享分區的格式過濾規範表。 它由一係列分區反過來包括PartitionValues的列表。 |
cdf_enabled |
bool |
IGN |
選擇 |
是否可以更改數據提要(cdf)或表明如果啟用了cdf實驗組的共享對象。 |
start_version |
int64 |
IGN |
選擇 |
開始與對象相關的版本提供。 這允許數據提供者控製最低的對象版本所訪問的客戶。 如果指定了,客戶可以查詢或更改版本> = start_version快照。 如果不指定,客戶隻能查詢從對象當時的版本添加到共享。
注意:start_version應該< =“當前”版本的對象。 |
輸出: |
added_at |
int64 |
IGN |
IGN |
日期表添加分享 |
added_by |
字符串 |
IGN |
IGN |
用戶名的用戶添加表共享 |
data_object_type |
字符串 |
IGN |
IGN |
類型的數據對象。
目前,僅支持類型是“表”。 |
PartitionSpecification
字段名 |
類型 |
創建 |
更新 |
描述 |
分區 |
數組(分區) |
IGN |
選擇 |
分區或邏輯關係 |
分區
字段名 |
類型 |
創建 |
更新 |
描述 |
值 |
數組(PartitionValues) |
IGN |
選擇 |
分區值和邏輯關係 |
PartitionValues
字段名 |
類型 |
創建 |
更新 |
描述 |
的名字 |
字符串 |
IGN |
選擇 |
分區的列的名稱。必須在一個不同的分區 |
價值 |
字符串 |
IGN |
選擇 |
分區列的值。如果沒有設置這個值,這意味著“零”價值。 |
人事處 |
字符串 |
IGN |
選擇 |
操作員申請價值。可以“平等”或“喜歡”。 |
RPC端點
HTTP方法 |
URI |
端點的名字 |
輸入 |
輸出 |
帖子 |
<前綴>/股 |
createShare |
ShareInfo (部分) |
ShareInfo |
得到 |
<前綴>/股 |
listShares |
沒有一個 |
數組(ShareInfo) |
得到 |
<前綴>/ /股票:名字 |
getShare |
沒有一個 |
ShareInfo |
補丁 |
<前綴>/ /股票:名字 |
updateShare |
ShareInfo (部分) |
ShareInfo |
刪除 |
<前綴>/ /股票:名字 |
deleteShare |
沒有一個 |
沒有一個 |
得到 |
<前綴> /股票/:名稱/權限 |
getSharePermissions |
沒有一個 |
PermissionsList |
補丁 |
<前綴> /股票/:名稱/權限 |
updateSharePermissions |
PermissionsDiff |
PermissionsList |
端點行為筆記
授權
的createShare終端用戶要求
- 是一個Metastore管理
- 在Metastore創建共享特權嗎
的getShare端點要求的用戶:
- 是一個Metastore管理
- 分享的主人嗎
的listShares端點返回:
- 所有股票(在當前Metastore),當用戶Metastore admin
- 所有股票(在當前Metastore)用戶是主人
一般來說,updateShare端點需要:
- 用戶分享的主人
- 用戶是一個Metastore管理,隻有老板字段是改變
如果共享的名字改變,updateShare要求用戶分享的所有者和Metastore管理。
通過添加的每個表updateShare,老板也必須有選擇特權在桌子上。這種特權必須無限期地保持接受者能夠訪問表。因此,強烈建議使用一組所有者。
通過表刪除updateShare不需要額外的特權。
的deleteShare端點需要分享的用戶是一個所有者。
的getSharePermissions端點要求的用戶:
- 是一個Metastore管理
- 分享的主人嗎
的updateSharePermissions端點要求的用戶:
- 是一個Metastore管理
- 分享的主人嗎
新接收方授予,用戶也必須接受的所有者。
接收方撤銷簽證不需要額外的特權。
收件人CRUD API(δ分享)
對象模型
RecipientInfo
字段名 |
類型 |
創建 |
更新 |
描述 |
的名字 |
字符串 |
要求的事情 |
選擇 |
相對於父metastore收件人的名字 |
authentication_type |
字符串 |
要求的事情 |
IGN |
三角洲共享驗證類型。可以“令牌”或“磚” |
評論 |
字符串 |
選擇 |
選擇 |
用戶提供的自由格式的文本 |
老板 |
字符串 |
IGN[8] |
選擇 |
用戶名/ groupname接受者的所有者 |
data_recipient_global_metastore_id |
字符串 |
選擇 |
IGN |
全球UC metastore id提供的數據接收方。 隻有當身份驗證這個字段類型是磚。 格式的標識符是<雲>:<地區>:< metastore-uuid >。
|
ip_access_list |
數組(IpAccessList) |
選擇 |
選擇 |
IP訪問列表。這個字段隻適用於令牌的身份驗證類型。 |
輸出: |
created_at |
int64 |
IGN |
IGN |
收件人創建日期 |
created_by |
字符串 |
IGN |
IGN |
接收方的用戶名的創造者 |
updated_at |
int64 |
IGN |
IGN |
最後更新日期 |
updated_by |
字符串 |
IGN |
IGN |
用戶名的用戶最後更新收件人 |
令牌 |
數組(RecipientTokenInfo) |
IGN |
IGN |
接收方令牌。這個字段隻令牌驗證類型時。 |
雲 |
字符串 |
IGN |
IGN |
雲供應商的接受者的加州大學Metastore。 隻有當身份驗證這個字段類型是磚。 |
地區 |
字符串 |
IGN |
IGN |
收件人的加州大學Metastore雲地區。 隻有當身份驗證這個字段類型是磚。 |
metastore_id |
字符串 |
IGN |
IGN |
收件人的加州大學Metastore UUID。 隻有當身份驗證這個字段類型是磚。 |
IpAccessList
字段名 |
類型 |
創建 |
更新 |
描述 |
allowed_ip_addresses |
數組(字符串) |
選擇 |
選擇 |
CIDR標記允許IP地址。100年的極限。 |
RecipientTokenInfo
字段名 |
類型 |
創建 |
更新 |
描述 |
輸出: |
id |
字符串 |
IGN |
IGN |
惟一的id的令牌。 |
activation_url |
字符串 |
IGN |
IGN |
充分激活url獲取訪問令牌。 它將是空的,如果令牌已經檢索。 |
expiration_time |
int64 |
IGN |
IGN |
到期時間戳標記的時代毫秒。 |
created_at |
int64 |
IGN |
IGN |
接收方令牌創建日期 |
created_by |
字符串 |
IGN |
IGN |
接收方的用戶名令牌的創造者 |
updated_at |
int64 |
IGN |
IGN |
最後更新日期接收方令牌 |
updated_by |
字符串 |
IGN |
IGN |
最後更新接收方用戶名的用戶令牌 |
ShareToPrivilegeAssignment
字段名 |
類型 |
創建 |
更新 |
描述 |
輸出: |
share_name |
字符串 |
IGN |
IGN |
共享名。 |
privilege_assignments |
數組(PrivilegeAssignment) |
IGN |
IGN |
權限分配給校長。 |
RotateRecipientToken
字段名 |
類型 |
創建 |
更新 |
描述 |
existing_token_expire_in_seconds |
int64 |
IGN |
要求的事情 |
這將設置expiration_time現有的令牌隻有一個較小的時間戳, 它不能延長expiration_time。立即用0到現有的令牌到期,負數將返回一個錯誤。 |
RPC端點
HTTP方法 |
URI |
端點的名字 |
輸入 |
輸出 |
帖子 |
<前綴>/收件人 |
createRecipient |
RecipientInfo (部分) |
RecipientInfo |
得到 |
<前綴>/收件人 |
listRecipients |
沒有一個 |
數組(RecipientInfo) |
得到 |
<前綴>/收件人/:名字 |
getRecipient |
沒有一個 |
RecipientInfo |
補丁 |
<前綴>/收件人/:名字 |
updateRecipient |
RecipientInfo (部分) |
RecipientInfo |
刪除 |
<前綴>/收件人/:名字 |
deleteRecipient |
沒有一個 |
沒有一個 |
得到 |
<前綴> /收件人/:名稱/共享許可 |
getRecipientSharePermissions |
沒有一個 |
數組(ShareToPrivilegeAssignment) |
帖子 |
<前綴> /收件人/:名稱/ rotate-token |
rotateRecipientToken |
RotateRecipientToken |
RecipientInfo |
端點行為筆記
授權
的createRecipient終端用戶要求
- 是一個Metastore管理
- 在Metastore創建收件人特權嗎
的getRecipient端點要求的用戶:
- 是一個Metastore管理
- 收件人的主人嗎
的listRecipients端點返回:
- 所有人(在當前Metastore),當用戶Metastore admin
- 所有收件人(在當前Metastore)用戶是主人
一般來說,updateRecipient端點需要:
- 用戶的所有者
- 用戶是一個Metastore管理,隻有老板字段是改變
如果收件人的名字改變,updateRecipient要求用戶接收方所有者和Metastore管理。
的deleteRecipient端點需要接收者的用戶是一個所有者。
的getRecipientSharePermissions端點要求的用戶:
- 是一個Metastore管理
- 收件人的主人嗎
的rotateRecipientToken端點需要接收者的用戶是一個所有者。
提供者CRUD API(δ分享)
對象模型
ProviderInfo
RecipientProfile
字段名 |
類型 |
創建 |
更新 |
描述 |
輸出: |
share_credentials_version |
int32 |
IGN |
IGN |
這個字段隻令牌驗證類型時。
文件格式版本的概要文件。這個版本將會增加當non-forward-compatible更改配置文件格式。當客戶端運行一個不受支持的概要文件格式版本,它應該顯示一個錯誤消息指示用戶升級到新版本的客戶端。 |
端點 |
字符串 |
IGN |
IGN |
共享服務器的url。 |
ProviderShare
字段名 |
類型 |
創建 |
更新 |
描述 |
輸出: |
的名字 |
字符串 |
IGN |
IGN |
供應商的名稱。 |
RPC端點
HTTP方法 |
URI |
端點的名字 |
輸入 |
輸出 |
帖子 |
<前綴>/供應商 |
createProvider |
ProviderInfo (部分) |
ProviderInfo |
得到 |
<前綴>/供應商 |
listProviders |
沒有一個 |
數組(ProviderInfo) |
得到 |
<前綴>/供應商/:名字 |
getProvider |
沒有一個 |
ProviderInfo |
補丁 |
<前綴>/供應商/:名字 |
updateProvider |
ProviderInfo (部分) |
ProviderInfo |
刪除 |
<前綴>/供應商/:名字 |
deleteProvider |
沒有一個 |
沒有一個 |
得到 |
<前綴> /供應商/:名稱/股 |
listProviderShares |
沒有一個 |
數組(ProviderShare) |
端點行為筆記
授權
的createProvider終端用戶要求
- 是一個Metastore管理
- 在Metastore創建提供者特權嗎
的getProvider端點要求的用戶:
- 是一個Metastore管理
- 提供者的主人嗎
的listProviders端點返回:
- 所有提供者(在當前Metastore),當用戶Metastore admin
- 所有供應商(在當前Metastore)用戶是主人
一般來說,updateProvider端點需要:
- 用戶提供的所有者
- 用戶是一個Metastore管理,隻有老板字段是改變
如果提供者的名字改變,updateProvider要求用戶提供所有者和Metastore管理。
的deleteProvider端點需要提供者的用戶是一個所有者。
的listProviderShares端點用戶要求:
- 是一個Metastore管理
- 提供者的主人嗎
[1]在創建,新對象的老板字段被設置為用戶執行操作的用戶名。
[2]在創建,新對象的老板字段被設置為用戶執行操作的用戶名。
[3]在創建,新對象的老板字段被設置為用戶執行操作的用戶名。
[4]在創建,新對象的老板字段被設置為用戶執行操作的用戶名。
[5]在創建,新對象的老板字段被設置為用戶執行操作的用戶名。
[6]在創建,新對象的老板字段被設置為用戶執行操作的用戶名。
[7]在創建,新對象的老板字段被設置為用戶執行操作的用戶名。
[8]在創建,新對象的老板字段被設置為用戶執行操作的用戶名。
[9]在創建,新對象的老板字段被設置為用戶執行操作的用戶名。