SAS tanımı oluşturma ve kodda paylaşılan erişim imzası belirteçlerini getirme (eski)

Depolama hesabınızı, anahtar kasanızda depolanan paylaşılan erişim imzası (SAS) belirteçleriyle yönetebilirsiniz. Daha fazla bilgi için bkz. SAS kullanarak Azure Depolama kaynaklarına sınırlı erişim verme.

Not

Paylaşılan Anahtar yetkilendirmesi üzerinden üstün güvenlik ve kullanım kolaylığı için depolama hesabınızın güvenliğini sağlamak için Azure rol tabanlı erişim denetimini (Azure RBAC) kullanmanızı öneririz.

Bu makalede SAS tanımı oluşturan ve SAS belirteçlerini getiren .NET kodu örnekleri sağlanır. Key Vault yönetilen depolama hesapları için oluşturulan istemci de dahil olmak üzere tüm ayrıntılar için ShareLink örneğimize bakın. SAS belirteçleri oluşturma ve depolama hakkında bilgi için bkz. Key Vault ve Azure CLI ile depolama hesabı anahtarlarını yönetme veya depolama hesabı anahtarlarını Key Vault ve Azure PowerShell ile yönetme.

Kod örnekleri

Aşağıdaki örnekte bir SAS şablonu oluşturacağız:

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

Bu şablonu kullanarak bir SAS tanımı oluşturabiliriz.

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

SAS tanımı oluşturulduktan sonra, kullanarak SecretClientgizli diziler gibi SAS belirteçlerini alabilirsiniz. Gizli dizi adının önüne depolama hesabı adı ve ardından bir tire eklemeniz gerekir:

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

Paylaşılan erişim imzası belirtecinizin süresi dolmak üzereyse, yeni bir gizli dizi oluşturmak için aynı gizli diziyi yeniden getirebilirsiniz.

Azure Depolama hizmetlerine erişmek için Key Vault SAS belirtecinden alınanları kullanma kılavuzu için bkz. Blob hizmetine erişmek için hesap SAS'sini kullanma

Not

Bir anahtarın güvenliğinin aşıldığı durumu işleyebilmeniz ve bunları normal döndürme süresinden daha hızlı döndürmeniz için uygulamanızın Depolama'dan 403 alırsa SAS'yi yenilemeye hazır olması gerekir.

Sonraki adımlar