将 RDS Postgres 与 Heroku 一起使用有多安全?

How secure is using RDS Postgres with Heroku?

我将 Amazon RDS Postgres 与我的 Heroku 实例一起使用,因为它更具成本效益。但它有多安全?有人不能登录我的数据库吗?他们不能只是窥探流量吗?它是否比我将标准 Postgres 与 Heroku 一起使用更不安全?静态加密是否足够好?

仅供参考:无法在 RDS 上强制使用 SSL 和 postgres

我正在使用以下方案进行连接:

postgres://randomusername:longpassword@url:myport/databasename?sslrootcert=path_to_cert&sslmode=requ

But how secure is it? Can't somebody just log into my database?

不是没有密码(假设您使用的是 MD5 身份验证),它仅以散列形式传输。这不是特别强;没有双向握手,很容易受到重放攻击。所以你也应该使用 SSL。

Can't they just snoop traffic?

如果您使用 SSL,则不需要,而您应该这样做。不过,攻击者必须能够拦截流量,所以即使您以明文方式发送流量,Joe Average 也不会偷看一眼。

Is it any less secure than if I were to use the standard Postgres with Heroku?

只要您使用 SSL 连接,可能大同小异 - 但请注意,我不是 Heroku 架构方面的专家。

主要的改变是,如果 Heroku 使用安全组隔离应用程序测功机和数据库节点,这样数据库节点就无法与外界通信或接收来自除测功机。他们不会这样做,因为您可以通过 SSL 直接连接到您的数据库。

Is encryption at rest good enough?

如果您使用的是 MD5 密码身份验证,则不会。您应该使用 SSL。

FYI: There is no way to force use SSL with postgres on RDS

不是服务器端(这很愚蠢,他们应该让你在 pg_hba.conf 中配置 hostsslhostnossl 条目)但你可以强制它在客户端,就像你做的那样在您的示例连接设置中。

您始终可以直接使用 EC2 实例,您可以在其中随意配置 PostgreSQL。它也比使用 RDS 便宜,但您必须管理自己的备份、复制等。

I'm using Amazon RDS Postgres with my Heroku instance because it is more cost effective.

有意思的是Heroku的数据库服务也是基于AWS EC2的


安全提示:

  • 不要为您的应用程序使用超级用户帐户。超级用户只能手动用于设置。

  • 如果可能,您的应用程序帐户不应拥有这些表;您应该使用与 运行 DDL 不同的帐户。如果您的应用程序使用最低权限帐户进行正常操作,您就限制了攻击者可以做的事情。

  • 如果可以,请将您的数据库放在 EC2 安全组中,该组只能由您的 Heroku 应用程序服务器和您的个人 ISP 访问。这限制了对密码暴力攻击、DoS 尝试等的暴露。(这可能是不可能的;你需要知道你的 Heroku dynos 的 EC2 安全组 ID,或者他们使用的 IP 范围) .

  • 为您的应用程序用户使用随机生成的长密码

  • 除非您处于严格访问控制的网络中,否则请使用 SSL。如果您没有使用 RDS,我会告诉您在 pg_hba.conf 中使用 hostssl 条目,这样非 SSL 连接就会被拒绝。由于您使用的是 RDS,因此您只需确保客户端。

  • (与 RDS 不太相关,但是):及时应用补丁版本。当 9.2.10 出来时,不要仍然 运行ning 9.2.2。在 RDS 上,这意味着当更新可用时提示实例重新启动。