Een service-SAS maken voor een container of blob met Java
Met een Shared Access Signature (SAS) kunt u beperkte toegang verlenen tot containers en blobs in uw opslagaccount. Wanneer u een SAS maakt, geeft u de beperkingen op, waaronder welke Azure Storage-resources een client mag openen, welke machtigingen ze hebben voor deze resources en hoe lang de SAS geldig is.
Elke SAS is ondertekend met een sleutel. U kunt een SAS op twee manieren ondertekenen:
- Met een sleutel die is gemaakt met behulp van Microsoft Entra-referenties. Een SAS die is ondertekend met Microsoft Entra-referenties is een SAS voor gebruikersdelegatie . Aan een client die een SAS voor gebruikersdelegering maakt, moet een Azure RBAC-rol worden toegewezen die de actie Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey bevat. Zie Een SAS voor gebruikersdelegatie maken voor meer informatie.
- Met de sleutel van het opslagaccount. Zowel een service-SAS als een account-SAS zijn ondertekend met de sleutel van het opslagaccount. De client die een service-SAS maakt, moet directe toegang hebben tot de accountsleutel of de machtiging Microsoft.Storage/storageAccounts/listkeys/action toewijzen. Zie Een service-SAS maken of Een account-SAS maken voor meer informatie.
Notitie
Een SAS voor gebruikersdelegering biedt superieure beveiliging voor een SAS die is ondertekend met de sleutel van het opslagaccount. Microsoft raadt het gebruik van een SAS voor gebruikersdelegering aan, indien mogelijk. Zie Beperkte toegang verlenen tot gegevens met Shared Access Signatures (SAS) voor meer informatie.
In dit artikel wordt beschreven hoe u de sleutel van het opslagaccount gebruikt om een service-SAS te maken voor een container of blob met de Blob Storage-clientbibliotheek voor Java.
Over de service-SAS
Een service-SAS is ondertekend met de toegangssleutel voor het account. U kunt de klasse StorageSharedKeyCredential gebruiken om de referentie te maken die wordt gebruikt om de service-SAS te ondertekenen.
U kunt ook een opgeslagen toegangsbeleid gebruiken om de machtigingen en duur van de SAS te definiƫren. Als de naam van een bestaand opgeslagen toegangsbeleid wordt opgegeven, is dat beleid gekoppeld aan de SAS. Zie Een opgeslagen toegangsbeleid definiƫren voor meer informatie over opgeslagen toegangsbeleid. Als er geen opgeslagen toegangsbeleid is opgegeven, ziet u in de codevoorbeelden in dit artikel hoe u machtigingen en duur voor de SAS definieert.
Een service-SAS maken
U kunt een service-SAS maken voor een container of blob, op basis van de behoeften van uw app.
U kunt een service-SAS maken om beperkte toegang tot een containerresource te delegeren met behulp van de volgende methode:
SAS-handtekeningwaarden, zoals verlooptijd en ondertekende machtigingen, worden doorgegeven aan de methode als onderdeel van een BlobServiceSasSignatureValues-exemplaar . Machtigingen worden opgegeven als een BlobContainerSasPermission-exemplaar .
In het volgende codevoorbeeld ziet u hoe u een service-SAS maakt met leesmachtigingen voor een containerresource:
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;
}
Een service-SAS gebruiken om een clientobject te autoriseren
U kunt een service-SAS gebruiken om een clientobject te autoriseren om bewerkingen uit te voeren op een container of blob op basis van de machtigingen die zijn verleend door de SAS.
In de volgende codevoorbeelden ziet u hoe u de SERVICE-SAS gebruikt om een BlobContainerClient-object te autoriseren. Dit clientobject kan worden gebruikt om bewerkingen uit te voeren op de containerresource op basis van de machtigingen die zijn verleend door de SAS.
Maak eerst een BlobServiceClient-object dat is ondertekend met de toegangssleutel van het account:
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();
Genereer vervolgens de service-SAS, zoals wordt weergegeven in het eerdere voorbeeld en gebruik de SAS om een BlobContainerClient-object te autoriseren:
// 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();
Resources
Zie de volgende resources voor meer informatie over het gebruik van de Azure Blob Storage-clientbibliotheek voor Java.