Tworzenie sygnatury dostępu współdzielonego usługi dla kontenera lub obiektu blob za pomocą języka JavaScript
Sygnatura dostępu współdzielonego (SAS) umożliwia udzielanie ograniczonego dostępu do kontenerów i obiektów blob na koncie magazynu. Podczas tworzenia sygnatury dostępu współdzielonego określasz jego ograniczenia, w tym zasoby usługi Azure Storage, do których może uzyskiwać dostęp klient, jakie uprawnienia mają w tych zasobach i jak długo sygnatura dostępu współdzielonego jest prawidłowa.
Każda sygnatura dostępu współdzielonego jest podpisana przy użyciu klucza. Sygnaturę dostępu współdzielonego można podpisać na jeden z dwóch sposobów:
- Za pomocą klucza utworzonego przy użyciu poświadczeń firmy Microsoft Entra. Sygnatura dostępu współdzielonego podpisana przy użyciu poświadczeń usługi Microsoft Entra to sygnatura dostępu współdzielonego delegowania użytkownika. Klient, który tworzy sygnaturę dostępu współdzielonego delegowania użytkownika, musi mieć przypisaną rolę RBAC platformy Azure obejmującą akcję Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey . Aby dowiedzieć się więcej, zobacz Tworzenie sygnatury dostępu współdzielonego delegowania użytkownika.
- Przy użyciu klucza konta magazynu. Sygnatura dostępu współdzielonego usługi i sygnatura dostępu współdzielonego konta są podpisane przy użyciu klucza konta magazynu. Klient tworzący sygnaturę dostępu współdzielonego usługi musi mieć bezpośredni dostęp do klucza konta lub mieć przypisane uprawnienie Microsoft.Storage/storageAccounts/listkeys/action . Aby dowiedzieć się więcej, zobacz Tworzenie sygnatury dostępu współdzielonego usługi lub Tworzenie sygnatury dostępu współdzielonego konta.
Uwaga
Sygnatura dostępu współdzielonego delegowania użytkownika zapewnia doskonałe zabezpieczenia sygnatury dostępu współdzielonego podpisanej przy użyciu klucza konta magazynu. Firma Microsoft zaleca używanie sygnatury dostępu współdzielonego delegowania użytkowników, jeśli jest to możliwe. Aby uzyskać więcej informacji, zobacz Udzielanie ograniczonego dostępu do danych za pomocą sygnatur dostępu współdzielonego (SAS).
W tym artykule pokazano, jak za pomocą klucza konta magazynu utworzyć sygnaturę dostępu współdzielonego usługi dla kontenera lub obiektu blob z biblioteką klienta usługi Blob Storage dla języka JavaScript.
Tworzenie sygnatury dostępu współdzielonego usługi dla kontenera obiektów blob
Poniższy przykład kodu tworzy sygnaturę dostępu współdzielonego dla kontenera. Jeśli podano nazwę istniejących przechowywanych zasad dostępu, te zasady są skojarzone z sygnaturą dostępu współdzielonego. Jeśli nie podano żadnych przechowywanych zasad dostępu, kod tworzy sygnaturę dostępu współdzielonego ad hoc w kontenerze.
Sygnatura dostępu współdzielonego usługi jest podpisana przy użyciu klucza dostępu do konta. Użyj klasy StorageSharedKeyCredential, aby utworzyć poświadczenia używane do podpisywania sygnatury dostępu współdzielonego. Następnie wywołaj funkcję generateBlobSASQueryParameters , podając wymagane parametry, aby uzyskać ciąg tokenu 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}`;
}
Tworzenie sygnatury dostępu współdzielonego usługi dla obiektu blob
Poniższy przykład kodu tworzy sygnaturę dostępu współdzielonego w obiekcie blob. Jeśli podano nazwę istniejących przechowywanych zasad dostępu, te zasady są skojarzone z sygnaturą dostępu współdzielonego. Jeśli nie podano żadnych przechowywanych zasad dostępu, kod tworzy sygnaturę dostępu ad hoc w obiekcie blob.
Aby utworzyć sygnaturę dostępu współdzielonego usługi dla obiektu blob, wywołaj funkcję generateBlobSASQueryParameters , podając wymagane parametry.
// 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}`;
}
Zasoby na potrzeby programowania za pomocą języka JavaScript
Poniższe linki zawierają przydatne zasoby dla deweloperów korzystających z biblioteki klienta usługi Azure Storage dla języka JavaScript
Interfejsy API usługi Blob Storage
- Biblioteka klienta obiektów blob usługi Azure Storage dla języka JavaScript
- Kod źródłowy biblioteki
- Pakiet (npm)
- Dokumentacja referencyjna interfejsu API