JavaScript を使用してコンテナーまたは BLOB のサービス SAS を作成する
Shared Access Signature (SAS) を使用すると、ストレージ アカウント内のコンテナーと BLOB への制限付きアクセスを許可できます。 SAS を作成するときに、クライアントがアクセスできる Azure Storage リソース、それらのリソースに対するアクセス許可、SAS の有効期間などの制約を指定します。
すべての SAS はキーによって署名されます。 次の 2 つの方法のいずれかで SAS に署名できます。
- Microsoft Entra 資格情報を使用して作成されたキーを使用します。 Microsoft Entra の資格情報を使用して署名された SAS は、"ユーザー委任" SAS です。 ユーザー委任 SAS を作成するクライアントには、Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey アクションを含む Azure RBAC ロールを割り当てる必要があります。 詳細については、「ユーザー委任 SAS の作成」を参照してください。
- ストレージ アカウント キーを使用する。 サービス SAS とアカウント SAS は、どちらもストレージ アカウント キーを使用して署名されます。 サービス SAS を作成するクライアントには、アカウント キーへの直接アクセス権を付与するか、Microsoft.Storage/storageAccounts/listkeys/action アクセス許可を割り当てる必要があります。 詳細については、「サービス SAS の作成」または「アカウント SAS の作成」を参照してください。
注意
ユーザー委任 SAS により、ストレージ アカウント キーで署名された SAS のセキュリティが向上します。 Microsoft では、ユーザー委任 SAS を可能な限り使用することを推奨しています。 詳細については、「Shared Access Signatures (SAS) でデータの制限付きアクセスを付与する」を参照してください。
この記事では、ストレージ アカウント キーを使用して、JavaScript 用の Blob Storage クライアント ライブラリでコンテナーまたは BLOB のサービス SAS を作成する方法を示します。
BLOB コンテナーのサービス SAS を作成する
次のコード例では、コンテナーに SAS を作成します。 既存の保存されているアクセス ポリシーの名前が指定されている場合、そのポリシーは、SAS に関連付けられます。 保存されているアクセス ポリシーがない場合、コードは、アドホック SAS をコンテナーに作成します。
サービス SAS は、アカウント アクセス キーを使用して署名されます。 SAS の署名に使用される資格情報を作成するには、StorageSharedKeyCredential クラスを使用します。 次に、generateBlobSASQueryParameters 関数を呼び出して、SAS トークン文字列を取得するために必要なパラメーターを指定します。
// Create a service SAS for a blob container
function getContainerSasUri(containerClient, sharedKeyCredential, storedPolicyName) {
const sasOptions = {
containerName: containerClient.containerName,
permissions: ContainerSASPermissions.parse("c")
};
if (storedPolicyName == null) {
sasOptions.startsOn = new Date();
sasOptions.expiresOn = new Date(new Date().valueOf() + 3600 * 1000);
} else {
sasOptions.identifier = storedPolicyName;
}
const sasToken = generateBlobSASQueryParameters(sasOptions, sharedKeyCredential).toString();
console.log(`SAS token for blob container is: ${sasToken}`);
return `${containerClient.url}?${sasToken}`;
}
BLOB のサービス SAS を作成する
次のコード例では、BLOB に SAS を作成します。 既存の保存されているアクセス ポリシーの名前が指定されている場合、そのポリシーは、SAS に関連付けられます。 保存されているアクセス ポリシーがない場合、コードは、アドホック SAS を BLOB に作成します。
BLOB のサービス SAS を作成するには、必要なパラメーターを指定して generateBlobSASQueryParameters 関数を呼び出します。
// Create a service SAS for a blob
function getBlobSasUri(containerClient, blobName, sharedKeyCredential, storedPolicyName) {
const sasOptions = {
containerName: containerClient.containerName,
blobName: blobName
};
if (storedPolicyName == null) {
sasOptions.startsOn = new Date();
sasOptions.expiresOn = new Date(new Date().valueOf() + 3600 * 1000);
sasOptions.permissions = BlobSASPermissions.parse("r");
} else {
sasOptions.identifier = storedPolicyName;
}
const sasToken = generateBlobSASQueryParameters(sasOptions, sharedKeyCredential).toString();
console.log(`SAS token for blob is: ${sasToken}`);
return `${containerClient.getBlockBlobClient(blobName).url}?${sasToken}`;
}
JavaScript で開発するためのリソース
次のリンクからは、JavaScript 用の Azure Storage クライアント ライブラリを使用する開発者にとって役立つリソースが提供されます。