From 9dedeb27859a5e7664aedd5a474f653d18f35d08 Mon Sep 17 00:00:00 2001 From: OpenTelekomCloud Proposal Bot Date: Tue, 24 Oct 2023 07:47:41 +0000 Subject: [PATCH] Update content --- .../images/en-us_image_0000001124559429.png | Bin 0 -> 34159 bytes .../images/en-us_image_0000001124559441.png | Bin 0 -> 19302 bytes .../_static/images/en-us_image_0141273034.png | Bin 0 -> 1004 bytes .../_static/images/en-us_image_0287297889.png | Bin 0 -> 43210 bytes .../source/best_practice/index.rst | 16 ++ ...uce_the_number_of_security_group_rules.rst | 99 +++++++++++ .../vpc_and_subnet_planning_suggestions.rst | 154 ++++++++++++++++++ doc/best-practice/source/index.rst | 4 + 8 files changed, 273 insertions(+) create mode 100644 doc/best-practice/source/_static/images/en-us_image_0000001124559429.png create mode 100644 doc/best-practice/source/_static/images/en-us_image_0000001124559441.png create mode 100644 doc/best-practice/source/_static/images/en-us_image_0141273034.png create mode 100644 doc/best-practice/source/_static/images/en-us_image_0287297889.png create mode 100644 doc/best-practice/source/best_practice/index.rst create mode 100644 doc/best-practice/source/best_practice/using_ip_address_groups_to_reduce_the_number_of_security_group_rules.rst create mode 100644 doc/best-practice/source/best_practice/vpc_and_subnet_planning_suggestions.rst diff --git a/doc/best-practice/source/_static/images/en-us_image_0000001124559429.png b/doc/best-practice/source/_static/images/en-us_image_0000001124559429.png new file mode 100644 index 0000000000000000000000000000000000000000..5dbacedcb97f4d2f1126dec92c744aeb75cde3c9 GIT binary patch literal 34159 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 literal 0 HcmV?d00001 diff --git a/doc/best-practice/source/_static/images/en-us_image_0000001124559441.png b/doc/best-practice/source/_static/images/en-us_image_0000001124559441.png new file mode 100644 index 0000000000000000000000000000000000000000..c5d361f6781cafbd7ae83d5e96e72e4ef3aa3b26 GIT binary patch literal 19302 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 Mt97SH^>Nt$0ySOedjJ3c literal 0 HcmV?d00001 diff --git a/doc/best-practice/source/_static/images/en-us_image_0141273034.png b/doc/best-practice/source/_static/images/en-us_image_0141273034.png new file mode 100644 index 0000000000000000000000000000000000000000..1909444d23d92a3a6566bca91ce065d14dbda919 GIT binary patch literal 1004 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EaHVU}gyL32_B-i2;l_022maMg=TL zfE5PVkN`UjaKHd37;wP=HyH51052HufdM}l2!Meg7zlxZFc^q{fvBjc7#N6yfrNyF zBp676fwZ)=3>e7D%F2O(yu7@Ef`TF#C@Co^gMo^QimIxrnwpwA7-(o{XliO|X=!PL zfsT%juCA`0o}RwGz5y5*8X6iI85tWJo0yoGnwpxKnVFlLTUc0FT3T9JSy@|K+kkCcvmzTGP*6~CaBxUSNN8wiSXfv@L_}m{WK>jCbaZq~OiWx{Tzq_dLPA1fVq$V~a!N`{ zYHDg)T3SX%MrLMaR#sMac6M%VZeCtqetv#oVPR2GQAtTjX=!O$Sy@FzMP+4WRaI3@ zO-*fWZGC-xLqkJTQ&V$ub4yE0TU%RudwXYRXIEEOPft&8Z*PBp|AYw>CQX_&dGh3` zQ>RX!K7GcF8M9{1nmv2=+_`h-&!4|w!GcAL7A;=9cQ>uk5sDH4e!pN zM?2c%!f)$Moqn;JbAR{#-LH2<-aWd<6M=_Uy)Vz z>Gb1s+(~DB#NsS6_)g4`cRj>@b~4MGr%TsH2#HlrdJFVdQ&MBb@08(^UA^-pY literal 0 HcmV?d00001 diff --git a/doc/best-practice/source/_static/images/en-us_image_0287297889.png b/doc/best-practice/source/_static/images/en-us_image_0287297889.png new file mode 100644 index 0000000000000000000000000000000000000000..4be1389ec7a46af37e4701cd72f2afce9a7cb054 GIT binary patch literal 43210 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 literal 0 HcmV?d00001 diff --git a/doc/best-practice/source/best_practice/index.rst b/doc/best-practice/source/best_practice/index.rst new file mode 100644 index 0000000..65fdef6 --- /dev/null +++ b/doc/best-practice/source/best_practice/index.rst @@ -0,0 +1,16 @@ +:original_name: bestpractice_0001.html + +.. _bestpractice_0001: + +Best Practice +============= + +- :ref:`VPC and Subnet Planning Suggestions ` +- :ref:`Using IP Address Groups to Reduce the Number of Security Group Rules ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + vpc_and_subnet_planning_suggestions + using_ip_address_groups_to_reduce_the_number_of_security_group_rules diff --git a/doc/best-practice/source/best_practice/using_ip_address_groups_to_reduce_the_number_of_security_group_rules.rst b/doc/best-practice/source/best_practice/using_ip_address_groups_to_reduce_the_number_of_security_group_rules.rst new file mode 100644 index 0000000..f8be815 --- /dev/null +++ b/doc/best-practice/source/best_practice/using_ip_address_groups_to_reduce_the_number_of_security_group_rules.rst @@ -0,0 +1,99 @@ +:original_name: bestpractice_0013.html + +.. _bestpractice_0013: + +Using IP Address Groups to Reduce the Number of Security Group Rules +==================================================================== + +Scenarios +--------- + +Finance and securities enterprises have high security requirements when planning cloud networks. Access to servers is often controlled based on IP addresses. To simplify security group rule configuration and provide refined security control, you can use IP address groups in case of the following scenarios: + +- A security group has more than 40 rules. +- The direction, type, protocol, and port of security group rules are the same except the address. + +Constraints +----------- + +- An IP address group can contain a maximum of 20 IP addresses or IP address ranges. + +Prerequisites +------------- + +You have created one or more security groups for access control. + +Typical Case +------------ + +For example, you plan to configure the following rules for security group A. + +========= ==== ======== ========== ========================= +Direction Type Protocol Port Range Source/Destination +========= ==== ======== ========== ========================= +Inbound IPv4 TCP 22122 Source: 11.19.255.64/30 +Inbound IPv4 TCP 22122 Source: 113.31.128.252/30 +Inbound IPv4 TCP 22122 Source: 113.31.138.0/25 +Inbound IPv4 TCP 22122 Source: 183.232.25.208/28 +========= ==== ======== ========== ========================= + +The four inbound rules have the same port, type, and protocol but different source IP addresses. In this case, you can use an IP address group to reconfigure the security group rules. + +Procedure +--------- + +**Create an IP address group.** + +#. Log in to the management console. +#. Click |image1| in the upper left corner and select the desired region and project. +#. Under **Networking**, click **Virtual Private Cloud**. +#. In the navigation pane on the left, choose **Access Control** > **IP Address Groups**. +#. Click **Create IP Address Group**. +#. Set the parameters. + + - **Name**: **ipGroup-A** + + - **IP Address**: + + 11.19.255.64/30 + + 113.31.128.252/30 + + 113.31.138.0/25 + + 183.232.25.208/28 + + + .. figure:: /_static/images/en-us_image_0000001124559441.png + :alt: **Figure 1** Creating an IP address group + + **Figure 1** Creating an IP address group + +#. Click **OK**. + +**Configure a security group rule.** + +8. In the navigation pane on the left, choose **Access Control** > **Security Groups**. +9. Locate security group A and click **Manage Rule** in the **Operation** column. +10. Under **Inbound Rules**, click **Add Rule**. +11. Set the parameters. + + - **Protocol & Port**: **TCP** and **22122** + + - **Type**: **IPv4** + + - **Source**: **ipGroup-A** + + + .. figure:: /_static/images/en-us_image_0000001124559429.png + :alt: **Figure 2** Configuring a security group rule + + **Figure 2** Configuring a security group rule + +12. Click **OK**. + +**Delete old security group rules.** + +13. Delete four old security group rules after the configured security group rule takes effect. + +.. |image1| image:: /_static/images/en-us_image_0141273034.png diff --git a/doc/best-practice/source/best_practice/vpc_and_subnet_planning_suggestions.rst b/doc/best-practice/source/best_practice/vpc_and_subnet_planning_suggestions.rst new file mode 100644 index 0000000..b87fa0a --- /dev/null +++ b/doc/best-practice/source/best_practice/vpc_and_subnet_planning_suggestions.rst @@ -0,0 +1,154 @@ +:original_name: bestpractice_0002.html + +.. _bestpractice_0002: + +VPC and Subnet Planning Suggestions +=================================== + +Before creating your VPCs, determine how many VPCs, the number of subnets, and what IP address ranges or connectivity options you will need. + +- :ref:`How Do I Determine How Many VPCs I Need? ` +- :ref:`How Do I Plan Subnets? ` +- :ref:`How Do I Plan Routing Policies? ` +- :ref:`How Do I Connect to an On-Premises Data Center? ` +- :ref:`How Do I Access the Internet? ` + +.. _bestpractice_0002__en-us_topic_0167202536_en-us_topic_0119408804_section089562719454: + +How Do I Determine How Many VPCs I Need? +---------------------------------------- + +VPCs are region-specific. By default, networks in VPCs in different regions or even in the same region are not connected. + +- One VPC + + If your services do not require network isolation, a single VPC should be enough. + +- Multiple VPCs + +If you have multiple service systems in a region and each service system requires an isolated network, you can create a separate VPC for each service system. + +If you require network connectivity between separate VPCs in the same account or in different accounts, you can use VPC peering connections or Cloud Connect. + +- If two VPCs are in the same region, use a `VPC peering connection `__. +- If two VPCs are in different regions, use `Cloud Connect `__. + +.. note:: + + By default, you can create a maximum of five VPCs in each region. If this cannot meet your service requirements, request a quota increase. For details, see `How Do I Apply for a Higher Quota? `__ + +The following table lists the private CIDR blocks that you can specify when creating a VPC. Consider the following when selecting a VPC CIDR block: + +- Number of IP addresses: Reserve sufficient IP addresses in case of business growth. +- IP address range: Avoid IP address conflicts if you need to connect a VPC to an on-premises data center or connect two VPCs. + +:ref:`Table 1 ` lists the supported VPC CIDR blocks. + +.. _bestpractice_0002__en-us_topic_0167202536_en-us_topic_0119408804_en-us_topic_0118499040_table3240172772213: + +.. table:: **Table 1** VPC CIDR blocks + + +-------------------+-----------------------------+--------------------------------+ + | VPC CIDR Block | IP Address Range | Maximum Number of IP Addresses | + +===================+=============================+================================+ + | 10.0.0.0/8-24 | 10.0.0.0-10.255.255.255 | 2^24-2=16777214 | + +-------------------+-----------------------------+--------------------------------+ + | 172.16.0.0/12-24 | 172.16.0.0-172.31.255.255 | 2^20-2=1048574 | + +-------------------+-----------------------------+--------------------------------+ + | 192.168.0.0/16-24 | 192.168.0.0-192.168.255.255 | 2^16-2=65534 | + +-------------------+-----------------------------+--------------------------------+ + +.. _bestpractice_0002__en-us_topic_0167202536_en-us_topic_0119408804_section15166143804819: + +How Do I Plan Subnets? +---------------------- + +A subnet is a unique CIDR block with a range of IP addresses in a VPC. All resources in a VPC must be deployed on subnets. + +- By default, all instances in different subnets of the same VPC can communicate with each other and the subnets can be located in different AZs. For example, VPC-A has subnet A01 in AZ A and subnet A02 in AZ B. Subnet A01 and subnet B01 can communicate with each other by default. + +- After a subnet is created, its CIDR block cannot be modified. Subnets in the same VPC cannot overlap. + + When you create a VPC, a default subnet will be created together. If you need more subnets, see `Creating a Subnet for the VPC `__. + + A subnet mask can be between the netmask of its VPC CIDR block and /28 netmask. If a VPC CIDR block is 10.0.0.0/16, its subnet mask can between 16 to 28. + + For example, if the CIDR block of VPC-A is 10.0.0.0/16, you can specify 10.0.0.0/24 for subnet A01, 10.0.1.0/24 for subnet A02, and 10.0.3.0/24 for subnet A03. + + .. note:: + + By default, you can create a maximum of 100 subnets in each region. If this cannot meet your service requirements, request a quota increase by referring to `How Do I Apply for a Higher Quota? `__ + +When planning subnets, consider the following: + +- You create different subnets for different modules in a VPC. For example, in VPC-A, you can create subnet A01 for web services, subnet A02 for management services, and subnet A03 for data services. You can leverage network ACLs to control access to each subnet. +- If your VPC needs to communicate with an on-premises data center through VPN or Direct Connect, ensure that the VPC subnet and the CIDR block used for communication in the data center do not overlap. + +.. _bestpractice_0002__en-us_topic_0167202536_en-us_topic_0119408804_section169901852144820: + +How Do I Plan Routing Policies? +------------------------------- + +When you create a VPC, the system automatically generates a default route table for the VPC. If you create a subnet in the VPC, the subnet automatically associates with the default route table. A route table contains a set of routes that are used to determine where network traffic from your subnets in a VPC is directed. The default route table ensures that subnets in a VPC can communicate with each other. + +If you do not want to use the default route table, you can now create a custom route table and associate it with the subnets. The custom route table associated with a subnet affects only the outbound traffic. The default route table controls the inbound traffic. + +You can add routes to default and custom route tables and configure the destination, next hop type, and next hop in the routes to determine where network traffic is directed. Routes are classified into system routes and custom routes. + +- System routes: Routes that are automatically added by the system and cannot be modified or deleted. System routes allow instances in a VPC to communicate with each other. + +- Custom routes: Routes that can be modified and deleted. The destination of a custom route cannot overlap with that of a system route. + + You cannot add two routes with the same destination to a VPC route table even if their next hop types are different, because the destination determines the route priority. According to the longest match routing rule, the destination with a higher matching degree is preferentially selected for packet forwarding. + +.. _bestpractice_0002__en-us_topic_0167202536_en-us_topic_0119408804_section187551349164918: + +How Do I Connect to an On-Premises Data Center? +----------------------------------------------- + +If you require interconnection between a VPC and an on-premises data center, ensure that the VPC does not have an overlapping IP address range with the on-premises data center to be connected. + +As shown in :ref:`Figure 1 `, you have VPC 1 in region A and VPC 2 and VPC 3 in region B. To connect to an on-premises data center, they can use a VPN, as VPC 1 does in Region A; or a Direct Connect connection, as VPC 2 does in Region B. VPC 2 connects to the data center through a Direct Connect connection, but to connect to another VPC in that region, like VPC 3, a VPC peering connection must be established. + +.. _bestpractice_0002__en-us_topic_0167202536_en-us_topic_0119408804_fig16817171713408: + +.. figure:: /_static/images/en-us_image_0287297889.png + :alt: **Figure 1** Connections to on-premises data centers + + **Figure 1** Connections to on-premises data centers + +When planning CIDR blocks for VPC 1, VPC 2, and VPC 3: + +- The CIDR block of VPC 1 cannot overlap with the CIDR block of the on-premises data center in Region A. +- The CIDR block of VPC 2 cannot overlap with the CIDR block of the on-premises data center in Region B. +- The CIDR blocks of VPC 2 and VPC 3 cannot overlap. + +.. _bestpractice_0002__en-us_topic_0167202536_en-us_topic_0119408804_section7650164019505: + +How Do I Access the Internet? +----------------------------- + +**Use EIPs to enable a small number of ECSs to access the Internet.** + +When only a few ECSs need to access the Internet, you can bind the EIPs to the ECSs. This will provide them with Internet access. You can also dynamically unbind the EIPs from the ECSs and bind them to NAT gateways and load balancers instead, which will also provide Internet access. The process is not complicated. + +For more information about EIP, see `EIP Overview `__. + +**Use a NAT gateway to enable a large number of ECSs to access the Internet.** + +When a large number of ECSs need to access the Internet, the public cloud provides NAT gateways for your ECSs. With NAT gateways, you do not need to assign an EIP to each ECS. NAT gateways reduce costs as you do not need so many EIPs. NAT gateways offer both source network address translation (SNAT) and destination network address translation (DNAT). SNAT allows multiple ECSs in the same VPC to share one or more EIPs to access the Internet. SNAT prevents the EIPs of ECSs from being exposed to the Internet. DNAT can implement port-level data forwarding. It maps EIP ports to ECS ports so that the ECSs in a VPC can share the same EIP and bandwidth to provide Internet-accessible services. + +For more information, see `NAT Gateway User Guide `__. + +**Use ELB to access the Internet If there are a large number of concurrent requests.** + +In high-concurrency scenarios, such as e-commerce, you can use load balancers provided by the ELB service to evenly distribute incoming traffic across multiple ECSs, allowing a large number of users to concurrently access your business system or application. ELB is deployed in the cluster mode. It provides fault tolerance for your applications by automatically balancing traffic across multiple AZs. You can also take advantage of deep integration with Auto Scaling (AS), which enables automatic scaling based on service traffic and ensures service stability and reliability. + +For more information, see `Elastic Load Balance User Guide `__. + +Helpful Links +------------- + +- `Application Scenarios `__ +- `Private Network Access `__ +- `Public Network Access `__ diff --git a/doc/best-practice/source/index.rst b/doc/best-practice/source/index.rst index 6d77415..cf04a7f 100644 --- a/doc/best-practice/source/index.rst +++ b/doc/best-practice/source/index.rst @@ -2,3 +2,7 @@ Virtual Private Cloud - Best Practice ===================================== +.. toctree:: + :maxdepth: 1 + + best_practice/index