在 API7 企业版中,可能会存储大量的敏感信息,例如 SSL 证书和私钥、消费者认证时的账号密码,以及部分插件用于对接外部系统所需的账号密码等。
在 API7 企业版 v3.2.16 中,我们引入了 Secret 提供商的概念。现在,我们可以轻松添加 Secret 提供商资源,以便与第三方的 Secret Manager(例如 Hashicorp Vault、AWS Secrets Manager、GCP Secret Manager 等)进行对接,将存放在外部的敏感信息,在 API7 中以变量的形式进行引用,引用格式为:
1$secret://$manager/$id/$secret_name/$key
使用方式
添加 Secret 提供商
在网关组菜单中,新增了 “Secret 提供商” 选项。点击后进入 Secret 提供商列表页面。点击页面右上角的 “添加 Secret 提供商” 按钮。
在弹出的表单中,填写 Secret 提供商的基础信息,选择对接的 Secret 管理服务类型为 Hashicorp Vault,并填写 Hashicorp Vault 服务访问地址、认证令牌等配置。
查看 Secret 提供商
创建完成后,我们可以在 Secret 提供商的详情页中查看具体的配置信息及 Secret 变量的示例。
Secret 的变量格式为:secret://manager/$id/$secret_name/$key
,对应的含义如下
- $secret: 固定前缀,无需替换
- $manager: Secret 管理服务
- $id: Secret 提供商资源的 ID
- $secret_name: Secret 管理服务中的 Secret 名称
- $key: Secret 管理服务中与 Secret 对应的 Key
以我们填写的 Secret 提供商为例,ID 为 my-provider
,它的 Secret 管理服务类型是 Hashicorp Vault。如果需要要引用其中 Secret 名称为 my-secret
,key 为 password
的值,它的 Secret 变量应该为:
1$secret://vault/my-hashicorp-vault/my-secret/password
目前 Secret 管理服务类型支持了 Hashicorp Vault。AWS Secrets Manager 和 GCP Secret Manger 也即将开放使用。
引用 Secret 变量
在 Secret 提供商创建完成后,你可以在 API7 企业版的各种资源中,通过变量的形式引用存储在外部系统的敏感信息。例如,在为消费者添加 Basic Authentication 类型的凭据时,可以选择把密码等敏感信息保存在外部的 Secret 管理服务中,并在 API7 中进行引用,以增强安全性。
具体操作时,我们可以直接从 Secret 提供商详情页复制 Secret 变量,然后在密码输入字段中,将变量中的 $secret_name
和 $key
替换为实际对应的名称和键。
类似地,在非表单页面,例如如插件编辑器中,我们也可以直接将 Secret 变量的值以字符串形式输入到任何支持引用 Secret 的字段中。
查看引用关系
在消费者的凭据中引用了 my-provider
中的变量时,可以在 Secret 提供商引用情况列表中查看到这个引用关系,当有其他资源引用时也会展示在这个表中,便于我们掌握这个 Secret 提供商的使用情况。
编辑或删除 Secret 提供商
在编辑或删除 Secret 提供商时,也会进行引用关系的检测,有效避免了出现资源中引用了无效的变量,导致配置错误的情况。
总结
API7 企业版通过集成 Secret 提供商,实现了与 HashiCorp Vault 等外部 Secret 管理服务的无缝对接,不仅能提升了在各种资源中引用存储在外部敏感信息的便捷性,还有效降低了手动管理敏感信息所带来的风险和成本。未来,我们计划支持对接更多种类的 Secret 管理服务,以满足用户日益增长的需求,确保敏感信息管理的灵活性和安全性。