統一目錄API 2.1規範

目的和範圍

本文給出了一個緊湊的統一規範目錄(UC) 2.1 API,關注和端點的消息構成加州大學的公共API。三角洲共享API也在範圍內。

以下領域本文檔:

術語

用戶類型

所有用戶訪問統一目錄api必須帳戶級別用戶。他們還必須被添加到相關數據磚工作區(為了獲得帕特令牌用於訪問加州大學API服務器)。

Metastore管理員

Metastore管理員可以管理所有可獲得的對象在一個Metastore的特權,比如誰可以創建目錄或查詢一個表。為更多的細節在Metastore管理角色,閱讀統一目錄管理權限

賬戶管理員

帳戶管理是一個戶頭級別用戶賬戶中的“賬戶所有者”角色配置控製台。更多細節,閱讀在統一目錄管理員特權

客戶端類型

統一目錄服務器的API通過外部客戶來訪問。這些“外部”標記的客戶進行身份驗證(例如,帕特從工作區中獲得令牌)。這是一個重要的區別。你必須先獲得一個個人訪問令牌(PAT)訪問統一目錄從一個外部客戶端API。這包括使用磚CLI的unity-catalog命令來訪問加州大學API。

API的約定

API使用筆記

常見的數據模型

屬性

目錄,模式對象都有一個屬性場,這是一個不透明的鍵值對列表。這個列表允許未來的擴展或定製的對象的配置。

字段名

類型

描述

屬性

地圖(字符串,字符串)

可擴展的目錄屬性

公共api

API端點在本節中使用的外部客戶。這些API端點執行權限統一目錄對象,以便客戶端用戶隻有他們有權限訪問對象。

Metastore CRUD API

對象模型

DeltaSharingScope

所支持的價值觀的delta_sharing_scope字段(在一個MetastoreInfo)以下字符串:


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三角洲共享作為官方名稱。

privilege_model_version

字符串

IGN

選擇

特權模式的版本。這是形式的major.minor

輸出:

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號碼,工作空間的唯一標識符。

端點行為筆記

如果一個任務一樣workspace_id已經存在,它將被覆蓋metastore_iddefault_catalog_name

這個端點可以用來更新metastore_id和/或default_catalog_name對於一個指定的工作區,是否已經分配一個Metastore工作區。

授權

createMetastoreAssignmentdeleteMetastoreAssignment端點要求客戶機用戶是一個管理員的賬戶。

updateMetastoreAssignment端點要求:

  1. 如果更新metastore_id:客戶端用戶必須一個帳戶管理員
  2. 否則,客戶端用戶必須工作空間管理員

存儲憑證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端點要求用戶是一個管理員的賬戶。

getStorageCredential端點要求的用戶:

  1. 是Metastore管理或帳戶管理
  2. 是存儲證書的所有者
  3. 有一些特權存儲憑證嗎

listStorageCredentials端點返回:

  1. 所有存儲憑證(在當前Metastore)如果Metastore管理員或用戶帳戶管理
  2. 所有存儲憑證(在當前Metastore)調用者是所有者或一些特權

updateStorageCredential端點需要:

  1. 用戶存儲證書的所有者,賬戶管理,或metastore管理是否改變了它的主人
  2. 用戶帳戶管理等所有其他更新(更新的名字,評論,憑證等屬性證書)

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外部位置不能與其他外部衝突地點或外部表。具體地說,

授權

createExternalLocation終端用戶要求

  1. 是一個Metastore管理
  2. 在Metastore創建外部位置的特權嗎

getExternalLocation端點要求的用戶:

  1. 是一個Metastore管理
  2. 外部位置的主人嗎
  3. 在外部位置有特權嗎

listExternalLocations端點返回:

  1. 所有外部位置(在當前Metastore),當用戶Metastore admin
  2. 所有外部位置的用戶是業主或用戶一些特權

updateExternalLocation端點需要:

  1. 用戶的所有者外部位置
  2. 用戶是一個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終端用戶要求

  1. 是一個Metastore管理
  2. 在Metastore創建目錄權限嗎

