将 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
中配置 hostssl
和 hostnossl
条目)但你可以强制它在客户端,就像你做的那样在您的示例连接设置中。
您始终可以直接使用 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 上,这意味着当更新可用时提示实例重新启动。
我将 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
中配置 hostssl
和 hostnossl
条目)但你可以强制它在客户端,就像你做的那样在您的示例连接设置中。
您始终可以直接使用 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 上,这意味着当更新可用时提示实例重新启动。