使用Terraform API添加GPG密钥遇403错误:body namespace未授权
问题背景
已创建组织级API令牌,通过Terraform API添加GPG密钥时,请求体中namespace使用了令牌所属组织的精确名称(区分大小写),但收到403错误响应:
{ "errors": [ { "status": "403", "title": "forbidden", "detail": "body namespace not authorized" } ] }
排查与解决方案
检查API令牌权限
组织级API令牌必须具备Manage Private Registry权限(对应权限标识registry:manage)。创建令牌时需手动勾选该权限,默认组织令牌不会自动包含此权限。登录Terraform Cloud,进入组织设置的「Tokens」页面,查看目标令牌的权限配置。确认namespace的准确性
确保namespace参数使用的是组织的slug(URL短名称),而非显示名称。组织slug可从Terraform Cloud组织页面的URL中获取(例如https://app.terraform.io/app/my-org中的my-org),且严格区分大小写。验证API端点正确性
请求必须发送到对应组织的私有注册表GPG密钥端点:POST /api/v2/organizations/{organization_slug}/private-registry/gpg-keys避免使用全局端点或其他组织的端点。
检查GPG密钥有效性
确保ascii-armor字段中的公钥是完整、有效的ASCII格式PGP公钥。可通过本地命令gpg --import --dry-run <(echo "你的公钥内容")验证格式是否合法。确认组织私有注册表状态
需确保该组织已启用私有注册表功能,未启用则无法添加GPG密钥。可在组织设置的「Private Registry」页面查看状态。
内容的提问来源于stack exchange,提问作者Gratus D.
相关产品推荐
相关产品推荐

