2016-02-19 42 views
0

我不明白我必须在我的vpc中设置哪个规则才能使postgres端口仅适用于同一vpc中的其他实例。Aws开放端口到另一个实例但未公开

让我澄清:

172.30.0.183是我的数据库。

172.30.0.207实例的

172.30.0.165实例B

他们是在同一个VPC。 如果我将包含入站规则的端口5432(postgres)绑定到0.0.0.0/0,我可以从Internet访问我的数据库,但我不希望这样。 我只想让我的实例A和B能够连接它。

我该怎么做?

回答

0

您有2个选项。允许VPC或子网中的所有主机访问postgres。为此,您需要了解您的VPC或子网的CIDR。

enter image description here

或只允许那些2个主机。

enter image description here

+0

这是我第一次尝试没有成功! 我转到了https://console.aws.amazon.com/vpc屏幕,我可以在输入字段“source”时看到这些建议,但系统并未建议您的IP范围如您所描述图片。 我做了相同的配置,仍然无法连接! –

+0

另一件事。 “/”32,24,16,15之后的数字的意思是什么? 对不起,基本问题。 –

+0

谢谢你,你帮了我。该实例仅与一个安全组相关联。 –

1

需要两个安全组正确做到这一点。

第一个不需要任何入口规则。我们称之为“DatabaseClient”。附加到实例A和B.

现在创建另一个组。打开端口5432到在“DatabaseClient”组下运行的任何实例。称它为“DatabaseServer”。将它与postgres服务器关联起来。

你完成了。

下面是一个如何通过云计算实现此功能的示例 - 您需要知道VPC ID才能运行它。

{ 
    "Description" : "Postgres access", 

    "Parameters" : { 
    "VpcId" : { 
     "Type" : "String" 
    } 
    }, 

    "Resources" : { 

    "PGClient" : { 
     "Type" : "AWS::EC2::SecurityGroup", 
     "Properties" : { 
     "VpcId" : { "Ref" : "VpcId" }, 
     "GroupDescription" : "Associate with instances that need db access." 
     } 
    }, 

    "PGServer" : { 
     "Type" : "AWS::EC2::SecurityGroup", 
     "Properties" : { 
     "VpcId" : { "Ref" : "VpcId" }, 
     "GroupDescription" : ".", 
     "SecurityGroupIngress" : [ 
      { 
      "IpProtocol" : "tcp", 
      "FromPort" : "5432", 
      "ToPort" : "5432", 
      "SourceSecurityGroupId" : { "Ref" : "PGClient" } 
      } 
     ] 
     } 
    } 
    } 
} 
+1

如果您不想为此使用cloudformation,则可以先创建DatabaseClient安全组,然后在创建或编辑您的DatabaseServer安全组时,请将DatabaseClient安全组引用为源中的“自定义IP”。 – daxlerod