取得使用者委派金鑰

Get User Delegation Key作業會取得可用來簽署使用者委派 SAS (共用存取簽章) 的金鑰。 使用者委派 SAS 會使用 Azure Active Directory (Azure AD) 認證來授與 Blob 服務中資源的存取權。 此 Get User Delegation Key 作業可在2018-11-09 版和更新版本中使用。

要求

Get User Delegation Key 的建構如下。 需要 HTTPS。 使用您的儲存體帳戶名稱取代 myaccount

POST 方法要求 URI HTTP 版本
https://myaccount.blob.core.windows.net/?restype=service&comp=userdelegationkey HTTP/1.1

模擬儲存體服務 URI

對本機儲存體服務提出要求時,請將本機主機名稱和 Blob 服務通訊埠指定為 127.0.0.1:10000,後面接著本機儲存體帳戶名稱:

POST 方法要求 URI HTTP 版本
http://127.0.0.1:10000/devstoreaccount1/?restype=service&comp=userdelegationkey HTTP/1.1

如需詳細資訊,請參閱使用 Azure 儲存體 Emulator 進行開發和測試

URI 參數

您可以在要求的 URI 中指定下列其他參數。

參數 描述
timeout 選擇性。 timeout 參數以秒為單位。 如需詳細資訊,請參閱 設定 Blob 服務作業的超時

要求標頭

下表描述必要的和選用的要求標頭。

要求標頭 描述
Authorization 必要。 指定授權配置。 僅支援使用 Azure AD 的授權。 如需詳細資訊,請參閱使用 Azure Active Directory 授權
x-ms-version 所有授權要求都需要。 如需詳細資訊,請參閱Azure 儲存體服務的版本控制
x-ms-client-request-id 選擇性。 提供用戶端產生的不透明值,具有1個 KiB 字元限制,當啟用儲存體分析記錄時,記錄在分析記錄中。 強烈建議使用此標頭來將用戶端活動與伺服器接收的要求相互關聯。 如需詳細資訊,請參閱關於儲存體分析記錄Azure 記錄:使用記錄檔追蹤儲存體要求

要求本文

要求主體的格式如下:

<?xml version="1.0" encoding="utf-8"?>  
<KeyInfo>  
    <Start>String, formatted ISO Date</Start>
    <Expiry>String, formatted ISO Date </Expiry>
</KeyInfo>  

下表說明要求主體的項目:

元素名稱 描述
開始 必要。 使用者委派 SAS 的開始時間(採用 ISO 日期格式)。 在目前時間的7天內,它必須是有效的日期和時間。
Expiry 必要。 使用者委派 SAS 的到期時間(以 ISO 日期格式)。 在目前時間的7天內,它必須是有效的日期和時間。

回應

回應包括 HTTP 狀態碼和一組回應標頭。

狀態碼

成功的作業會傳回狀態碼 200 (OK)。

如需狀態碼的相關資訊,請參閱 狀態和錯誤碼

回應標頭

這項作業的回應包括下列標頭。 回應也可能包括其他標準 HTTP 標頭。 所有標準標頭都符合 HTTP/1.1 通訊協定規格

回應標頭 描述
x-ms-request-id 此標頭可唯一識別提出的要求,而且可用來進行要求的疑難排解。 如需詳細資訊,請參閱 疑難排解 API 作業
x-ms-version 指出用於執行要求的 Blob 服務版本。
Date 服務產生的 UTC 日期/時間值,可指出啟動回應的時間。
x-ms-client-request-id 此標頭可用於疑難排解要求和對應的回應。 如果要求中有標頭的值,且值最多1024個可見的 ASCII 字元,則此標頭的值會等於標頭的值 x-ms-client-request-idx-ms-client-request-id如果標頭不存在於要求中,則回應中不會出現此標頭。

回應本文

回應主體的格式如下:

<?xml version="1.0" encoding="utf-8"?>
<UserDelegationKey>
    <SignedOid>String containing a GUID value</SignedOid>
    <SignedTid>String containing a GUID value</SignedTid>
    <SignedStart>String formatted as ISO date</SignedStart>
    <SignedExpiry>String formatted as ISO date</SignedExpiry>
    <SignedService>b</SignedService>
    <SignedVersion>String specifying REST api version to use to create the user delegation key</SignedVersion>
    <Value>String containing the user delegation key</Value>
</UserDelegationKey>

下表描述回應主體的元素:

元素名稱 描述
SignedOid Microsoft 身分識別系統中物件的不彈性識別碼。
SignedTid 代表使用者是來自哪個 Azure AD 租用戶的 GUID。
SignedStart 使用者委派金鑰的開始時間(採用 ISO 日期格式)。
>signedexpiry 使用者委派金鑰的到期時間(以 ISO 日期格式)。
SignedService 使用者委派金鑰的服務可用於,b 代表 Blob 服務。
SignedVersion 用來取得使用者委派金鑰的 rest api 版本。
使用者委派金鑰。

授權

要求使用者委派金鑰的安全性主體必須具有適當的許可權才能這麼做。 Azure AD 的安全性主體可能是使用者、群組、服務主體或受控識別。

若要要求使用者委派金鑰,必須將 Microsoft 的安全性主體指派給安全性主體 儲存體/storageAccounts/blobServices/generateUserDelegationKey 動作。 下列內建的 RBAC 角色包括 Microsoft。儲存體/storageAccounts/blobServices/generateUserDelegationKey 動作,不論是明確或作為萬用字元定義的一部分:

因為此 Get User Delegation Key 作業會在儲存體帳戶層級上運作,所以 儲存體/storageAccounts/blobServices/generateUserDelegationKey 動作的範圍必須是儲存體帳戶、資源群組或訂用帳戶的層級。 如果安全性主體指派了以上所列的任何內建角色,或包含 Microsoft 的自訂角色 儲存體/storageAccounts/blobServices/generateUserDelegationKey 動作會在儲存體帳戶、資源群組或訂用帳戶的層級上,安全性主體將能夠要求使用者委派金鑰。

如果安全性主體指派了允許資料存取的角色,但範圍設定為容器層級,您可以另外將 儲存體 Blob Delegator 角色指派給儲存體帳戶、資源群組或訂用帳戶層級的安全性主體。 儲存體 Blob Delegator 角色會授與安全性主體許可權,以要求使用者委派金鑰。

如需 Azure 儲存體之 RBAC 角色的詳細資訊,請參閱使用 Azure Active Directory 授權

備註

使用使用者委派金鑰來建立使用者委派 SAS。 在對使用者委派 SAS 權杖中的回應 Get User Delegation Key 上包含傳回的欄位。 如需建立使用者委派 SAS 的詳細資訊,請參閱 建立使用者委派 sas

使用者委派金鑰不能用來直接存取 Blob 服務中的資源。

另請參閱