當創建一個增量共享目錄,用戶需要也是一個所有者的提供者。

getCatalog端點要求的用戶:

  1. 是一個Metastore管理
  2. 目錄的所有者
  3. 使用特權的目錄

listCatalogs端點返回:

  1. 所有的目錄(在當前Metastore),當用戶Metastore admin
  2. 所有的目錄(在當前Metastore)的用戶是業主或用戶使用特權

一般來說,updateCatalog端點需要:

  1. 用戶目錄的所有者
  2. 用戶是一個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

字符串

要求的事情

父母的名字目錄

端點行為筆記

授權

所有*模式端點要求用戶訪問父目錄。這意味著用戶

  1. 是一個Metastore管理
  2. 父目錄的所有者
  3. 使用特權的父目錄

下麵所有的需求除了這個需求訪問父目錄。

createSchema端點要求用戶

  1. 是一個Metastore管理
  2. 創建特權的父目錄

getSchema端點要求的用戶:

  1. 是一個Metastore管理
  2. 模式的主人嗎
  3. 使用的特權模式

listSchemas端點返回:

  1. 所有模式(在當前Metastore和父目錄),當用戶Metastore管理員或父目錄的所有者
  2. 所有模式(在當前Metastore和父目錄)的用戶是業主或用戶使用特權

一般來說,updateSchema端點需要:

  1. 用戶模式的所有者
  2. 用戶是一個Metastore管理,隻有老板字段是改變

如果模式的名字改變,updateSchema還要求用戶有在父目錄創建權限(或者是一個Metastore admin)。

deleteSchema端點需要模式的用戶是一個所有者或所有者的父目錄。

表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)以下字符串:

數據源格式

在多個外部表支持數據源格式。字符串常量確定這些格式是:

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

端點的名字

輸入

輸出

帖子

<前綴>/表

(實驗)不知道


這個端點目前實驗和不穩定。當腳本創建表操作,使用DBSQL API

TableInfo
(部分)

TableInfo

得到

<前綴>/表[?< q_args >]

listTables

q_args

TableList

得到

<前綴>/ /表:full_name

可以獲得的

沒有一個

TableInfo

補丁

<前綴>/ /表:full_name

(實驗)updateTable

這個端點目前實驗和不穩定。當腳本創建表操作,使用DBSQL API

TableInfo
(部分)

TableInfo

刪除

<前綴>/ /表:full_name

deleteTable

沒有一個

沒有一個

得到

< pe_prefix > /表/:full_name

privilegedGetTable

沒有一個

TableInfo

輸入

q_args:

字段名

類型

要求/ OPT

描述

catalog_name

字符串

要求的事情

父母的名字目錄

schema_name

字符串

要求的事情

父模式相對於母公司的名稱目錄

這兩個catalog_nameschema_name的參數listTables端點是必需的。列出多個模式(在同一個表目錄在分頁),“批量”的方式,請參閱listTableSummaries下麵的API。

端點行為筆記

授權

(實驗)不知道端點用戶滿足要求所有以下要求:

  1. 所有權或者使用父目錄和特權模式(無論Metastore管理狀態)
  2. 所有權或者創建在家長模式特權

如果新表table_type的“外部“用戶必須是Metastore管理員或滿足存儲憑證的權限要求和/或外部外部表所使用的位置。

可以獲得的端點要求用戶要麼Metastore管理員或滿足下列條件:

  1. 所有權或者使用父目錄和特權模式
  2. 所有權或者選擇特權所請求的桌子上

listTables端點返回:

  1. 所有表(在當前Metastore和父目錄和模式),當用戶Metastore admin
  2. 所有表(在當前Metastore和父目錄和模式)的用戶或所有權選擇提供用戶特權,也或者所有權使用父目錄和特權模式

一般來說,(實驗)updateTable端點需要這兩個下麵的:

  1. 用戶擁有所有權或使用特權在父目錄和家長模式
  2. 用戶表的所有者或用戶Metastore管理,隻有老板字段是改變

