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

GCP Cloud Function中如何通过hvac实现Vault登录认证

GCP Cloud Function 环境下hvac对接Vault GCP认证实现方案

不需要上传服务账号JSON密钥文件,也不需要依赖本地文件路径,直接利用Cloud Function运行时内置的默认服务账号身份即可完成认证,具体实现如下:

前置确认

  • Cloud Function绑定的默认服务账号已经在Vault侧完成GCP认证方法的角色绑定,具备对应登录权限
  • 运行时无需配置任何SA密钥文件,也无需修改文件系统权限

依赖配置

将以下依赖写入Cloud Function部署用的requirements.txt:

hvac>=1.2.0
requests>=2.31.0

可直接复用的实现代码

import os
import hvac
import requests

def get_vault_client():
    # 配置项统一从环境变量读取,避免硬编码
    vault_addr = os.getenv("VAULT_ADDR")
    gcp_auth_mount_point = os.getenv("VAULT_GCP_AUTH_MOUNT", default="gcp")
    vault_bound_role = os.getenv("VAULT_GCP_ROLE_NAME")

    # 从GCP内置元数据服务拉取当前运行SA的签名身份JWT,无需本地密钥
    metadata_identity_endpoint = (
        "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity"
        f"?audience=vault/{gcp_auth_mount_point}"
    )
    metadata_req_headers = {"Metadata-Flavor": "Google"}
    jwt_resp = requests.get(metadata_identity_endpoint, headers=metadata_req_headers, timeout=3)
    jwt_resp.raise_for_status()
    sa_signed_jwt = jwt_resp.text

    # 初始化hvac客户端并完成登录
    client = hvac.Client(url=vault_addr, timeout=5)
    client.auth.gcp.login(
        role=vault_bound_role,
        jwt=sa_signed_jwt,
        mount_point=gcp_auth_mount_point
    )

    if not client.is_authenticated():
        raise RuntimeError("Vault GCP authentication failed")
    return client

# Cloud Function 入口示例
def cloud_function_entry(request):
    vault_client = get_vault_client()
    # 后续业务逻辑:比如读取KV引擎密钥、操作动态凭证等
    # secret_data = vault_client.secrets.kv.v2.read_secret_version(path="app/config")
    return "Function executed successfully"

关键注意事项

  • 文档中传入SA JSON文件路径的示例,面向的是本地开发、非GCP托管环境的使用场景,GCP原生计算资源(Cloud Function/Cloud Run/GKE/GCE等)自带运行时身份,不需要走该流程
  • 元数据服务是GCP运行环境内置的内网服务,不需要公网访问,无额外流量成本,请求延迟稳定在毫秒级
  • 该方案不需要给绑定的服务账号额外授予iam.serviceAccountTokenCreator类的IAM权限,拉取默认身份JWT是GCP托管资源的内置能力
  • 如果使用1.0.0以下版本的hvac,登录接口的JWT参数名可能为jwt_token,升级到最新稳定版即可适配示例代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:45:35