Sas-definitie maken en tokens voor shared access signature ophalen in code (verouderd)

U kunt uw opslagaccount met SAS-tokens (Shared Access Signature) beheren die zijn opgeslagen in uw sleutelkluis. Zie Beperkte toegang verlenen tot Azure Storage-resources via SAS voor meer informatie.

Notitie

U kunt het beste Op rollen gebaseerd toegangsbeheer (Azure RBAC) gebruiken om uw opslagaccount te beveiligen voor betere beveiliging en het gebruiksgemak van gedeelde-sleutelverificatie.

In dit artikel vindt u voorbeelden van .NET-code waarmee een SAS-definitie wordt gemaakt en SAS-tokens worden opgehaald. Bekijk ons ShareLink-voorbeeld voor volledige informatie, inclusief de gegenereerde client voor met Key Vault beheerde opslagaccounts. Voor informatie over het maken en opslaan van SAS-tokens, raadpleegt u Sleutels voor opslagaccounts beheren met Key Vault en de Azure CLI of Sleutels voor opslagaccounts beheren met Key Vault en Azure PowerShell.

Codevoorbeelden

In het volgende voorbeeld maken we een SAS-sjabloon:

private static string BuildSasDefinitionTemplate(bool readOnly) =>
    new StringBuilder("sv=2018-03-28")  // service version
        .Append("&spr=https")           // HTTPS only
        .Append("&ss=bf")               // blobs and files only
        .Append("&srt=o")               // applies to objects only
        .Append(readOnly ? "&sp=r" : "&sp=rw")  // read-only or read-write
        .ToString();

Met deze sjabloon kunnen we een SAS-definitie maken met behulp van

string sasDefinitionName = BuildSasDefinitionName(Tag, readOnly, duration);
SasDefinitionAttributes sasDefinitionAttributes = new SasDefinitionAttributes
{
    Enabled = true,
};

Dictionary<string, string> tags = new Dictionary<string, string>
{
    [Tag] = "1",
};

SasDefinitionBundle createdSasDefinition = await storageClient.SetSasDefinitionAsync(
    storageAccountName,
    sasDefinitionName,
    sasTemplate,
    SasTokenType.Account,
    duration,
    sasDefinitionAttributes,
    tags,
    s_cancellationTokenSource.Token);

Nadat de SAS-definitie is gemaakt, kunt u SAS-tokens zoals geheimen ophalen met behulp van een SecretClient. De geheime naam moet vooraf worden gegaan door de naam van het opslagaccount, gevolgd door een streepje:

// Build our SAS template, get an existing SAS definition, or create a new one.
string sasTemplate = BuildSasDefinitionTemplate(readOnly);
string sasDefinitionName = await GetOrCreateSasDefinitionAsync(storageClient, storageAccountName, sasTemplate, days, readOnly);

// Now we can create a SecretClient and generate a new SAS token from the storage account and SAS definition names.
SecretClient secretClient = new SecretClient(vaultUri, credential, options);
KeyVaultSecret sasToken = await secretClient.GetSecretAsync($"{storageAccountName}-{sasDefinitionName}", cancellationToken: s_cancellationTokenSource.Token);

Als uw handtekeningtoken voor gedeelde toegang bijna is verlopen, kunt u hetzelfde geheim nogmaals ophalen om een nieuw token te genereren.

Voor meer informatie over hoe u SAS-tokens uit de Key Vault gebruikt om Azure Storage-services te openen, raadpleegt u Een account-SAS gebruiken voor toegang tot de Blob service

Notitie

Uw app moet worden voorbereid om de SAS te vernieuwen als deze een 403 vanuit Storage ontvangt, zodat u een inbreuk op een sleutel kunt afhandelen waardoor een snellere rotatie nodig is dan de normale rotatieperiode.

Volgende stappen