Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 是否与其他VPC共享RDS实例,但不共享其他资源?_Amazon Web Services_Terraform_Amazon Vpc_Terraform Provider Aws_Aws Vpc Peering - Fatal编程技术网

Amazon web services 是否与其他VPC共享RDS实例,但不共享其他资源?

Amazon web services 是否与其他VPC共享RDS实例,但不共享其他资源?,amazon-web-services,terraform,amazon-vpc,terraform-provider-aws,aws-vpc-peering,Amazon Web Services,Terraform,Amazon Vpc,Terraform Provider Aws,Aws Vpc Peering,我使用Terraform创建了两个VPC: resource "aws_vpc" "alpha" { cidr_block = "10.16.0.0/16" enable_dns_support = true enable_dns_hostnames = true tags = { Name = "Alpha" } } resource "aws_subnet"

我使用Terraform创建了两个VPC:

resource "aws_vpc" "alpha" {
  cidr_block = "10.16.0.0/16"

  enable_dns_support   = true
  enable_dns_hostnames = true

  tags = {
    Name = "Alpha"
  }
}

resource "aws_subnet" "alpha_private_a" {
  vpc_id     = aws_vpc.alpha.id
  cidr_block = "10.16.192.0/24"

  availability_zone = "${var.aws_region}a"

  tags = {
    Name = "Alpha Private A"
  }
}

resource "aws_subnet" "alpha_private_b" {
  vpc_id     = aws_vpc.alpha.id
  cidr_block = "10.16.224.0/24"

  availability_zone = "${var.aws_region}b"

  tags = {
    Name = "Alpha Private B"
  }
}

resource "aws_route_table" "alpha_private" {
  vpc_id = aws_vpc.alpha.id

  tags = {
    Name = "Alpha Private"
  }
}

resource "aws_route_table_association" "alpha_private_a" {
  route_table_id = aws_route_table.alpha_private.id
  subnet_id      = aws_subnet.alpha_private_a.id
}

resource "aws_route_table_association" "alpha_private_b" {
  route_table_id = aws_route_table.alpha_private.id
  subnet_id      = aws_subnet.alpha_private_b.id
}

# The same again for VPC "Bravo"

我在VPC“Alpha”中也有一个RDS:

然后我在VPC“Bravo”中有一个弹性Beanstalk实例

我想要达到的目标:

  • alpha_rds
    可供Bravo VPC内的Elastic Beanstalk实例访问
  • Bravo VPC无法访问Alpha VPC内的任何其他内容
  • Alpha VPC无法访问Bravo VPC内的任何其他内容
我认为这需要VPC对等吗

如何在Terraform中实现这一点?


相关但非地形:

resource "aws_vpc" "alpha" {
  cidr_block = "10.16.0.0/16"

  enable_dns_support   = true
  enable_dns_hostnames = true

  tags = {
    Name = "Alpha"
  }
}

resource "aws_subnet" "alpha_private_a" {
  vpc_id     = aws_vpc.alpha.id
  cidr_block = "10.16.192.0/24"

  availability_zone = "${var.aws_region}a"

  tags = {
    Name = "Alpha Private A"
  }
}

resource "aws_subnet" "alpha_private_b" {
  vpc_id     = aws_vpc.alpha.id
  cidr_block = "10.16.224.0/24"

  availability_zone = "${var.aws_region}b"

  tags = {
    Name = "Alpha Private B"
  }
}

resource "aws_route_table" "alpha_private" {
  vpc_id = aws_vpc.alpha.id

  tags = {
    Name = "Alpha Private"
  }
}

resource "aws_route_table_association" "alpha_private_a" {
  route_table_id = aws_route_table.alpha_private.id
  subnet_id      = aws_subnet.alpha_private_a.id
}

resource "aws_route_table_association" "alpha_private_b" {
  route_table_id = aws_route_table.alpha_private.id
  subnet_id      = aws_subnet.alpha_private_b.id
}

# The same again for VPC "Bravo"


您应该可以这样设置:

  • 在Alpha和Bravo之间创建VPC对等连接
  • 在Alpha的路由表中,为Bravo的CIDR范围添加一条路由,并将对等连接(pcx-XXXXXX)的目的地设置为Bravo
  • 在Bravo的路由表中,为数据库的IP地址添加一条路由,并将其指向Alpha的对等连接
  • 这种设置保证,Bravo中的资源只能与Alpha中的数据库通信,不能路由到该VPC的其他数据包

    相反的情况有点困难-现在这个设置应该会阻止从Alpha到Bravo的TCP连接的建立,因为除了数据库之外没有返回路径。UDP通信仍然可以通过,但其响应将被丢弃,除非它来自数据库

    此时,您可以在Bravo的子网中设置网络访问控制列表,以拒绝来自Alpha(数据库IP除外)的流量。这取决于你的偏执程度或你在隔离方面的要求——就个人而言,我不会这么做,但现在是星期五下午,我心情很懒;-)


    更新 正如Mark B在评论中正确指出的,如果无法恢复基础主机,则RDS群集的专用IP地址可能会在故障切换时发生更改


    为了解决这些问题,您可以在Alpha中为数据库节点创建单独的子网,并用这些子网的CIDR替换我上面描述的数据库IP。这将允许稍微更大的灵活性,并允许您绕过NACL问题,因为您只需编辑新数据库子网的路由表,并仅在其中添加对等连接。

    您应该能够如下设置:

  • 在Alpha和Bravo之间创建VPC对等连接
  • 在Alpha的路由表中,为Bravo的CIDR范围添加一条路由,并将对等连接(pcx-XXXXXX)的目的地设置为Bravo
  • 在Bravo的路由表中,为数据库的IP地址添加一条路由,并将其指向Alpha的对等连接
  • 这种设置保证,Bravo中的资源只能与Alpha中的数据库通信,不能路由到该VPC的其他数据包

    相反的情况有点困难-现在这个设置应该会阻止从Alpha到Bravo的TCP连接的建立,因为除了数据库之外没有返回路径。UDP通信仍然可以通过,但其响应将被丢弃,除非它来自数据库

    此时,您可以在Bravo的子网中设置网络访问控制列表,以拒绝来自Alpha(数据库IP除外)的流量。这取决于你的偏执程度或你在隔离方面的要求——就个人而言,我不会这么做,但现在是星期五下午,我心情很懒;-)


    更新 正如Mark B在评论中正确指出的,如果无法恢复基础主机,则RDS群集的专用IP地址可能会在故障切换时发生更改


    为了解决这些问题,您可以在Alpha中为数据库节点创建单独的子网,并用这些子网的CIDR替换我上面描述的数据库IP。这应该允许稍微更大的灵活性,并允许您绕过NACL问题,因为您可以编辑新数据库子网的路由表,只在那里添加对等连接。

    我不认为RDS IP地址在服务器故障切换或其他情况下会保持静态。我会为DB集群使用专用子网,并通过对等连接配置到这些子网CIDR块的路由。谢谢@MarkB-这是我没有想到的一个有效点,我会在答案中添加这一点和你的建议。我不认为RDS IP地址在服务器故障切换或其他情况下会保持静态。我会为DB集群使用专用子网,并通过对等连接配置到这些子网CIDR块的路由。谢谢@MarkB-这是我没有想到的一点,我会在答案中添加这一点和你的建议。