首页 > 解决方案 > 使用 C# SDK 定期刷新 Azure 存储帐户密钥

问题描述

出于安全目的,我想每个月刷新我的存储帐户密钥。我浏览了 Azure 存储 SDK,但找不到任何具体的方法。

有没有可用的nuget/sdk?我也很擅长 powershell 脚本,但应该能够通过一些调度程序来执行它。

标签: c#azureazure-storageazure-blob-storage

解决方案


您可以使用带有应用注册的 Azure 管理 SDK 来执行此操作。

这正是您需要采取的步骤:

1.在此处转到 Azure 门户应用注册:https ://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps

2.点击新注册,注册一个新的APP:

在此处输入图像描述

3.为您的应用程序输入任何名称并注册它

4.在此处为您的应用创建一个新密钥: 在此处输入图像描述

5.复制秘密,我们以后会用到(不要分享或存储在源代码管理中!)

6.在 App Registration 页面上复制 CLIENT ID 和 Tenant ID,如下所示: 在此处输入图像描述

7.转到门户上的订阅并复制您的订阅 ID

8.现在转到要为其重置密钥的 blob 帐户,然后在概览中单击 JSON 视图并复制资源 ID

在此处输入图像描述 在此处输入图像描述

8b。授予对 blob 存储帐户的新应用的访问权限,您可以通过转到 blob 存储帐户上的访问控制 (IAM) 并添加新的角色分配来执行此操作。

9.在您的项目中安装以下 nuget 包:

<PackageReference Include="Microsoft.Azure.Management.Storage" Version="22.0.0" />
<PackageReference Include="Microsoft.Azure.Management.Fluent" Version="1.37.1" />

请注意,如果可用,您可以使用更高版本。

10.现在您可以使用此代码重置密钥:

using System;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Azure.Management.ResourceManager.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent.Core;

namespace AzureMng
{
    class Program
    {
        static async Task Main(string[] args)
        {
            var creds = SdkContext.AzureCredentialsFactory.FromServicePrincipal(
                "[ENTER CLIENT-ID]", 
                "[ENTER SECRET]",  
                "[ENTER TENANT ID", 
                AzureEnvironment.AzureGlobalCloud);
            var client = Microsoft.Azure.Management.Fluent.Azure.Configure()
                .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
                .Authenticate(creds)
                .WithSubscription("[ENTER YOUR SubscriptionID]");
            
            var account = client.StorageAccounts.GetById(
                "");
            var keys = await account.RegenerateKeyAsync("key1");
            Console.WriteLine(keys.FirstOrDefault().Value);
        }
    }
}

您可以在此处更改两个键或单个键。您还可以复制生成的密钥。


推荐阅读