Как повернуть ключ доступа к учетной записи хранения Azure из кода C#?
У меня есть учетная запись хранения Azure. С ним связано несколько ключей доступа. В веб-интерфейсе Azure эти ключи можно «повернуть».
Их также можно повернуть из командной строки, используя (я считаю)
az storage account keys renew
.
Я хотел бы повернуть эти ключи из кода C #. У меня проблемы с поиском подходящего объекта, который позволяет мне это делать.
Я знаю пакеты NuGet, такие как Azure.Storage.Blobs и Microsoft.Azure.Cosmos.Table . Есть ли какой-либо класс в любом пакете NuGet одного из этих семейств, который имеет функцию, которая позволяет мне чередовать / обновлять / восстанавливать эти ключи доступа к учетной записи хранения?
Заранее спасибо!
1 ответ
Пакет Nuget, который вы хотели бы использовать, это Azure.ResourceManager.Storage
. Как только вы создадите / получите экземплярStorageAccount
, вам нужно будет позвонить RegenerateKeyAsync
метод регенерации ключа.
Вот пример кода, взятый из here
:
public async Task StorageAccountRegenerateKey()
{
Sanitizer.AddJsonPathSanitizer("$.keys.[*].value");
//create storage account and get keys
string accountName = await CreateValidAccountNameAsync(namePrefix);
_resourceGroup = await CreateResourceGroupAsync();
StorageAccountCollection storageAccountCollection = _resourceGroup.GetStorageAccounts();
StorageAccount account1 = (await storageAccountCollection.CreateOrUpdateAsync(accountName, GetDefaultStorageAccountParameters())).Value;
VerifyAccountProperties(account1, true);
StorageAccountListKeysResult keys = await account1.GetKeysAsync();
Assert.NotNull(keys);
StorageAccountKey key2 = keys.Keys.First(
t => StringComparer.OrdinalIgnoreCase.Equals(t.KeyName, "key2"));
Assert.NotNull(key2);
//regenerate key and verify the key's change
StorageAccountRegenerateKeyParameters keyParameters = new StorageAccountRegenerateKeyParameters("key2");
StorageAccountListKeysResult regenKeys = await account1.RegenerateKeyAsync(keyParameters);
StorageAccountKey regenKey2 = regenKeys.Keys.First(
t => StringComparer.OrdinalIgnoreCase.Equals(t.KeyName, "key2"));
Assert.NotNull(regenKey2);
//validate the key is different from origin one
if (Mode != RecordedTestMode.Playback)
{
Assert.AreNotEqual(key2.Value, regenKey2.Value);
}
}