使用 mamori 在 Go 中实现自我协调的 Azure ... 笔记

使用 mamori 在 Go 中实现自我协调的 Azure Key Vault 密钥

Azure Key Vault 是 Azure 密钥世界中的模范公民:每个密钥均支持版本控制;提供软删除和清理保护;访问权限由 RBAC 或访问策略管理;DefaultAzureCredential 使得您的应用程序在本地(az login)和生产环境(AKS 上的托管身份/工作负载身份)中采用完全相同的认证方式,且无需任何代码修改。然而,同样的老问题依然存在。您的 Go 服务在启动时调用一次 GetSecret,将值解码为结构体,并在整个进程生命周期中将其视为不可变数据。当有人在 Key Vault 中轮换密钥时(生成新版本并禁用旧版本),您的服务对此一无所知。它会继续使用启动时读取的值,直到下一次部署或 Pod 重启。这种轮换在 Azure 侧是无缝的,但对应用程序而言却完全不可见——这正是最糟糕的组合。