JavaScript를 사용하여 컨테이너 또는 Blob에 대한 서비스 SAS 만들기
SAS(공유 액세스 서명)를 사용하면 스토리지 계정의 컨테이너 및 Blob에 대한 제한된 액세스 권한을 부여할 수 있습니다. SAS를 만들 때 클라이언트에서 액세스할 수 있는 Azure Storage 리소스, 해당 리소스에 대한 사용 권한, SAS의 유효 기간 등의 해당 제약 조건을 지정합니다.
모든 SAS는 키로 서명됩니다. 다음 두 가지 방법 중 하나로 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에 뛰어난 보안을 제공합니다. 가능하면 사용자 위임 SAS를 사용하는 것이 좋습니다. 자세한 내용은 SAS(공유 액세스 서명)를 사용하여 데이터에 대한 제한된 액세스 권한 부여를 참조하세요.
이 문서에서는 스토리지 계정 키를 사용하여 JavaScript에 대한 Blob Storage 클라이언트 라이브러리를 통해 컨테이너 또는 Blob에 대한 서비스 SAS를 만드는 방법을 보여 줍니다.
컨테이너 또는 Blob에 대한 서비스 SAS 만들기
다음 코드 예는 컨테이너에 SAS를 만듭니다. 기존에 저장된 액세스 정책의 이름을 제공하는 경우 해당 정책은 SAS와 연결됩니다. 저장된 액세스 정책이 제공되지 않는 경우 코드는 컨테이너에서 임시 SAS를 만듭니다.
서비스 SAS는 계정 액세스 키로 서명됩니다. StorageSharedKeyCredential 클래스를 사용하여 SAS에 서명하는 데 사용되는 자격 증명을 만듭니다. 그런 다음 SAS 토큰 문자열을 가져오는 데 필요한 매개 변수를 제공하는 generateBlobSASQueryParameters 함수를 호출합니다.
// 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와 연결됩니다. 저장된 액세스 정책이 제공되지 않는 경우 코드는 Blob에서 임시 SAS를 만듭니다.
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 클라이언트 라이브러리를 사용하는 유용한 개발자용 리소스를 제공합니다.