@bella-baxter/ sdk (英语)
核心类型SDK 贝拉·巴克斯特 安全的秘密管理网关 为 Node.js apps 、 HMAC 签名的 API 认证和可选的 Zero-Knowledge 加密(ZKE) 提供活重装密钥 .
安装
npm install @bella-baxter/sdk
# or
pnpm add @bella-baxter/sdk
快开始
import { createBellaConfig } from '@bella-baxter/sdk';
const bella = await createBellaConfig({
baxterUrl: process.env.BELLA_BAXTER_URL!,
apiKey: process.env.BELLA_BAXTER_API_KEY!,
projectSlug: 'my-app', // or set BELLA_BAXTER_PROJECT env var
environmentSlug: 'production', // or set BELLA_BAXTER_ENV env var
});
// Access secrets
const dbUrl = bella.get('DATABASE_URL'); // string | undefined
const port = bella.getOrThrow('PORT'); // string — throws if missing
const all = bella.getAll(); // Record<string, string>
// Write all secrets into process.env (for legacy integrations)
bella.intoProcessEnv();
// Stop background polling when shutting down
bella.destroy();
环境变量
| 变量 | 说明 |
|---|---|
BELLA_BAXTER_URL | Bella Baxter API 的基础 URL |
BELLA_BAXTER_API_KEY | API 密钥( E)bax-...从WebApp或CLI获得 |
BELLA_BAXTER_PROJECT | 项目 sattle( 返回为 projectSlug 选项) |
BELLA_BAXTER_ENV | 环境符号( 回落到 environmentSlug 选项) |
BELLA_BAXTER_PRIVATE_KEY | ZKE的 PKCS# 8 PEM 私人密钥( 可选) |
类型机密
运行 CLI 生成已打入的声明文件 :
bella secrets generate typescript --declaration
此生成 bella-secrets.d.ts (环境)和 bella-coercions.ts (运行时间). 通过强制键入和强制值:
import { BELLA_COERCIONS } from './bella-coercions.js';
const bella = await createBellaConfig({ coercions: BELLA_COERCIONS });
bella.PORT // number — not string
bella.DATABASE_URL // string
零知识加密( ZKE)
何时 BELLA_BAXTER_PRIVATE_KEY 设置(或 privateKey 选项), 机密是端到端加密的。 服务器从未看到纯文本值 .
const bella = await createBellaConfig({
baxterUrl: '...',
apiKey: '...',
privateKey: process.env.BELLA_BAXTER_PRIVATE_KEY,
});
客户端在读取秘密时总是会呈现一个 E2EE 公钥( 上面的设备密钥, 或 ephemeral)
答案是这样的 必须 做一个用钥匙打开的加密信封。 其他的都拒绝
带有 E2EEResponseError中,从不返回为简单文字 :
err.code | 含义 |
|---|---|
e2ee-plaintext-response | 服务器(或你和它之间的某事)用未加密的秘密回答 |
e2ee-decryption-failed | 信封被篡改、变形或加密到不同的密钥 |
键在 每个 读取带有秘密价值的,不仅 getAllSecrets用于这些
没有打字方法(单一秘密、其版本、提供者的秘密、出口、全球秘密),
client.request(path) 通过相同的认证和 E2EE 管道获取任何 API 路径并返回
解密的JSON:
const client = await createBaxterClient({});
const item = await client.request<{ key: string; value: string }>(
'/api/v1/projects/my-app/environments/prod/providers/vault/secrets/DB_PASSWORD',
);
导出读取此方式回答 a { key: value } 对象,随便 format 请求: 文件只是
给一个没有钥匙的打电话者.
框架整合
| 框架 | 软件包 |
|---|---|
| 快递 | @bella-baxter/express |
| 快捷化 | @bella-baxter/fastify |
| 网点JS | @bella-baxter/nestjs |
| 下一个.js | @bella-baxter/next |
| 阿多尼斯·贾克 | @bella-baxter/adonis |
| 原生反应 | @bella-baxter/react-native |