SAS-definíció létrehozása és közös hozzáférésű jogosultságkód-jogkivonatok lekérése kódban (örökölt)
A tárfiókot a kulcstartóban tárolt közös hozzáférésű jogosultságkód (SAS) jogkivonatokkal kezelheti. További információ: Korlátozott hozzáférés biztosítása az Azure Storage-erőforrásokhoz SAS használatával.
Megjegyzés
Javasoljuk , hogy azure-beli szerepköralapú hozzáférés-vezérlést (Azure RBAC) használjon a tárfiók védelméhez a kiemelt biztonság és a megosztott kulcsok engedélyezésének egyszerű használata érdekében.
Ez a cikk olyan .NET-kódmintákat tartalmaz, amelyek létrehoznak egy SAS-definíciót, és lekérik az SAS-jogkivonatokat. A ShareLink-minta teljes körű információkat tartalmaz, beleértve a Key Vault felügyelt tárfiókokhoz létrehozott ügyfelet is. Az SAS-jogkivonatok létrehozásáról és tárolásáról további információt a Tárfiókkulcsok kezelése Key Vault és az Azure CLI vagy aTárfiókkulcsok kezelése Key Vault és Azure PowerShell című témakörben talál.
Kódminták
A következő példában létrehozunk egy SAS-sablont:
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();
Ezzel a sablonnal sas-definíciót hozhatunk létre a
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);
Az SAS-definíció létrehozása után lekérheti az SAS-jogkivonatokat, például a titkos kulcsokat egy SecretClient
paranccsal. A titkos kód nevét a tárfiók nevével, majd egy kötőjellel kell előszűrnie:
// 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);
Ha a közös hozzáférésű jogosultságkód-jogkivonat hamarosan lejár, újból lekérheti ugyanazt a titkos kulcsot egy új létrehozásához.
A Key Vault SAS-jogkivonatból lekért azure storage-szolgáltatások elérésére vonatkozó útmutatóért lásd: Fiók SAS használata blobszolgáltatáshoz való hozzáféréshez
Megjegyzés
Az alkalmazásnak készen kell állnia az SAS frissítésére, ha 403-at kap a Storage-ból, hogy kezelni tudja azt az esetet, amikor egy kulcs sérült, és gyorsabban kell elforgatnia őket, mint a normál forgatási időszak.
Következő lépések
- Megtudhatja, hogyan biztosíthat korlátozott hozzáférést az Azure Storage-erőforrásokhoz SAS használatával.
- Megtudhatja, hogyan kezelheti a tárfiókkulcsokat Key Vault és az Azure CLI-vel vagy Azure PowerShell.
- Lásd: Felügyelt tárfiók kulcsmintái