AWS RDS public 访问
AWS RDS public access
我对 AWS 配置感到困惑。我的目标是创建一个可以从网络内部和外部访问的数据库。
这是我的资料。 RDS 实例运行 postgresql。来自 VPC 内部的连接正常工作。
端点设置为 public 仅可访问 - 当从外部访问时,确实会解析。但是,连接挂起,表明流量被某人阻止了。
安全组好:
入站:端口 5432 从 0.0.0.0/0
出站:全部从0.0.0.0/0
子网。我认为那是哪里出了问题,对吧?
起初我在子网组中有两个私有子网和两个 public 子网。为了简化,我在不改变结果的情况下删除了私有的。
所以我们有两个 public 子网:
两者具有相同的路由 table 和互联网网关
据我所知,一切正常...那么谁阻止了我的数据库连接?
要检查两件事:
确保 RDS 实例设置了 publicly accessible 属性,以便为其分配 public 地址
另外根据 AWS RDS 文档,"If you want your DB instance in the VPC to be publicly accessible, you must enable the VPC attributes DNS hostnames and DNS resolution."
此外,检查您的 RDS 实例主机名解析到的 IP 是否是 public IP 地址。
根据新的 AWS RDS UI。按照以下步骤操作。
- 打开 Amazon RDS 控制台。
- 从导航窗格中选择数据库,然后 select 数据库实例。
- 选择修改。
- 连通性
另外[重要]:
端口和 IP 的入站和出站策略更新
默认情况下,即使您在设置 RDS 时将“Public 可访问性”设置为“是”,“安全组”仍然不允许端口 3306。
所以你必须点击RDS的Security Group,然后添加一个规则来允许来自任何IP的3306。
这里是参考设置。但在这里我必须首先警告您,这种 public 可访问性会将您的数据库暴露在互联网上。请自行承担风险。
自 2021 年 10 月起,RDS 实例可能拥有自己的安全组。因此,您只需要创建或编辑安全组以允许 public 访问*。
一般RDS实例都有一个默认的安全组。不过,我建议创建一个新的安全组以允许 public 访问,而不是编辑 default
组。
添加新的安全组。
- 转到 RDS > 安全组
- 点击
Create DB Security Group
- 输入
name
和description
并点击Create
按钮保存
- 在安全组列表中点击新创建的安全组名称
- 点击框右上角的
Add Rule
- 选中
CIDR/IP
单选按钮
- 在
CIDR/IP to Authorize
文本字段中输入 0.0.0.0/0
- 点击
Add Rule
按钮保存
保存后,返回RDS实例列表,RDS >
数据库
- 勾选RDS实例,点击右上角修改
- 在
Connectivity > Security group
下找到并 Select 新创建的安全组
- 确保在
Connectivity > Additional Settings
下选中 Publicly accessible
- 保存
您可以选择编辑现有的安全组。这可能会阻止修改 RDS 实例的步骤。
为了编辑安全组。
- 转到 RDS > 安全组
- 点击一个安全组进行编辑,例如
default
- 点击框右上角的
Add Rule
- 选中
CIDR/IP
单选按钮
- 在
CIDR/IP to Authorize
文本字段中输入 0.0.0.0/0
- 点击
Add Rule
按钮保存
[*] - 你应该考虑添加一个 ip 或 ip 范围,如果你有的话。
无法连接到我的 public 以及 https://aws.amazon.com/premiumsupport/knowledge-center/rds-connectivity-instance-subnet-vpc/ 后可访问的 RDS。
原来我的一个子网路由 table 没有到 public 0.0.0.0/0 的路由记录,添加后有效。
我对 AWS 配置感到困惑。我的目标是创建一个可以从网络内部和外部访问的数据库。
这是我的资料。 RDS 实例运行 postgresql。来自 VPC 内部的连接正常工作。
端点设置为 public 仅可访问 - 当从外部访问时,确实会解析。但是,连接挂起,表明流量被某人阻止了。
安全组好:
入站:端口 5432 从 0.0.0.0/0
出站:全部从0.0.0.0/0
子网。我认为那是哪里出了问题,对吧? 起初我在子网组中有两个私有子网和两个 public 子网。为了简化,我在不改变结果的情况下删除了私有的。
所以我们有两个 public 子网:
两者具有相同的路由 table 和互联网网关
据我所知,一切正常...那么谁阻止了我的数据库连接?
要检查两件事:
确保 RDS 实例设置了 publicly accessible 属性,以便为其分配 public 地址
另外根据 AWS RDS 文档,"If you want your DB instance in the VPC to be publicly accessible, you must enable the VPC attributes DNS hostnames and DNS resolution."
此外,检查您的 RDS 实例主机名解析到的 IP 是否是 public IP 地址。
根据新的 AWS RDS UI。按照以下步骤操作。
- 打开 Amazon RDS 控制台。
- 从导航窗格中选择数据库,然后 select 数据库实例。
- 选择修改。
- 连通性
另外[重要]: 端口和 IP 的入站和出站策略更新
默认情况下,即使您在设置 RDS 时将“Public 可访问性”设置为“是”,“安全组”仍然不允许端口 3306。
所以你必须点击RDS的Security Group,然后添加一个规则来允许来自任何IP的3306。
这里是参考设置。但在这里我必须首先警告您,这种 public 可访问性会将您的数据库暴露在互联网上。请自行承担风险。
自 2021 年 10 月起,RDS 实例可能拥有自己的安全组。因此,您只需要创建或编辑安全组以允许 public 访问*。
一般RDS实例都有一个默认的安全组。不过,我建议创建一个新的安全组以允许 public 访问,而不是编辑 default
组。
添加新的安全组。
- 转到 RDS > 安全组
- 点击
Create DB Security Group
- 输入
name
和description
并点击Create
按钮保存 - 在安全组列表中点击新创建的安全组名称
- 点击框右上角的
Add Rule
- 选中
CIDR/IP
单选按钮 - 在
CIDR/IP to Authorize
文本字段中输入 0.0.0.0/0 - 点击
Add Rule
按钮保存
保存后,返回RDS实例列表,RDS > 数据库
- 勾选RDS实例,点击右上角修改
- 在
Connectivity > Security group
下找到并 Select 新创建的安全组
- 确保在
Connectivity > Additional Settings
下选中 - 保存
Publicly accessible
您可以选择编辑现有的安全组。这可能会阻止修改 RDS 实例的步骤。
为了编辑安全组。
- 转到 RDS > 安全组
- 点击一个安全组进行编辑,例如
default
- 点击框右上角的
Add Rule
- 选中
CIDR/IP
单选按钮 - 在
CIDR/IP to Authorize
文本字段中输入 0.0.0.0/0 - 点击
Add Rule
按钮保存
[*] - 你应该考虑添加一个 ip 或 ip 范围,如果你有的话。
无法连接到我的 public 以及 https://aws.amazon.com/premiumsupport/knowledge-center/rds-connectivity-instance-subnet-vpc/ 后可访问的 RDS。
原来我的一个子网路由 table 没有到 public 0.0.0.0/0 的路由记录,添加后有效。