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

Golang OCI函数调用GetSecretBundle返回404未授权,求排查建议

OCI Golang函数拉取密钥404未授权问题排查

对判断的认同

认同你的判断。既然你已经通过相同的ResourcePrincipalConfigurationProvider成功实现了 compartments 列表查询,说明资源主体认证机制本身是正常工作的,404未授权错误大概率出在权限配置环节。

具体排查建议

  • 核对密钥OCID准确性:确认拉取密钥时使用的OCID完全正确,注意区分Vault OCID、密钥OCID和密钥版本OCID(获取密钥内容需使用密钥版本OCID),OCI OCID大小写敏感,避免字符输入错误。
  • 验证权限策略配置:
    • 检查函数所属动态组的权限策略,确保包含secrets:GetSecretBundle权限,且策略的资源范围覆盖目标密钥所在的Compartment或具体密钥资源,例如策略语句可设置为:Allow dynamic-group <你的动态组名称> to read secret-bundles in compartment <目标Compartment名称> where target.secret.id = '<密钥OCID>'
    • 确认策略已生效(OCI策略通常几分钟内生效),且策略的Compartment范围未限制过窄(比如密钥在子Compartment,但策略仅覆盖父Compartment)。
  • 检查密钥状态与动态组绑定:
    • 在OCI控制台的Vault服务中确认目标密钥处于ACTIVE状态,未被禁用或删除。
    • 确认函数已正确加入对应动态组,动态组的匹配规则(如基于函数OCID或Compartment)准确无误——资源主体的权限依赖动态组绑定的策略,若函数不在动态组内,权限配置无效。
  • 利用OCI策略模拟器验证:
    • 在代码中添加日志输出资源主体的租户ID、资源主体ID,然后在OCI控制台的策略模拟器中,模拟该身份对目标密钥执行secrets:GetSecretBundle操作,直接验证权限是否允许。
  • 确认区域配置正确性:
    • 检查SecretsClient是否设置了正确的区域,OCI资源为区域级,若函数所在区域与密钥所在区域不一致,会触发404错误。可通过secretsClient.SetRegion("<目标区域代码>")显式指定区域。

附你提供的创建SecretsClient代码

func createSecretsClient()  (client SecretsClient, err error) {
   
    provider, err := auth.ResourcePrincipalConfigurationProvider()
    
    if err != nil {
        panic(err)
    }
    secretsClient, err := secrets.NewSecretsClientWithConfigurationProvider(provider)
    if err != nil {
        panic(err)
    }
    return secretsClient
    
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 19:22:39