Skapa en tjänst-SAS för en container eller blob med Java
Med en signatur för delad åtkomst (SAS) kan du bevilja begränsad åtkomst till containrar och blobar i ditt lagringskonto. När du skapar en SAS anger du dess begränsningar, inklusive vilka Azure Storage-resurser en klient har åtkomst till, vilka behörigheter de har för dessa resurser och hur länge SAS är giltigt.
Varje SAS signeras med en nyckel. Du kan signera en SAS på något av två sätt:
- Med en nyckel som skapats med Microsoft Entra-autentiseringsuppgifter. En SAS som är signerad med Microsoft Entra-autentiseringsuppgifter är en SAS för användardelegering . En klient som skapar en SAS för användardelegering måste tilldelas en Azure RBAC-roll som innehåller åtgärden Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey . Mer information finns i Skapa en SAS för användardelegering.
- Med lagringskontonyckeln. Både en tjänst-SAS och ett sas-konto signeras med lagringskontonyckeln. Klienten som skapar en tjänst-SAS måste antingen ha direkt åtkomst till kontonyckeln eller tilldelas behörigheten Microsoft.Storage/storageAccounts/listkeys/action . Mer information finns i Skapa en tjänst-SAS eller Skapa ett konto-SAS.
Kommentar
En SAS för användardelegering ger överlägsen säkerhet till en SAS som är signerad med lagringskontonyckeln. Microsoft rekommenderar att du använder en SAS för användardelegering när det är möjligt. Mer information finns i Bevilja begränsad åtkomst till data med signaturer för delad åtkomst (SAS).
Den här artikeln visar hur du använder lagringskontonyckeln för att skapa en tjänst-SAS för en container eller blob med Blob Storage-klientbiblioteket för Java.
Om tjänsten SAS
En tjänst-SAS signeras med kontoåtkomstnyckeln. Du kan använda klassen StorageSharedKeyCredential för att skapa autentiseringsuppgifterna som används för att signera tjänstens SAS.
Du kan också använda en lagrad åtkomstprincip för att definiera behörigheter och varaktighet för SAS. Om namnet på en befintlig lagrad åtkomstprincip anges associeras den principen med SAS. Mer information om lagrade åtkomstprinciper finns i Definiera en lagrad åtkomstprincip. Om ingen lagrad åtkomstprincip anges visar kodexemplen i den här artikeln hur du definierar behörigheter och varaktighet för SAS.
Skapa en tjänst-SAS
Du kan skapa en tjänst-SAS för en container eller blob baserat på appens behov.
Du kan skapa en tjänst-SAS för att delegera begränsad åtkomst till en containerresurs med hjälp av följande metod:
SAS-signaturvärden, till exempel förfallotid och signerade behörigheter, skickas till metoden som en del av en BlobServiceSasSignatureValues-instans . Behörigheter anges som en BlobContainerSasPermission-instans .
I följande kodexempel visas hur du skapar en tjänst-SAS med läsbehörighet för en containerresurs:
public String createServiceSASContainer(BlobContainerClient containerClient) {
// Create a SAS token that's valid for 1 day, as an example
OffsetDateTime expiryTime = OffsetDateTime.now().plusDays(1);
// Assign read permissions to the SAS token
BlobContainerSasPermission sasPermission = new BlobContainerSasPermission()
.setReadPermission(true);
BlobServiceSasSignatureValues sasSignatureValues = new BlobServiceSasSignatureValues(expiryTime, sasPermission)
.setStartTime(OffsetDateTime.now().minusMinutes(5));
String sasToken = containerClient.generateSas(sasSignatureValues);
return sasToken;
}
Använda en tjänst-SAS för att auktorisera ett klientobjekt
Du kan använda en tjänst-SAS för att auktorisera ett klientobjekt för att utföra åtgärder på en container eller blob baserat på de behörigheter som beviljas av SAS.
Följande kodexempel visar hur du använder tjänsten SAS för att auktorisera ett BlobContainerClient-objekt . Det här klientobjektet kan användas för att utföra åtgärder på containerresursen baserat på de behörigheter som beviljas av SAS.
Skapa först ett BlobServiceClient-objekt signerat med kontoåtkomstnyckeln:
String accountName = "<account-name>";
String accountKey = "<account-key>";
StorageSharedKeyCredential credential = new StorageSharedKeyCredential(accountName, accountKey);
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
.endpoint(String.format("https://%s.blob.core.windows.net/", accountName))
.credential(credential)
.buildClient();
Generera sedan tjänsten SAS enligt föregående exempel och använd SAS för att auktorisera ett BlobContainerClient-objekt :
// Create a SAS token
BlobContainerClient containerClient = blobServiceClient
.getBlobContainerClient("sample-container");
String sasToken = createServiceSASContainer(containerClient);
// Create a new BlobContainerClient using the SAS token
BlobContainerClient sasContainerClient = new BlobContainerClientBuilder()
.endpoint(containerClient.getBlobContainerUrl())
.sasToken(sasToken)
.buildClient();
Resurser
Mer information om hur du använder Azure Blob Storage-klientbiblioteket för Java finns i följande resurser.
Kodexempel
Klientbiblioteksresurser
Se även
- Grant limited access to Azure Storage resources using shared access signatures (SAS) (Bevilja begränsad åtkomst till Azure Storage-resurser med hjälp av signaturer för delad åtkomst (SAS))
- Skapa en tjänst-SAS