在 Node.js 中隐藏 Oracle 数据库凭据

Hide OracleDatabase credentials in Node.js

我正在使用可以找到的示例函数连接到外部 Oracle 数据库 here

const oracledb = require('oracledb');

const connection = await oracledb.getConnection(
  {
    user          : "hr",
    password      : mypw,  // mypw contains the hr schema password
    connectString : "mydbmachine.example.com/orclpdb1"
  }
);

因此,如您所见,我的凭据将 'exposed' 提供给所有可以访问代码(可能是 github 存储库或其他东西)的人。

有什么方法可以隐藏我的用户名和密码或使它们保密,或者我不应该担心它?

注意:我使用的是 oracledb 节点模块

将您的数据库机密存储在 Secrets Manager or Parameter Store 中并让您的应用程序在运行时读取它们。请务必更新您的应用程序使用的 IAM 角色,以便它具有检索凭据的 IAM 权限。

注意:对于 certain databases,Secrets Manager 支持 auto-rotation 个凭据。

您可以使用 .env,并通过 process.env 访问它。

在此处查看:https://nodejs.org/dist/latest-v8.x/docs/api/process.html#process_process_env

选项包括:

  1. 运行时提示输入密码

  2. 在环境变量中传递密码

  3. 使用 kerberos,然后使用 'external' authentication in node-oracledb. All this is configured and enabled in code layers below node-oracledb, see the Oracle Database Security Guide

  4. 使用 Oracle Wallet,然后在 node-oracledb 中使用 'external' 身份验证。