如果桌子上的名字改變,(實驗)updateTable還要求父母的特權用戶的創建模式(即使用戶Metastore admin)。

的表中table_type的“視圖”和所有者領域正在改變,(實驗)updateTable端點要求用戶是新主人的一員。

deleteTable端點要求用戶

  1. 是一個父目錄的所有者
  2. 使用父目錄和特權是一個擁有父模式
  3. 使用特權在父目錄和模式和表的所有者

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端點返回:

  1. TableSummary的所有表(在當前Metastore和父目錄和模式),當用戶Metastore admin
  2. TableSummary的所有表和模式(在當前Metastore和父目錄)的用戶或所有權選擇放在桌子上,所有權或特權使用特權模式,用戶也有所有權或提供使用特權的父目錄

權限API

術語和權限管理模型

的磚權限API管理權限水平(例如,“CAN_USE”,“CAN_MANAGE”),一個標量值,用戶對各種對象類型(筆記本、就業、令牌,等等)。由統一管理的對象目錄主體(用戶或組)可能沒有權限的集合組織一直到水平,因為它們是獨立的能力。例如,一個給定的用戶可能有能力修改模式,但能力並不意味著用戶的能力模式中創建表,也亦然。

雖然術語可能不是行業標準,我們定義以下條款:

通過這種方式,我們能說的可獲得的權限,或者一個用戶的權限在可獲得的(對象)。

SQL對象特權

可獲得的對象統一目錄層次和特權是繼承了下行。這意味著授予特權的目錄自動授予的特權目錄內的所有當前和未來的對象。同樣,特權授予一個模式繼承了所有當前和未來的對象在這個模式。

看到統一目錄權限和可獲得的對象支持權限值在每個可獲得的對象。

對象模型

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

的名字

存儲證書的名字

外部位置的

的名字

外部位置的名字

視圖

full_name

視圖的全名(<目錄>。<模式>。<視圖>)

函數

的名字

函數的全名(<目錄>。<模式>。<函數>)

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 >

PermissionsList

沒有一個

例子:
GET / api / 2.1 /團結-目錄/ /權限目錄/ some_cat
把/ api / 2.1 /團結-
目錄/ /表/ some_cat.other_schema.my_table權限

輸入

q_args:

字段名

類型

要求/ OPT

描述

主要

字符串

選擇

本金的利息(隻返回權限的用戶/組)

授權、錯誤響應

數據治理模型描述了細節格蘭特,撤銷顯示格蘭特命令,這些對應添加、刪除的權限以及獲取的權限getPermissions端點。輸出和錯誤行為API端點:

{
“error_code”:“
未經授權的”,
“消息”:“用戶隻能授予或撤銷模式和表權限。”
}

用戶信息的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

選擇

組織是否返回對應帳戶級別或工作團體會員

分享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終端用戶要求

  1. 是一個Metastore管理
  2. 在Metastore創建共享特權嗎

getShare端點要求的用戶:

  1. 是一個Metastore管理
  2. 分享的主人嗎

listShares端點返回:

  1. 所有股票(在當前Metastore),當用戶Metastore admin
  2. 所有股票(在當前Metastore)用戶是主人

一般來說,updateShare端點需要:

  1. 用戶分享的主人
  2. 用戶是一個Metastore管理,隻有老板字段是改變

如果共享的名字改變,updateShare要求用戶分享的所有者和Metastore管理。

通過添加的每個表updateShare,老板也必須有選擇特權在桌子上。這種特權必須無限期地保持接受者能夠訪問表。因此,強烈建議使用一組所有者。

通過表刪除updateShare不需要額外的特權。

deleteShare端點需要分享的用戶是一個所有者。

getSharePermissions端點要求的用戶:

  1. 是一個Metastore管理
  2. 分享的主人嗎

updateSharePermissions端點要求的用戶:

  1. 是一個Metastore管理
  2. 分享的主人嗎

新接收方授予,用戶也必須接受的所有者。

接收方撤銷簽證不需要額外的特權。

