网站

为网站存储应用机密

The Secrets tab is an encrypted store for the sensitive configuration values a Node.js app needs, such as API keys, signing secrets and third-party tokens, kept per environment so your production…

Secrets 标签页是一个加密存储区,用于存放 Node.js 应用所需的敏感配置值,例如 API 密钥、签名密钥和第三方令牌,按环境分别保存,确保生产凭证和预览凭证永远不会混淆。

Secrets 的存储位置

打开 Websites,点击该网站,在网站标签栏中打开 Advanced 菜单,选择 Secrets。该标签页标题为 Secrets

该标签页仅在 Node.js 网站上显示。WordPress、PHP 和静态网站不显示该标签页,因为它们的配置存储在磁盘上的文件中:WordPress 使用 wp-config.php,普通 PHP 应用使用框架读取的任何配置文件。

KPanel 中 Node.js 网站的 Secrets 标签页

值的保护方式

每个值在进入数据库前都会被加密。没有任何值以可读文本形式存储,列表视图永远不会显示完整值:它只显示最后四个字符的掩码,这样你可以区分两个相似的密钥而不会泄露任何一个。

每一行都带有一个 Encrypted 标签作为提示。读取值是一个单独的、主动的操作,而不是打开页面时自动发生的事情。

设置、查看和删除密钥都需要 sites:write 权限。只读团队成员可以看到存在哪些密钥及其掩码,但看不到它们的值。

两个环境

页面顶部的分段控件在 productionpreview 之间切换。它们是完全独立的密钥集。在生产环境中设置 STRIPE_SECRET_KEY 不会在预览环境中创建它,从预览环境中删除它也不会影响生产环境。

这种分离正是该功能的意义所在。预览构建是临时环境,任何拥有代码库访问权限的人都可以触发,因此它们应该使用测试凭证,而不是实时凭证。参阅 Preview Deploys For Pull Requests 了解预览环境的创建方式。

添加或更新密钥

  1. 使用分段控件选择环境。
  2. KEY_NAME 字段中输入名称。该字段在你输入时强制使用大写字母。
  3. 在第二个字段中放入值。输入时值会被掩盖。
  4. 点击 Set

设置已存在的密钥会覆盖它。没有单独的编辑操作,也没有覆盖的确认步骤,因此在点击 Set 前请检查环境标签。

密钥名称规则

密钥必须以大写字母开头,然后可以包含大写字母、数字和下划线,最多 128 个字符。DATABASE_URLAPI_KEY_V2SENTRY_DSN 都是有效的。其他任何格式都会被拒绝,显示消息 Key must be UPPER_SNAKE_CASE letters/numbers/underscore

还有两个限制值得了解:

  • 值不能为空。提交空白值会返回 value required
  • 值不能超过 16 KB。这对于令牌来说很充足,但对于完整的证书链来说不够,证书链应该存储在文件中而不是密钥中。

读取值

点击该行上的 Copy。KPanel 在服务器端解密该值并将其直接放在你的剪贴板上,显示 Value copied to clipboard 确认消息。值不会打印在屏幕上,因此屏幕共享或窥视者无法获得。

每次查看都会被写入网站的审计跟踪中,记录谁进行了操作以及哪个密钥,并显示在 Site Activity Log 中。

如果你需要检查值是否正确而不想暴露它,可以比较掩码。最后四个字符足以确认你拥有正确的令牌,它们已经在屏幕上了。

在应用中使用密钥

将值复制到应用在服务器上读取配置的位置。对于 Node.js 应用,通常是由进程管理器设置的环境变量,或应用根目录中的 .env 文件,你的代码在启动时加载。

不要将该文件提交到代码库。创建它之前,将 .env 添加到 .gitignore。已被推送到 git 远程的密钥必须被视为已泄露并在提供商处轮换,因为它会保留在历史记录中,即使你删除了文件。

Secrets 标签页是你对值的记录,以加密和审计的方式保存,而不是存储在密码管理器中的笔记或消息线程中。将其作为真实来源:当你在提供商处轮换密钥时,同时在这里更新它,这样下一个部署的人就会拥有当前值。

删除密钥

点击该行上的 Delete。KPanel 会要求你用 Delete {KEY}? 确认,并警告应用将在下次重启时失去对该值的访问权限。没有撤销操作,也没有保留副本,因此如果你以后可能需要该值,请先复制它。

当基础凭证在提供商处已被撤销,或使用它的代码已被删除时,删除密钥。保留过时的密钥会使其更难判断哪些实际上重要。

安全地轮换凭证

安全的顺序总是:在提供商处创建新凭证,在这里更新它,部署,确认应用工作正常,然后在提供商处撤销旧凭证。

以相反的顺序进行(先撤销)会给你一个时间窗口,运行中的应用持有无效凭证,每个需要它的请求都会失败。如果更改有风险,请先进行备份,以便你可以返回到已知的良好状态:参阅 Taking a Backup

故障排除

Secrets 标签页不在菜单中。 该网站不是 Node.js 网站。检查页面顶部网站名称旁边的堆栈标签。

Set 按钮没有任何反应。 两个字段都是必需的。如果任一字段为空,该按钮会报告 Key + value required

密钥被拒绝。 不允许小写字母、连字符、点和空格。api-keyApi_Key 都会失败;API_KEY 会通过。

Copy 没有将任何内容放在剪贴板上。 某些浏览器会阻止在非活跃标签页上进行剪贴板写入。先点击页面,然后再点击 Copy

接下来去哪里

仍需帮助?

请发送邮件至 support@kapsulehost.com 或在 KPanel 中打开聊天。

打开 KPanel
为网站存储应用机密