建立 OneLake 共用存取簽章 (SAS) (預覽)
您可以建立 OneLake SAS,以提供 Microsoft Entra 認證所支援之 OneLake 中資料夾或檔案的短期委派存取權。 OneLake SAS 可以暫時存取應用程式,而不支援 Microsoft Entra,讓他們能夠載入數據,或作為其他客戶應用程式或獨立軟體供應商 (ISV) 之間的 Proxy。
若要建立 OneLake SAS,您必須先要求使用者委派密鑰,然後用來簽署 SAS。 若要要求使用者委派密鑰,請呼叫 取得使用者委派密鑰 作業。 OneLake SAS 只能授與數據項內檔案和資料夾的存取權,而且無法用於管理作業,例如建立或刪除專案或工作區。
OneLake SAS 只能授與數據項內檔案和資料夾的存取權,而且無法用於管理作業,例如建立工作區或專案。
OneLake SAS 的建立方式與 Azure 儲存體 使用者委派的 SAS 類似,使用相同的參數來與與Azure 儲存體 相容的工具和應用程式相容。
重要
此功能處於預覽。
指派權限
要求使用者委派金鑰是 Fabric 中的租用戶層級作業。 若要要求使用者委派密鑰,要求使用者委派密鑰的使用者或安全性原則必須在 Fabric 租使用者中的一個工作區中至少具有讀取許可權。 要求使用者的身分識別可用來驗證 SAS,這表示用戶必須具有他們授與 SAS 存取權的數據許可權。
取得 OAuth 2.0 令牌
若要取得使用者委派密鑰,請先從 entra 識別碼Microsoft要求 OAuth 2.0 令牌。 使用持有人配置來授權呼叫 取得使用者委派金鑰 作業。 如需從 Microsoft Entra ID 要求 OAuth 令牌的詳細資訊,請參閱 驗證流程和應用程式案例。
要求使用者委派金鑰
呼叫取得使用者委派金鑰作業會傳回金鑰做為使用者委派 SAS 令牌參數的一組值。 這些參數會在 取得使用者委派密鑰 參考和下一節中說明。
當用戶端使用 OAuth 2.0 令牌要求使用者委派密鑰時,OneLake 會代表用戶端傳回使用者委派密鑰。 使用此使用者委派密鑰建立的 SAS 最多會授與授與給客戶端的許可權,範圍限制在 SAS 中明確授與的許可權。
您可以在使用者委派金鑰的存留期內建立任意數目的 OneLake SAS。 不過,OneLake SAS 和使用者委派密鑰最多可以有效一小時,而且不能超過要求令牌的存留期。 這些存留期限制比 Azure 儲存體 用戶委派 SAS 的最大存留期短。
建構使用者委派 SAS
下表摘要說明 OneLake SAS 令牌支援的欄位。 後續各節提供有關這些參數的詳細數據,以及它們與 SAS 令牌 Azure 儲存體 有何不同。 OneLake 不支援 Azure 儲存體 所支援的每個選擇性參數,而以不支持的參數建構的 OneLake SAS 將會遭到拒絕。
SAS 功能變數名稱 | SAS 令牌參數 | 狀態 | 描述 |
---|---|---|---|
signedVersion |
sv |
必要 | 指出用來建構簽章欄位的服務版本。 OneLake 支援版本 '2020-02-10'、'2020-12-06' 之後的所有版本,以及 '2020-02-10' 之前的版本。 |
signedResource |
sr |
必要 | 指定可透過共用存取簽章存取哪些資源。 只有 Blob (b ) 和目錄 (d ) 適用於 OneLake。 |
signedStart |
st |
選擇性 | 共用存取簽章生效的時間。 ISO 8601 UTC 格式。 |
signedExpiry |
se |
必要 | 共用存取簽章到期的時間 |
signedPermissions |
sp |
必要 | 指出SAS可以在資源上執行的作業。 指定許可權一節中的詳細數據 |
signedObjectId |
skoid |
必要 | 識別Microsoft Entra 安全性主體。 |
signedtenantId |
sktid |
必要 | 指定定義安全性主體的 Microsoft Entra 租使用者。 |
signedKeyStartTime |
skt |
選擇性 | 簽署金鑰啟動時的 UTC 時間。 取得使用者委派金鑰作業所傳回。 |
signedKeyExpiryTime |
ske |
必要 | 簽署金鑰結束時 UTC 的時間。 取得使用者委派金鑰作業所傳回。 |
signedKeyVersion |
skv |
必要 | 用來取得使用者委派金鑰的記憶體服務版本。 取得使用者委派金鑰作業所傳回。 OneLake 支援 2020-02-10 版和 2020-12-06 版和版本 |
signedKeyService |
sks |
必要 | 使用者委派金鑰的有效服務。 OneLake 僅支援 Blob 記憶體 (sks=b )。 |
signature |
sig |
必要 | 簽章是以哈希為基礎的訊息驗證碼(HMAC),透過使用SHA256演演算法計算的字串對簽署和密鑰,然後使用Base64編碼進行編碼。 |
signedAuthorizedObjectId |
saoid |
不支援 | OneLake SAS 不支援此功能。 |
signedUnauthorizedObjectId |
suoid |
不支援 | OneLake SAS 不支援此功能。 |
signedCorrelationId |
suoid |
不支援 | OneLake SAS 不支援此參數。 |
signedDirectoryDepth |
sdd |
選擇性 | 指出 string-to-sign 之標準izedResource 欄位中所指定目錄根資料夾中的目錄數目。 只有在 時 sr=d 才支援 。 |
signedEncryptionScope |
ses |
不支援 | OneLake SAS 目前不支援自訂加密範圍。 |
signedIP |
sip |
不支援 | OneLake SAS 目前不支援IP篩選 |
signedProtocol |
spr |
選擇性 | OneLake 僅支持 HTTPs 要求。 |
Cache-Control 回應標頭 |
rscc |
不支援 | OneLake SAS 不支援此參數。 |
Content-Disposition 回應標頭 |
rscd |
不支援 | OneLake SAS 不支援此參數。 |
Content-Encoding 回應標頭 |
rsce |
不支援 | OneLake SAS 不支援此參數。 |
Content-Language 回應標頭 |
rscl |
不支援 | OneLake SAS 不支援此參數。 |
Content Type 回應標頭 |
rsct |
不支援 | OneLake SAS 不支援此參數。 |
指定許可權
SAS 令牌上 [signedPermissions
sp
)] 字段中所指定的許可權,表示擁有 SAS 的用戶端可以在資源上執行的作業。
您可以合併許可權,以允許用戶端使用相同的SAS執行多個作業。 當您建構 SAS 時,必須依下列順序包含許可權: racwdxltmeop
。
有效權限設定的範例包括rw
、、rd
rl
、wd
、 wl
和 rl
。 您無法多次指定許可權。
為了確保與現有 Azure 儲存體 工具的同位,OneLake 使用與 Azure 儲存體 相同的許可權格式。 OneLake 會評估 中授與 SAS signedPermissions
的許可權、Fabric 中簽署身分識別的許可權,以及如果適用的話,任何 OneLake 資料存取角色的許可權。 請記住,OneLake 上的某些作業,例如設定許可權或刪除工作區,通常不允許透過 Azure 儲存體 API,因此授與該許可權 (sp=op
) 不允許 OneLake SAS 執行這些作業。
權限 | URI 符號 | 資源 | 允許的作業 |
---|---|---|---|
參閱 | r | 目錄、Blob | 讀取容器或目錄中任何 Blob 的內容、封鎖清單、屬性和元數據。 使用 Blob 做為複製作業的來源。 |
加 | a | 目錄、Blob | 將區塊新增至附加 Blob。 |
建立 | c | 目錄、Blob | 寫入新的 Blob、建立 Blob 快照集,或將 Blob 複製到新的 Blob。 |
寫入 | w | 目錄、Blob | 建立或寫入內容、屬性、元數據或封鎖清單。 快照集或租用 Blob。 使用 Blob 做為複製作業的目的地。 |
刪除 | d | 目錄、Blob | 刪除 Blob。 |
刪除版本 | x | Blob | 刪除 Blob 版本。 |
永久刪除 | y | Blob | 永久刪除 Blob 快照集或版本。 |
清單 | l | 目錄 | 以非遞歸方式列出 Blob。 |
標籤 | t | Blob | 讀取或寫入 Blob 上的標記。 |
移動 | m | 目錄、Blob | 將 Blob 或目錄及其內容移至新位置。 |
執行 | e | 目錄、Blob | 取得系統屬性,如果記憶體帳戶已啟用階層命名空間,請取得 Blob 的 POSIX ACL。 |
擁有權 | o | 目錄、Blob | 設定擁有者或擁有群組。 OneLake 不支援 |
權限 | p | 目錄、Blob | 設定許可權。 OneLake 不支援 |
設定不變性原則 | i | Blob | 設定或刪除 Blob 上的不變性原則或法律保留。 |
指定簽章
signature
[sig
)] 欄位可用來授權具有共用存取簽章之用戶端提出的要求。 字串對簽署是從必須驗證以授權要求的欄位建構的唯一字串。 簽章是透過字串對簽署和密鑰計算的 HMAC,方法是使用 SHA256 演算法,然後使用 bBase65 編碼進行編碼。
若要建構使用者委派 SAS 的簽章字串,請從要求所建立的欄位建立字串對簽署、將字串編碼為 UTF-8,然後使用 HMAC-SHA256 演算法計算簽章。 字串對簽署中包含的字段必須是 URL 譯碼。
字串對簽署中所需的欄位取決於用於授權 (sv
) 欄位的服務版本。 下一節說明支援 OneLake SAS 之版本的字串對簽署組態。
版本 2020-12-06 和更新版本
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedKeyObjectId + "\n" +
signedKeyTenantId + "\n" +
signedKeyStart + "\n" +
signedKeyExpiry + "\n" +
signedKeyService + "\n" +
signedKeyVersion + "\n" +
signedAuthorizedUserObjectId + "\n" +
signedUnauthorizedUserObjectId + "\n" +
signedCorrelationId + "\n" +
signedIP + "\n" +
signedProtocol + "\n" +
signedVersion + "\n" +
signedResource + "\n" +
signedSnapshotTime + "\n" +
signedEncryptionScope + "\n" +
rscc + "\n" +
rscd + "\n" +
rsce + "\n" +
rscl + "\n" +
rsct
版本 2020-01-10
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedKeyObjectId + "\n" +
signedKeyTenantId + "\n" +
signedKeyStart + "\n" +
signedKeyExpiry + "\n" +
signedKeyService + "\n" +
signedKeyVersion + "\n" +
signedAuthorizedUserObjectId + "\n" +
signedUnauthorizedUserObjectId + "\n" +
signedCorrelationId + "\n" +
signedIP + "\n" +
signedProtocol + "\n" +
signedVersion + "\n" +
signedResource + "\n" +
signedSnapshotTime + "\n" +
rscc + "\n" +
rscd + "\n" +
rsce + "\n" +
rscl + "\n" +
rsct
2020-02-10 之前的版本
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedKeyObjectId + "\n" +
signedKeyTenantId + "\n" +
signedKeyStart + "\n" +
signedKeyExpiry + "\n" +
signedKeyService + "\n" +
signedKeyVersion + "\n" +
signedAuthorizedUserObjectId + "\n" +
signedUnauthorizedUserObjectId + "\n" +
signedCorrelationId + "\n" +
signedIP + "\n" +
signedProtocol + "\n" +
signedVersion + "\n" +
signedResource + "\n" +
rscc + "\n" +
rscd + "\n" +
rsce + "\n" +
rscl + "\n" +
rsct
正式資源
字串 canonicalizedResource
的部分是資源的正式路徑。 它必須包含 OneLake 端點和資源名稱,而且必須是 URL 譯碼。 OneLake 路徑必須包含其工作區,而目錄路徑必須包含對應至 sdd
參數的子目錄數目。
下列範例示範如何將 OneLake URL 轉換成對應的標準資源。 請記住,OneLake 同時支援 DFS 和 Blob 作業和端點,且 OneLake 的帳戶名稱 一律 為 onelake。
Blob 檔案
URL = https://onelake.blob.fabric.microsoft.com/myWorkspace/myLakehouse.Lakehouse/Files/sales.csv
canonicalizedResource = "/blob/onelake/myWorkspace/myLakehouse.Lakehouse/Files/sales.csv"
DFS 目錄
URL = https://onelake.dfs.fabric.microsoft.com/myWorkspace/myLakehouse.Lakehouse/Files/
canonicalizedResource = "/blob/onelake/myWorkspace/myLakehouse.Lakehouse/Files/"
OneLake SAS 範例
下列範例顯示一個 OneLake SAS URI,其中已附加 OneLake SAS 令牌。 SAS 令牌會提供 Lakehouse 中 Files 資料夾的讀取和寫入許可權。
https://onelake.blob.fabric.microsoft.com/myWorkspace/myLakehouse.Lakehouse/Files/?sp=rw&st=2023-05-24T01:13:55Z&se=2023-05-24T09:13:55Z&skoid=<object-id>&sktid=<tenant-id>&skt=2023-05-24T01:13:55Z&ske=2023-05-24T09:13:55Z&sks=b&skv=2022-11-02&sv=2022-11-02&sr=d&sig=<signature>