ユーザー委任キーを取得する

操作は Get User Delegation Key 、ユーザー委任 SAS (共有アクセス署名) の署名に使用できるキーを取得します。 ユーザー委任 SAS は、Azure Active Directory (Azure AD) 資格情報を使用して、Azure Blob Storage リソースへのアクセスを許可します。 Get User Delegation Keyこの操作は、バージョン 2018-11-09 以降で使用できます。

Request

Get User Delegation Key は、次のように構成します。 HTTPS は必須です。 myaccount をストレージ アカウントの名前に置き換えます。

POST メソッド要求 URI HTTP バージョン
https://myaccount.blob.core.windows.net/?restype=service&comp=userdelegationkey HTTP/1.1

エミュレートされたストレージ サービス要求

ローカル ストレージ サービスに対して要求を行う場合は、ローカル ホスト名と Blob Storage ポートを として 127.0.0.1:10000指定し、その後にローカル ストレージ アカウント名を指定します。

POST メソッド要求 URI HTTP バージョン
http://127.0.0.1:10000/devstoreaccount1/?restype=service&comp=userdelegationkey HTTP/1.1

詳細については、ローカルでの Azure Storage の開発に Azurite エミュレーターを使用する方法に関するページを参照してください。

URI パラメーター

次の追加パラメーターを要求の URI で指定できます。

パラメーター 説明
timeout 省略可能。 timeout パラメーターは、秒単位で表されます。 詳細については、「 Blob Storage 操作のタイムアウトを設定する」を参照してください。

要求ヘッダー

必須要求ヘッダーと省略可能な要求ヘッダーを次の表に示します。

要求ヘッダー 説明
Authorization 必須。 承認スキームを指定します。 Azure AD での承認のみがサポートされています。 詳細については、「 Azure Active Directory で承認する」を参照してください。
x-ms-version すべての承認された要求に必要です。 詳細については、「Azure Storage サービスのバージョン管理」を参照してください。
x-ms-client-request-id 任意。 ログ記録の構成時にログに記録される 1 kibibyte (KiB) 文字制限を使用して、クライアントによって生成された不透明な値を提供します。 このヘッダーを使用して、クライアント側のアクティビティとサーバーが受信する要求を関連付けるよう強くお勧めします。 詳細については、「Azure Blob Storageの監視」を参照してください。

要求本文

要求本文の形式は次のとおりです。

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

要求本文の要素については、次の表で説明します。

要素 説明
Start 必須。 ISO 日付形式のユーザー委任 SAS の開始時刻。 現在の日付から 7 日以内の有効な日付と時刻である必要があります。
有効 期限 必須。 ISO 日付形式のユーザー委任 SAS の有効期限。 現在の日付から 7 日以内の有効な日付と時刻である必要があります。

[応答]

応答には、HTTP 状態コードおよび一連の応答ヘッダーが含まれています。

状態コード

操作に成功すると、状態コード 200 (OK) が返されます。

状態コードの詳細については、「 状態とエラー コード」を参照してください。

応答ヘッダー

この操作の応答には、次のヘッダーが含まれています。 応答に追加の標準 HTTP ヘッダーが含まれる場合もあります。 すべての標準ヘッダーは 、HTTP/1.1 プロトコル仕様に準拠しています

応答ヘッダー 説明
x-ms-request-id 行われた要求を一意に識別し、要求のトラブルシューティングに使用できます。 詳細については、「 API 操作のトラブルシューティング」を参照してください。
x-ms-version 要求の実行に使用された Blob Storage のバージョン。
Date サービスによって生成される UTC 日付/時刻値。応答が開始された時刻を示します。
x-ms-client-request-id 要求と対応する応答のトラブルシューティングに使用できます。 このヘッダーの値は、要求に存在し、その値に 1,024 文字以下の ASCII 文字が含まれている場合、ヘッダーの値 x-ms-client-request-id と同じです。 ヘッダーが x-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 ID システム内のオブジェクトの不変識別子。
SignedTid ユーザーが属している Azure AD テナントを表す GUID です。
SignedStart ISO 日付形式のユーザー委任キーの開始時刻。
SignedExpiry ISO 日付形式のユーザー委任キーの有効期限。
SignedService ユーザー委任キーを使用できるサービス。ここで、b は Blob Storage を表します。
SignedVersion ユーザー委任キーの取得に使用される REST API バージョン。
Value ユーザー委任キー。

認可

Azure Storage でデータ アクセス操作を呼び出す場合は、承認が必要です。 Azure AD を使用してのみ操作を Get User Delegation Key 承認できます。

アクセス許可

ユーザー委任キーを要求するセキュリティ プリンシパルには、これを行うための適切なアクセス許可が必要です。 Azure AD セキュリティ プリンシパルは、ユーザー、グループ、サービス プリンシパル、またはマネージド ID のいずれかです。

Azure AD セキュリティ プリンシパルが操作を呼び出 Get User Delegation Key すために必要な RBAC アクションと、このアクションを含む最小特権の組み込み Azure RBAC ロールを次に示します。

この Azure RBAC アクションを含む組み込みロールは、明示的に、またはワイルドカード定義の一部として、操作を Get User Delegation Key 呼び出すことができます。

Azure RBAC を使用したロールの割り当ての詳細については、「 BLOB データにアクセスするための Azure ロールの割り当て」を参照してください。

操作は Get User Delegation Key ストレージ アカウントのレベルで動作するため、 Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey アクションは、ストレージ アカウント、リソース グループ、またはサブスクリプションのレベルでスコープを設定する必要があります。 セキュリティ プリンシパルに、前述の組み込みロール、または Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey アクションを含むカスタム ロールがストレージ アカウント、リソース グループ、またはサブスクリプションのレベルで割り当てられている場合、セキュリティ プリンシパルはユーザー委任キーを要求できます。

セキュリティ プリンシパルにデータ アクセスを許可するロールが割り当てられているが、コンテナーのレベルにスコープが設定されている場合は、ストレージ アカウント、リソース グループ、またはサブスクリプションのレベルでそのセキュリティ プリンシパルに ストレージ Blob Delegator ロールを追加で割り当てることができます。 Storage Blob Delegator ロールは、ユーザー委任キーを要求するためのアクセス許可をセキュリティ プリンシパルに付与します。

Azure Storage の RBAC ロールの詳細については、「Azure Active Directory で承認する」を参照してください。

解説

ユーザー委任キーを使用して、ユーザー委任 SAS を作成します。 への応答 Get User Delegation Key で返されるフィールドをユーザー委任 SAS トークンに含めます。 詳細については、「ユーザー委任 SAS を作成する」を参照してください。

ユーザー委任キーを使用して Blob Storage リソースに直接アクセスすることはできません。

関連項目