Vytvoření definice SAS a načtení tokenů sdíleného přístupového podpisu v kódu

Svůj účet úložiště můžete spravovat pomocí tokenů sdíleného přístupového podpisu (SAS) uložených v trezoru klíčů. další informace najdete v tématu udělení omezeného přístupu k prostředkům Azure Storage pomocí SAS.

Poznámka

Doporučujeme použít řízení přístupu na základě role Azure (Azure RBAC) k zabezpečení vašeho účtu úložiště za účelem zajištění vysokého zabezpečení a snadného použití při autorizaci pomocí sdíleného klíče.

Tento článek poskytuje ukázky kódu .NET, který vytváří definici SAS a načítá tokeny SAS. Úplné podrobnosti najdete v našem příkladu ShareLink , včetně vygenerovaného klienta pro účty úložiště spravované Key Vault. Informace o tom, jak vytvářet a ukládat tokeny SAS, najdete v tématech Správa klíčů účtu úložiště pomocí Key Vault a Azure CLI nebo Správa klíčů účtu úložiště pomocí Key Vault a Azure PowerShell.

Ukázky kódů

V následujícím příkladu vytvoříme šablonu SAS:

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();

Pomocí této šablony můžeme vytvořit definici SAS pomocí

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);

Po vytvoření definice SAS můžete načíst tokeny SAS jako tajné klíče pomocí SecretClient . Název tajného klíče musí být název účtu úložiště následovaný pomlčkou:

// 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);

Pokud se brzo vyprší platnost tokenu sdíleného přístupového podpisu, můžete znovu načíst stejný tajný klíč, abyste vygenerovali nový.

návod, jak použít načtený z Key Vault token SAS pro přístup ke službám Azure Storage, najdete v tématu použití SAS účtu pro přístup k Blob service

Poznámka

vaše aplikace musí být připravená na aktualizaci SAS, pokud získá 403 od Storage, abyste mohli zpracovat případ, kdy byl klíč napadený, a potřebujete ho otočit rychleji než normální období rotace.

Další kroky