supabase_vault
在 Vault 中存储加密凭证的扩展 (supabase)
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_vault | 0.3.1 | SEC | Apache-2.0 | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 7030 | supabase_vault | 否 | 是 | 否 | 是 | 否 | 否 | vault |
| 相关扩展 | pgsodium passwordcheck_cracklib supautils pg_session_jwt anon pg_tde pgsmcrypto pgaudit |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 0.3.1 | 1817161514 | pg_vault | pgsodium |
| RPM | PIGSTY | 0.3.1 | 1817161514 | vault_$v | - |
| DEB | PIGSTY | 0.3.1 | 1817161514 | postgresql-$v-vault | - |
构建
您可以使用 pig build 命令构建 pg_vault 扩展的 RPM / DEB 包:
pig build pkg pg_vault # 构建 RPM / DEB 包
安装
您可以直接安装 pg_vault 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install pg_vault; # 当前活跃 PG 版本安装
pig ext install -y pg_vault -v 18 # PG 18
pig ext install -y pg_vault -v 17 # PG 17
pig ext install -y pg_vault -v 16 # PG 16
pig ext install -y pg_vault -v 15 # PG 15
pig ext install -y pg_vault -v 14 # PG 14
dnf install -y vault_18 # PG 18
dnf install -y vault_17 # PG 17
dnf install -y vault_16 # PG 16
dnf install -y vault_15 # PG 15
dnf install -y vault_14 # PG 14
apt install -y postgresql-18-vault # PG 18
apt install -y postgresql-17-vault # PG 17
apt install -y postgresql-16-vault # PG 16
apt install -y postgresql-15-vault # PG 15
apt install -y postgresql-14-vault # PG 14
创建扩展:
CREATE EXTENSION supabase_vault CASCADE; -- 依赖: pgsodium
用法
Supabase Vault 提供 vault.secrets 表来存储静态加密的敏感信息(API 密钥、令牌等)。通过 vault.decrypted_secrets 视图即时解密。
CREATE EXTENSION supabase_vault CASCADE;
存储密钥
INSERT INTO vault.secrets (secret) VALUES ('s3kre3t_k3y') RETURNING *;
-- 或使用辅助函数:
SELECT vault.create_secret('another_s3kre3t');
-- 带可选名称和描述:
SELECT vault.create_secret('my_secret', 'unique_name', 'This is the description');
读取密钥
vault.secrets 表以加密方式存储数据。使用 vault.decrypted_secrets 视图读取解密后的值:
SELECT * FROM vault.decrypted_secrets ORDER BY created_at DESC LIMIT 3;
-- 包含 `decrypted_secret` 列,其中为明文值
更新密钥
SELECT vault.update_secret(
'7095d222-efe5-4cd5-b5c6-5755b451e223',
'n3w_upd@ted_s3kret',
'updated_unique_name',
'This is the updated description'
);
安全提示
关闭语句日志以防止密钥出现在日志中:
ALTER SYSTEM SET statement_log = 'none';