Как повернуть ключ доступа к учетной записи хранения 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);
    }
}
Другие вопросы по тегам