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

如何从应用中访问Supabase Vault密钥?RPC函数还是PostgREST API?

从Supabase Vault查询密钥的正确方法

核心结论

你不能直接通过PostgREST API查询Supabase Vault中的密钥,必须创建自定义RPC(存储过程)函数来安全访问密钥。

具体操作步骤

  1. 创建RPC函数
    在Supabase SQL编辑器中执行以下代码,封装对Vault密钥的访问:

    CREATE OR REPLACE FUNCTION get_vault_secret(secret_name text)
    RETURNS text AS $$
    BEGIN
      RETURN vault.get_secret(secret_name);
    END;
    $$ LANGUAGE plpgsql SECURITY DEFINER;
    
    -- 给应用用户角色赋予执行权限,根据实际情况调整角色名
    GRANT EXECUTE ON FUNCTION get_vault_secret(text) TO authenticated;
    
    • SECURITY DEFINER 确保函数以定义者权限执行,具备访问Vault密钥的权限
    • 避免给匿名角色(anon)开放敏感密钥的访问权限
  2. 通过Supabase客户端调用RPC函数
    使用Supabase官方客户端的rpc方法调用该函数:

    const { data, error } = await supabase.rpc('get_vault_secret', {
      secret_name: '你的密钥名称'
    });
    
    if (error) {
      console.error('获取密钥失败:', error);
    } else {
      console.log('密钥值:', data);
    }
    

为什么无法直接用PostgREST?

Supabase Vault的vault.get_secret是数据库内部函数,没有暴露给PostgREST的表/视图接口,PostgREST无法直接调用这类底层函数,必须通过自定义RPC函数做一层封装才能安全访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:38:08