收件人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終端用戶要求

  1. 是一個Metastore管理
  2. 在Metastore創建收件人特權嗎

getRecipient端點要求的用戶:

  1. 是一個Metastore管理
  2. 收件人的主人嗎

listRecipients端點返回:

  1. 所有人(在當前Metastore),當用戶Metastore admin
  2. 所有收件人(在當前Metastore)用戶是主人

一般來說,updateRecipient端點需要:

  1. 用戶的所有者
  2. 用戶是一個Metastore管理,隻有老板字段是改變

如果收件人的名字改變,updateRecipient要求用戶接收方所有者和Metastore管理。

deleteRecipient端點需要接收者的用戶是一個所有者。

getRecipientSharePermissions端點要求的用戶:

  1. 是一個Metastore管理
  2. 收件人的主人嗎

rotateRecipientToken端點需要接收者的用戶是一個所有者。

提供者CRUD API(δ分享)

對象模型

ProviderInfo

字段名

類型

創建

更新

描述

的名字

字符串

要求的事情

選擇

相對於父metastore提供者名稱

authentication_type

字符串

要求的事情

IGN

三角洲共享驗證類型。可以“令牌”或“磚”

評論

字符串

選擇

選擇

用戶提供的自由格式的文本

老板

字符串

IGN[9]

選擇

用戶名/ groupname Povider業主

recipient_profile_str

字符串

選擇

選擇

隻適用於“令牌”驗證類型。這是這個概要文件的字符串給收件人。看到https://github.com/delta-io/delta-sharing/blob/main/PROTOCOL.md profile-file-format

在輸出模式下,持票人牌屏蔽。

輸出:

created_at

int64

IGN

IGN

提供者創建日期

created_by

字符串

IGN

IGN

用戶名的提供者的創造者

updated_at

int64

IGN

IGN

最後更新日期提供者

updated_by

字符串

IGN

IGN

最後更新用戶名的用戶提供者

recipient_profile

RecipientProfile

IGN

IGN

收件人資料。這個字段隻令牌驗證類型時。看到https://github.com/delta-io/delta-sharing/blob/main/PROTOCOL.md profile-file-format

字符串

IGN

IGN

雲提供者的加州大學Metastore供應商。

隻有當身份驗證這個字段類型是磚。

地區

字符串

IGN

IGN

雲提供者的加州大學Metastore區域。

隻有當身份驗證這個字段類型是磚。

metastore_id

字符串

IGN

IGN

提供者的加州大學Metastore UUID。

隻有當身份驗證這個字段類型是磚。

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終端用戶要求

  1. 是一個Metastore管理
  2. 在Metastore創建提供者特權嗎

getProvider端點要求的用戶:

  1. 是一個Metastore管理
  2. 提供者的主人嗎

listProviders端點返回:

  1. 所有提供者(在當前Metastore),當用戶Metastore admin
  2. 所有供應商(在當前Metastore)用戶是主人

一般來說,updateProvider端點需要:

  1. 用戶提供的所有者
  2. 用戶是一個Metastore管理,隻有老板字段是改變

如果提供者的名字改變,updateProvider要求用戶提供所有者和Metastore管理。

deleteProvider端點需要提供者的用戶是一個所有者。

listProviderShares端點用戶要求:

  1. 是一個Metastore管理
  2. 提供者的主人嗎

[1]創建,新對象的老板字段被設置為用戶執行操作的用戶名。

[2]創建,新對象的老板字段被設置為用戶執行操作的用戶名。

[3]創建,新對象的老板字段被設置為用戶執行操作的用戶名。

[4]創建,新對象的老板字段被設置為用戶執行操作的用戶名。

[5]創建,新對象的老板字段被設置為用戶執行操作的用戶名。

[6]創建,新對象的老板字段被設置為用戶執行操作的用戶名。

[7]創建,新對象的老板字段被設置為用戶執行操作的用戶名。

[8]創建,新對象的老板字段被設置為用戶執行操作的用戶名。

[9]創建,新對象的老板字段被設置為用戶執行操作的用戶名。

Baidu
map