AKS与External-Secrets-Operator集成Azure Key Vault认证问题
问题分析与解决方案
错误核心是托管身份无法被Azure元数据服务识别,返回Identity not found,导致无法获取访问Key Vault的令牌。以下是针对性排查和修复步骤:
1. 核对托管身份配置准确性
- 检查SecretStore中填写的Principal ID:
- 登录Azure门户找到对应托管身份,复制其「对象ID」(即Principal ID),确保与SecretStore配置里的
spec.provider.azure.authManagedIdentity.clientID字段值完全匹配,不要误填订阅ID或资源ID。
- 登录Azure门户找到对应托管身份,复制其「对象ID」(即Principal ID),确保与SecretStore配置里的
- 若使用用户分配托管身份:
- 确认已将该身份分配给AKS集群的节点池,或绑定到ESO所属的服务账户(若采用Pod身份模式)。
- 检查AKS节点对应的VM/VMSS是否启用托管身份,且已关联该用户分配身份。
2. 测试元数据服务与身份可用性
- 在ESO的Pod内执行命令测试身份令牌获取:
curl "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&client_id=<你的Principal ID>&resource=https://vault.azure.net" -H "Metadata: true"- 若同样返回
Identity not found,说明当前Pod所在节点未关联目标托管身份,需重新配置AKS身份绑定。 - 若成功返回令牌,说明身份配置正常,问题可能出在SecretStore格式或Key Vault权限。
- 若同样返回
3. 检查Key Vault访问策略
- 确保托管身份在Key Vault的访问策略中拥有机密权限-获取(Get):
- 进入目标Key Vault → 访问策略 → 添加访问策略,选择对应托管身份,勾选「机密权限」下的
Get,保存配置。
- 进入目标Key Vault → 访问策略 → 添加访问策略,选择对应托管身份,勾选「机密权限」下的
4. 验证ESO配置格式合规性
- 针对ESO v0.4.3,确保SecretStore的托管身份配置格式正确,示例如下:
apiVersion: external-secrets.io/v1beta1 kind: SecretStore metadata: name: azure-kv-store spec: provider: azure: vaultUrl: "https://my.vault.azure.net" authManagedIdentity: clientID: "你的Principal ID" # 此处填写托管身份的对象ID
内容的提问来源于stack exchange,提问作者niko gher
相关产品推荐
相关产品推荐

