Dela via


Skapa ett KONTO-SAS 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 ett konto-SAS med Azure Storage-klientbiblioteket för Java.

Om kontots SAS

Ett SAS-konto skapas på lagringskontots nivå och signeras med kontoåtkomstnyckeln. Genom att skapa ett konto-SAS kan du:

  • Delegera åtkomst till åtgärder på tjänstnivå som för närvarande inte är tillgängliga med en tjänstspecifik SAS, till exempel Hämta blobtjänstegenskaper, Ange blobtjänstegenskaper och Hämta blobtjänststatistik.
  • Delegera åtkomst till mer än en tjänst i ett lagringskonto i taget. Du kan till exempel delegera åtkomst till resurser i både Azure Blob Storage och Azure Files med hjälp av ett konto-SAS.

Lagrade åtkomstprinciper stöds inte för ett konto-SAS.

Konfigurera projektet

Om du vill arbeta med kodexemplen i den här artikeln lägger du till följande importdirektiv:

import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import com.azure.storage.blob.sas.*;
import com.azure.storage.common.sas.AccountSasPermission;
import com.azure.storage.common.sas.AccountSasResourceType;
import com.azure.storage.common.sas.AccountSasService;
import com.azure.storage.common.sas.AccountSasSignatureValues;

Skapa en konto-SAS

Du kan skapa ett SAS-konto för att delegera begränsad åtkomst till lagringskontoresurser med hjälp av följande metod:

Om du vill konfigurera signaturvärdena för kontots SAS använder du följande hjälpklasser:

  • AccountSasPermission: Representerar de behörigheter som tillåts av SAS. I vårt exempel anger vi läsbehörigheten till true.
  • AccountSasService: Representerar de tjänster som är tillgängliga för SAS. I vårt exempel tillåter vi åtkomst till Blob-tjänsten.
  • AccountSasResourceType: Representerar de resurstyper som är tillgängliga för SAS. I vårt exempel tillåter vi åtkomst till API:er på servicenivå.

När hjälpklasserna har konfigurerats kan du initiera parametrar för SAS med en AccountSasSignatureValues-instans .

Följande kodexempel visar hur du konfigurerar SAS-parametrar och anropar metoden generateAccountSas för att hämta kontots SAS:

public String createAccountSAS(BlobServiceClient blobServiceClient) {
    // Configure the SAS parameters
    OffsetDateTime expiryTime = OffsetDateTime.now().plusDays(1);
    AccountSasPermission accountSasPermission = new AccountSasPermission()
            .setReadPermission(true);
    AccountSasService services = new AccountSasService()
            .setBlobAccess(true);
    AccountSasResourceType resourceTypes = new AccountSasResourceType()
            .setService(true);

    // Generate the account SAS
    AccountSasSignatureValues accountSasValues = new AccountSasSignatureValues(
        expiryTime,
        accountSasPermission,
        services,
        resourceTypes);
    String sasToken = blobServiceClient.generateAccountSas(accountSasValues);

    return sasToken;
}

Använda ett SAS-konto från en klient

Följande kodexempel visar hur du använder kontot SAS som skapades i det tidigare exemplet för att auktorisera ett BlobServiceClient-objekt . Det här klientobjektet kan sedan användas för att komma åt API:er på tjänstnivå 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 kontots SAS enligt föregående exempel och använd SAS för att auktorisera ett BlobServiceClient-objekt :

// Create a SAS token
String sasToken = createAccountSAS(blobServiceClient);

// Create a new BlobServiceClient using the SAS token
BlobServiceClient sasServiceClient = new BlobServiceClientBuilder()
        .endpoint(blobServiceClient.getAccountUrl())
        .sasToken(sasToken)
        .buildClient();

Du kan också använda ett konto-SAS för att auktorisera och arbeta med ett BlobContainerClient-objekt eller BlobClient-objekt , om dessa resurstyper beviljas åtkomst som en del av signaturvärdena.

Resurser

Mer information om hur du skapar ett konto-SAS med hjälp av Azure Blob Storage-klientbiblioteket för Java finns i följande resurser.

Kodexempel

Klientbiblioteksresurser

Se även