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

操作は Get User Delegation Key 、ユーザー委任 SAS (共有アクセス署名) の署名に使用できるキーを取得します。 ユーザー委任 SAS は、Microsoft Entra資格情報を使用してAzure Blob Storage リソースへのアクセスを許可します。 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

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

ローカル ストレージ サービスに対して要求を行う場合は、ローカル ホスト名と 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 必須。 承認スキームを指定します。 Microsoft Entra IDを使用した承認のみがサポートされます。 詳細については、「Microsoft Entra IDで承認する」を参照してください。
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 日以内の有効な日付と時刻である必要があります。
Expiry 必須。 ISO 日付形式のユーザー委任 SAS の有効期限。 現在の日付から 7 日以内の有効な日付と時刻である必要があります。

Response

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

status code

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

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

応答ヘッダー

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

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

承認

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

アクセス許可

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

次に、Microsoft Entra セキュリティ プリンシパルが操作を呼び出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 リソースに直接アクセスすることはできません。

請求

価格要求は、Blob Storage REST API を介して直接、または Azure Storage クライアント ライブラリを介して Blob Storage API を使用するクライアントから送信できます。 これらの要求では、トランザクションあたりの料金が発生します。 トランザクションの種類は、アカウントの課金方法に影響します。 たとえば、読み取りトランザクションは、書き込みトランザクションとは異なる課金カテゴリに計上されます。 次の表は、ストレージ アカウントの種類に基づく要求の課金カテゴリ Get User Delegation Key を示しています。

操作 ストレージ アカウントの種類 課金カテゴリ
ユーザー委任キーを取得する Premium ブロック BLOB
Standard 汎用 v2
その他の操作
ユーザー委任キーを取得する Standard 汎用 v1 操作を読み取ります。

指定した課金カテゴリの価格については、「Azure Blob Storage価格」を参照してください。

こちらもご覧ください