SAS tanımı oluştur ve paylaşılan erişim imza belirteçlerini kodda getir
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 üzerinde üstün güvenlik ve kullanım kolaylığı sağlamak üzere depolama hesabınızı güvenli hale getirmek için Azure rol tabanlı erişim denetimi (Azure RBAC) kullanmanızı öneririz.
Bu makalede bir SAS tanımı oluşturan ve SAS belirteçlerini getiren .NET kodu örnekleri sağlanmaktadır. Key Vault yönetilen depolama hesapları için oluşturulan istemci dahil olmak üzere, tüm ayrıntılar için bkz. sharelink örneğimize bakın. SAS belirteçlerini oluşturma ve depolama hakkında daha fazla bilgi için bkz. Key Vault ve Azure CLI ile depolama hesabı anahtarlarını yönetme veya Key Vault ve Azure PowerShell depolama hesabı anahtarlarını yönetme.
Kod örnekleri
Aşağıdaki örnekte 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, şunu kullanarak bir SAS tanımı oluşturuyoruz
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 gizli dizileri gibi SAS belirteçlerini alabilirsiniz SecretClient . Gizli adı, depolama hesabı adı ile izleyen bir tire ile önyüklemeniz 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 imza belirtecinizin kullanım süreleri dolarsa, yeni bir tane oluşturmak için aynı parolayı yeniden getirebilirsiniz.
Azure Depolama hizmetlerine erişmek için Key Vault SAS belirtecinden alınan kullanımı hakkında kılavuz için bkz. bir hesap sas kullanarak Blob hizmetine erişim
Not
bir anahtarın tehlikeye girdiği ve normal döndürme süresinden daha hızlı dönebilmeniz için, uygulamanızın Depolama bir 403 alırsa, SAS 'yi yenilemek için hazırlanması gerekir.