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

Úč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

K zabezpečení účtu úložiště doporučujeme použít řízení přístupu na základě role v Azure (Azure RBAC) pro zajištění špičkového zabezpečení a snadného používání prostřednictvím autorizace pomocí sdíleného klíče.

Tento článek obsahuje ukázky kódu .NET, který vytvoří definici SAS a načte tokeny SAS. Úplné podrobnosti, včetně vygenerovaného klienta pro účty úložiště spravované Key Vault, najdete v naší ukázce ShareLink. Informace o vytváření a ukládání tokenů 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 pomocí načíst tokeny SAS, jako jsou tajné kódy SecretClient. Před název tajného kódu musíte zadat 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 platnost tokenu sdíleného přístupového podpisu brzy vyprší, můžete znovu načíst stejný tajný kód a vygenerovat nový.

Průvodce používáním tokenu SAS načteného z Key Vault pro přístup ke službám Azure Storage najdete v tématu Použití SAS účtu pro přístup ke službě Blob Service.

Poznámka

Vaše aplikace musí být připravená na aktualizaci SAS, pokud získá ze služby Storage kód 403, abyste mohli vyřešit případ, kdy dojde k ohrožení zabezpečení klíče a potřebujete ho obměňovat rychleji, než je normální období obměna.

Další kroky