OneLake Shared Access Signature (SAS) を作成する (プレビュー)
OneLake SAS を作成して、Microsoft Entra 資格情報でサポートされた OneLake 内のフォルダーまたはファイルへの短期間の委任されたアクセスを提供できます。 OneLake SAS を使用すると、Microsoft Entra のサポートを使用せずにアプリケーションへの一時的なアクセスを提供できるため、他の顧客アプリケーションまたは独立系ソフトウェア ベンダー (ISV) 間でデータを読み込んだり、プロキシとして機能したりすることができます。
OneLake SAS を作成するには、まず、SAS に署名するために使用するユーザー委任キーを要求する必要があります。 ユーザー委任キーを要求するには、Get User Delegation Key 操作を呼び出します。 OneLake SAS は、データ項目内のファイルとフォルダーのみへのアクセス権を付与でき、項目やワークスペースの作成や削除などの管理操作には使用できません。
OneLake SAS は、データ項目内のファイルとフォルダーのみへのアクセス権を付与でき、ワークスペースや項目の作成などの管理操作には使用できません。
OneLake SAS は、Azure Storage と互換性のあるツールやアプリケーションとの互換性を確保するために同じパラメーターを使用して、Azure Storage ユーザー委任 SAS と同様に作成されます。
重要
この機能はプレビュー中です。
アクセス許可の割り当て
ユーザー委任キーの要求は、Fabric でのテナント レベルの操作です。 ユーザー委任キーを要求するには、ユーザー委任キーを要求するユーザーまたはセキュリティ プリンシパルに、少なくとも Fabric テナント内の 1 つのワークスペースでの読み取りアクセス許可が必要です。 要求元ユーザーの ID が SAS の認証に使用されます。つまり、ユーザーには、SAS アクセスを許可するデータに対するアクセス許可が必要です。
OAuth 2.0 トークンを取得する
ユーザー委任キーを取得するには、まず Microsoft Entra ID から OAuth 2.0 トークンを要求します。 トークンに Bearer スキームを指定して、Get User Delegation Key 操作の呼び出しを承認します。 Microsoft Entra ID からの OAuth トークンの要求について詳しくは、「認証フローとアプリケーションのシナリオ」を参照してください。
ユーザー委任キーを要求する
Get User Delegation Key 操作を呼び出すと、ユーザー委任 SAS トークンのパラメーターとして使用される値のセットとしてキーが返されます。 これらのパラメーターについては、Get User Delegation Key の参照と次のセクションで説明します。
クライアントで OAuth 2.0 トークンを使用してユーザー委任キーが要求されると、クライアントに代わって OneLake によってユーザー委任キーが返されます。 このユーザー委任キーを使用して作成された SAS には、最大でクライアントに付与されるアクセス許可が付与され、SAS で明示的に付与されるアクセス許可に範囲が絞られます。
ユーザー委任キーの有効期間中は、任意の数の OneLake SAS を作成できます。 ただし、OneLake SAS とユーザー委任キーは最大 1 時間有効であり、要求側のトークンの有効期間を超えることはできません。 これらの有効期間の制限は、Azure Storage ユーザー委任 SAS の最大有効期間よりも短くなります。
ユーザー委任 SAS を作成する
次の表では、OneLake SAS トークンでサポートされているフィールドをまとめています。 以降のセクションでは、これらのパラメーターと Azure Storage SAS トークンとの違いについて詳しく説明しています。 OneLake では、Azure Storage でサポートされているすべての省略可能なパラメーターがサポートされているわけではありません。サポートされていないパラメーターで作成された OneLake SAS は拒否されます。
SAS フィールド名 | SAS トークン パラメーター | 状態 | 説明 |
---|---|---|---|
signedVersion |
sv |
必須 | 署名フィールドの作成に使用されるサービスのバージョンを示します。 OneLake では、バージョン '2020-02-10'、'2020-12-06' より後のすべてのバージョン、および '2020-02-10' より前のバージョンがサポートされています。 |
signedResource |
sr |
必須 | 共有アクセス署名を使用してアクセスできるリソースを指定します。 OneLake には、BLOB (b ) とディレクトリ (d ) のみが適用されます。 |
signedStart |
st |
省略可能 | Shared Access Signature が有効になる時刻。 ISO 8601 UTC 形式。 |
signedExpiry |
se |
必須 | Shared Access Signature の有効期限が切れる時刻 |
signedPermissions |
sp |
必須 | SAS がリソースに対して実行できる操作を示します。 詳細については、「アクセス許可を指定する」セクションを参照 |
signedObjectId |
skoid |
必須 | Microsoft Entra セキュリティ プリンシパルを識別します。 |
signedtenantId |
sktid |
必須 | セキュリティ プリンシパルが定義されている Microsoft Entra テナントを指定します。 |
signedKeyStartTime |
skt |
省略可能 | 署名キーが開始する時刻 (UTC)。 Get User Delegation Key 操作で返されます。 |
signedKeyExpiryTime |
ske |
必須 | 署名キーが終了する時刻 (UTC)。 Get User Delegation Key 操作で返されます。 |
signedKeyVersion |
skv |
必須 | ユーザー委任キーの取得に使用されるストレージ サービスのバージョン。 Get User Delegation Key 操作で返されます。 OneLake では、バージョン 2020-02-10 以前、および 2020-12-06 より後のバージョンがサポートされています |
signedKeyService |
sks |
必須 | ユーザー委任キーの有効なサービス。 OneLake では、Blob Storage (sks=b ) のみがサポートされます。 |
signature |
sig |
必須 | 署名は、SHA256 アルゴリズムを使用して署名対象文字列とキーを計算した後に、Base64 エンコードでエンコードしたハッシュ ベースのメッセージ認証コード (HMAC) 値です。 |
signedAuthorizedObjectId |
saoid |
サポートされていない | OneLake SAS はこの機能をサポートしていません。 |
signedUnauthorizedObjectId |
suoid |
サポートされていない | OneLake SAS はこの機能をサポートしていません。 |
signedCorrelationId |
suoid |
サポートされていない | OneLake SAS では、このパラメーターはサポートされていません。 |
signedDirectoryDepth |
sdd |
省略可能 | 署名対象文字列の canonicalizedResource フィールドで指定されたディレクトリのルート フォルダー内のディレクトリ数を示します。 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 Storage ツールと同等にするために、OneLake では Azure Storage と同じアクセス許可形式を使用します。 OneLake は、signedPermissions
で SAS に付与されたアクセス許可、Fabric での署名 ID のアクセス許可、および該当する場合は任意の OneLake データ アクセス ロールを評価します。 アクセス許可の設定やワークスペースの削除などの一部の操作は、通常、Azure Storage API を介して OneLake で許可されないため、そのアクセス許可 (sp=op
) を付与しても、OneLake SAS でこれらの操作を実行できないことに注意してください。
権限 | URI の略記 | リソース | 許可される操作 |
---|---|---|---|
既読 | r | ディレクトリ、BLOB | コンテナーまたはディレクトリ内の BLOB のコンテンツ、ブロックリスト、プロパティ、メタデータを読み取ります。 コピー操作のコピー元として BLOB を使用します。 |
追加 | a | ディレクトリ、BLOB | 追加 BLOB にブロックを追加します。 |
作成 | c | ディレクトリ、BLOB | 新しい BLOB を書き込むか、BLOB のスナップショットを作成するか、BLOB を新しい BLOB にコピーします。 |
書き込み | w | ディレクトリ、BLOB | コンテンツ、プロパティ、メタデータ、またはブロックリストの作成または書き込みを行います。 BLOB のスナップショットの作成または BLOB のリースを行います。 コピー操作のコピー先として BLOB を使用します。 |
削除 | d | ディレクトリ、BLOB | BLOB を削除する |
バージョンの削除 | x | BLOB | BLOB バージョンを削除します。 |
完全削除 | y | BLOB | BLOB スナップショットまたはバージョンを完全に削除します。 |
リスト | l | Directory | 非再帰的にBLOB を一覧表示します。 |
タグ | t | BLOB | BLOB のタグを読み取るか書き込みます。 |
移動 | m | ディレクトリ、BLOB | BLOB またはディレクトリ、およびその内容を新しい場所に移動します。 |
実行 | e | ディレクトリ、BLOB | システム プロパティを取得し、ストレージ アカウントに対して階層型名前空間が有効になっている場合は BLOB の POSIX ACL を取得します。 |
所有権 | o | ディレクトリ、BLOB | 所有者または所有グループを設定します。 OneLake ではサポートされていません |
アクセス許可 | P | ディレクトリ、BLOB | アクセス許可を設定します。 OneLake ではサポートされていません |
Set Immutability Policy | i | BLOB | BLOB の不変性ポリシーまたは訴訟ホールドを設定または削除します。 |
署名を指定する
signature
(sig
) フィールドは、クライアントが Shared Access Signature を使用して行った要求の承認に使用されます。 署名対象文字列は、要求を承認するために検証する必要のあるフィールドから作成された一意の文字列です。 署名は、SHA256 アルゴリズムを使用して署名対象文字列とキーを計算した後に、bBase65 エンコードを使用してエンコードした HMAC 値です。
ユーザー委任 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 トークンが追加された OneLake SAS URI を示しています。 SAS トークンは、レイクハウス内の 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>