You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Go代码根据存储账户名称等参数获取Azure存储账户密钥

实现思路
  • az storage account keys list本质是调用Azure资源管理器(ARM)的存储账户管理接口,属于控制平面接口,不需要提前持有存储账户密钥,只需调用身份具有目标存储账户的Microsoft.Storage/storageAccounts/listKeys/action权限即可(存储账户参与者、订阅参与者等默认角色均包含该权限)。
  • Go语言实现依赖Azure官方的ARM存储管理SDK和身份认证SDK,不需要自行封装API请求。其中azidentity包提供和Azure CLI对齐的默认认证逻辑,支持Azure CLI登录身份、托管身份、服务主体等多种认证方式,无需额外配置即可适配不同运行环境。
  • 核心流程:初始化Azure AD身份凭据 -> 初始化存储账户管理客户端 -> 调用ListKeys方法传入资源组、存储账户名 -> 解析返回结果获取存储账户访问密钥。
依赖安装

执行如下命令安装所需依赖:

go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
go get github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage
完整示例代码
package main

import (
	"context"
	"log"

	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage"
)

func main() {
	// 替换为实际参数
	subscriptionID := "你的Azure订阅ID"
	resourceGroupName := "存储账户所属资源组名"
	storageAccountName := "目标存储账户名"

	// 初始化默认凭据,优先级读取:环境变量服务主体配置 > 本地Azure CLI登录身份 > 云服务托管身份
	cred, err := azidentity.NewDefaultAzureCredential(nil)
	if err != nil {
		log.Fatalf("初始化身份凭据失败: %v", err)
	}

	// 初始化存储账户管理客户端
	accountClient, err := armstorage.NewAccountsClient(subscriptionID, cred, nil)
	if err != nil {
		log.Fatalf("初始化存储账户管理客户端失败: %v", err)
	}

	// 调用接口获取密钥
	keyResp, err := accountClient.ListKeys(context.TODO(), resourceGroupName, storageAccountName, nil)
	if err != nil {
		log.Fatalf("拉取存储账户密钥失败: %v", err)
	}

	// 输出密钥
	log.Println("存储账户访问密钥如下:")
	for idx, key := range keyResp.Keys {
		if key.KeyName != nil && key.Value != nil {
			log.Printf("密钥%d | 名称: %s | 值: %s", idx+1, *key.KeyName, *key.Value)
		}
	}
}
使用说明
  • 本地调试时执行az login登录对应Azure租户即可直接运行,无需额外配置身份信息。
  • 在Azure云服务(VM、函数应用、容器应用等)运行时,给服务分配系统托管身份并授予对应存储账户的列表密钥权限,代码无需修改即可自动获取身份运行。
  • 拿到密钥后即可初始化存储数据平面客户端,执行Blob、文件存储等相关操作。

内容的提问来源于stack exchange,提问作者Neel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:24:03