©Amazon.com,Inc.anditsaffiliates.Allrightsreserved.利用AWSVPC和IAM服务搭建高度安全的云环境DamonDeng邓明轩AWS高级解决方案架构师mingxuan@amazon.comAWS全球基础设施11区域(Region)30可用区(AZ)53边缘站点AvailabilityZoneAAvailabilityZoneBBeijingRegion北京区域基础设施级别的高可用架构AvailabilityZone可用区_每个region区域至少有两个可用区_每个可用区都由多个数据中心组成_可用区之间地理与网络都是独立设计与运营_可用区直接网络延时保持在3ms以下_可用区内延迟保持在0.5ms以下StorageS3EBSGlacierStorageGatewayAPIAWSGlobalInfrastructureAWSGlobalInfrastructureFoundationServicesApplicationServicesDeployment&ManagementApplicationServicesLibraries,SDK’sNetworkingVPCDirectConnectELBRoute53DatabasesRDSElastiCacheDynamoRedShiftContentDeliveryCloudFrontSESSNSSQSElasticTranscoderCloudSearchSWFIAMFederationIdentity&AccessWebConsoleInteractionHumanInteractionSupportRegionsAvailabilityZonesEdgeLocationsAnalyticsDataPipelineEMRKinesisEC2ComputeWorkSpacesAppStreamMonitoringCloudWatchDeployment&ManagementBeanStalkCloudFormationOpsWorkCloudTrailCommandLineVPC介绍什么是AmazonVPC?•VirtualPrivateCloud:虚拟私有云•在AWS上的私有隔离的网络空间•用户可以自定义虚拟网络拓扑•全面控制云上的网络资源(子网、路由、ACL、防火墙、VPN等)VPC基本组件ElasticnetworkinterfaceAmazonVPCRouterInternetgatewayCustomergatewayVirtualprivategatewayVPNconnectionSubnetRoutetableElasticIPDirectConnect•VPC=VirtualPrivateCloud•在AWS上的虚拟数据中心•自定义虚拟数据中心的地址段(RFC1918)•可以包含多个可用区(AZ)•如果没有自建VPC,AWS提供DefaultVPCVPCAvailabilityZoneAAvailabilityZoneBVPCCIDR:10.1.0.0/16•在VPC内部划分子网段•一个子网只能在一个AZ中•通过安全控制列表(ACL)实现子网安全•子网路由•DefaultVPC提供了一个默认子网•是否自动分配公网地址开关:如果开启,此子网中的EC2实例在创建时可以自动分配动态公网IP•公有子网和私有子网VPC子网PublicSubnetAvailabilityZoneAPrivateSubnetAvailabilityZoneB10.1.1.0/2410.1.10.0/24VPCCIDR:10.1.0.0/16•默认设置下(ACL不做限制),子网之间彼此互通•子网之间彼此互通是由一个虚拟路由器实现的,虚拟路由器连接所有子网并转发流量•在EC2虚拟机中,可以看到DHCP分配的默认网关地址是.1•虚拟路由器不需要配置虚拟路由器VirtualrouterPublicSubnetAvailabilityZoneAPrivateSubnetPublicSubnetAvailabilityZoneBPrivateSubnetInstanceA10.1.1.11/24InstanceC10.1.3.33/24InstanceB10.1.2.22/24InstanceD10.1.4.44/24VPCCIDR:10.1.0.0/16.1.1.1.1•IGW=InternetGateway•VPC连接Internet的逻辑出口•DefaultVPC包含了一个IGW互联网网关InternetgatewaySubnetAvailabilityZoneASubnetAvailabilityZoneB10.1.1.0/2410.1.10.0/24InternetGatewayVPCCIDR:10.1.0.0/16InternetAWSPublicAPIEndpoints•包含有一系列的转发规则,即路由条目,用于决定流量的转发•一个子网关联一个路由表•控制子网路由,比如决定是否可以向互联网网关(IGW)或VPN网关(VGW)转发流量•一个路由表可以关联多个子网一个子网只能关联一个路由表路由表RoutetableSubnetAvailabilityZoneASubnetAvailabilityZoneB10.1.1.0/2410.1.10.0/24InternetGatewayVPCCIDR:10.1.0.0/16InternetAWSPublicAPIEndpointsRouteTableDestinationTarget10.1.0.0/16local0.0.0.0/0igw•ENI是EC2的虚拟网卡•在一个VPC中,默认设置下,每个EC2实例会有ENI,一个默认的eth0接口•ENI包含MAC地址,私有IP,以及关联的动态公网IP或EIP•非默认ENI可以变更关联到同一AZ的另一个EC2实例•通过ENI能实现什么?–一个EC2实例连接两个子网–多网卡、多IP–简单的HA弹性网卡ElasticnetworkinterfaceAvailabilityZoneAAvailabilityZoneBSubnet:10.1.1.0/24InternetGatewayVPCCIDR:10.1.0.0/16InternetAWSPublicAPIEndpointsRouteTableDestinationTarget10.1.0.0/16local0.0.0.0/0igwSubnet:10.1.10.0/24ENI(eth0)ENI(eth0)•EIP=弹性IP•静态公网IP地址•可申请,可释放释放后不保证能再申请到同一IP•在同一个Region内,EIP可以关联给任意一个EC2实例的网卡(ENI)•一个实例可以有多块网卡•一个网卡可以有多个IP•关联后,私有IP与EIP一一映射弹性IP(ElasticIP)AvailabilityZoneAAvailabilityZoneBSubnet:10.1.1.0/24InternetGatewayVPCCIDR:10.1.0.0/16InternetAWSPublicAPIEndpointsRouteTableDestinationTarget10.1.0.0/16local0.0.0.0/0igwSubnet:10.1.10.0/24EIPEIP•NACL=networkaccesscontrollist•实现子网的安全控制•无状态,流量控制需要编写出入双向规则•执行有顺序,按照规则编号网络访问控制列表NetworkaccesscontrollistAvailabilityZoneAAvailabilityZoneBVPCCIDR:10.1.0.0/16VPCSubnetwithACLVPCSubnetwithACLVPCSubnetwithACL•安全组相当于EC2实例的防火墙•一个EC2实例最多可以关联5个安全组•安全组是实例级别的,不是子网级的•与防火墙一样,安全组是有状态的,只需要规定流量发起一侧的端口限制,出入向设置都支持安全组SecuritygroupAvailabilityZoneAAvailabilityZoneBSubnet:10.1.1.0/24VPCCIDR:10.1.0.0/16Subnet:10.1.10.0/24SecurityGroupNetworkACLsvs.securitygroupsNACLs•应用于子网•无状态•Allow(白名单)anddeny(黑名单)•顺序执行Securitygroups•应用到实例的ENI•有状态•Allowonly(白名单)•规则总体应用,无序•在一个VPC中,一个安全组可以依赖另一个安全组,实现嵌套VPCSubnetElasticNetworkinterfaceSecurityGroupNetworkACL•VGW=virtualprivategateway•VGW是一个逻辑的VPN网关,用于与物理数据中心建立VPN连接•也可以用于建立DirectConnect专线连接VPNconnectionSubnetAvailabilityZoneASubnetAvailabilityZoneB10.1.1.0/2410.1.10.0/24VPCCIDR:10.1.0.0/16内部用户VirtualPrivateGatewayCustomerGateway客户数据中心VPNovertheInternetVPC安全控制RouteTableRouteTableInternetGatewayVirtualPrivateGatewayVirtualRouterVPC10.1.0.0/16VPC架构总览InternetCustomerNetwork172.16.0.0/8VPCPublicSubnetVPCPrivateSubnetNATInstancePublic:54.200.129.18Private:10.1.1.11/24WebServerPublic:54.200.129.29Private:10.1.1.12/24DatabaseServerPrivate:10.1.10.3/24DatabaseServerPrivate:10.1.10.4/24DatabaseServerPrivate:10.1.10.5/24RouteTableDestinationTarget10.1.0.0/16local0.0.0.0/0igwAWSPublicAPIEndpointsVPC10.1.0.0/16VPNorDirectConnectRouteTableDestinationTarget10.1.0.0/16local172.16.0.0/8vgw0.0.0.0/0NATIGWVGWCGW使用VPC对等连接(VPCpeering)连接两个VPC10.1.0.0/1610.0.0.0/16•两个VPC必须在同一个region内PeerrequestPeeraccept•可以在同一帐户或跨帐户•IP地址段不可以重叠•两个VPC之间只有一个•SecuritygroupsandNACLsstillapplyAWSregionPublic-facingwebappInternalcompanyapp#1HApairVPNendpointscompanydatacenterInternalcompanyapp#2Internalcompanyapp#3Internalcompanyapp#4ServicesVPCInternalcompanyDevInternalcompanyQAAD,DNSMonitoringLogging•SecuritygroupsstillboundtosingleVPC多VPC设计架构在动手之前,规划VPC地址空间•考虑未来扩展•考虑未来与物理数据中心内网的连接•考虑VPC与应用的承载关系•规划子网设计•VPC可以从/16到