如何将 Knex 安全连接到 RDS

问题描述 投票:0回答:1

我有一个 NodeJS 应用程序,使用 Objection 和 Knex 库连接到 AWS RDS 中的 MySQL 数据库。如果我使用正确的可访问性令牌和凭据设置 knex 文件,并且使用允许从任何地方访问 3306 的流量的入站规则公开访问 RDS,我就可以使用 knex 连接到它。

我意识到任何拥有可访问令牌和密码的人都可以访问数据库。

请问,是否有更安全的方式连接RDS?例如,我可以通过 MySQL 工作台连接到 AWS RDS,方法是使用 PEM 文件连接到已连接到 RDS 数据库的 EC2 实例。对于此连接,RDS 数据库不需要可公开访问,也不需要允许来自任何地方的入站流量。

我尝试过的

设置凭据后,我尝试在没有公共访问权限的情况下进行连接,并且仅允许来自我的 IP 的入站流量。我尝试过不访问酒吧+允许任何地方的流量。并且具有公共访问+仅允许我的IP。

所有这些都没有成功。

只有当我将其公开访问并向所有入站流量开放时,它才起作用。

此外,我尝试查看 Knex 文档,但找不到与 EC2 的连接或使用 PEM 文件。

这是让 Knex 连接到 RDS 最安全的方式吗?就最佳实践而言,这好吗?

这是我的连接对象代码的模板:

{
    client: 'mysql2',
    connection: {
      host: HOST,
      user: USERNAME,
      password: PASSWORD,
      database: DATABASE,
    },
    migrations: {
      tableName: MIGRATIONS_TABLE_NAME,
    },
  };
mysql node.js amazon-web-services amazon-rds knex.js
1个回答
0
投票
  1. 您的 RDS 通常应该从也在 AWS 上运行的应用程序访问。它不应该有任何公共访问权限。
  2. 使用 [AWS Secrets Manager(https://aws.amazon.com/secrets-manager/) 管理凭证
  3. 如果您需要从个人环境进行连接,请在 EC2 上设置一台可以连接到 RDS 的
  4. bastion 主机(您可以使用小型免费机器),然后将对该堡垒服务器的访问限制为 AWS 外部的特定 IP 地址。 AWS KC Post 在这种情况下,您基本上将通过该堡垒主机通过隧道连接到 RDS。
© www.soinside.com 2019 - 2024. All rights reserved.