From 55e6fd3e81a5e0bbb6ede440fbf837cb518e3375 Mon Sep 17 00:00:00 2001 From: Rowena Date: Wed, 28 Aug 2024 14:50:10 +0200 Subject: [PATCH 01/12] feat(vpc): best practices --- .../getting-most-private-networks.mdx | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 network/vpc/reference-content/getting-most-private-networks.mdx diff --git a/network/vpc/reference-content/getting-most-private-networks.mdx b/network/vpc/reference-content/getting-most-private-networks.mdx new file mode 100644 index 0000000000..2fda1d7b0e --- /dev/null +++ b/network/vpc/reference-content/getting-most-private-networks.mdx @@ -0,0 +1,64 @@ +--- +meta: + title: Getting the most from Private Networks + description: Optimize your Scaleway VPCs, Private Networks and resource connectivity with this guide which details tips and best practices. +content: + h1: Getting the most from Private Networks + paragraph: Optimize your Scaleway VPCs, Private Networks and resource connectivity with this guide which details tips and best practices. +tags: vpc private-network connectivity best-practice +dates: + validation: 2024-08-28 + posted: 2024-08-28 +categories: + - network +--- + +This document sets out guidance, advice and best practices for building and optimizing your Scaleway VPCs and Private Networks. + +## What are Private Networks and VPCs? + +## Designing your network topology + +- Separation of concerns, separate different tiers (e.g. web, application, database) +- Regions and zones + +We recommend that you build your VPC infrastructure with **separation of concerns** in mind. Separation of concerns is a fundamental design principle aimed at breaking down large complex systems into smaller, distinct components each with clear responsibilities and interfaces. This kind of design will future-proof your VPC and come into its own when we introduce features such as custom routing and ACLs. + + Separating resources into different Private Networks according to function and usage can: +- Improve network performance by reducing broadcast traffic and congestion +- Enhance manageability via a logical organization of resources +- Enable easier troubleshooting, monitoring and maintenance +- Allow for easier scalability + +For example, you may use one Private Network for frontend resources and another for backend resources, limiting public access only via Load Balancers and/or Public Gateways. + +## Creating a Private Network + +- Subnetting + +## Attaching resources to Private Networks + +- Using IPAM to reserve and assign IPs +- Considering whether public IP is necessary + +## Connecting your Private Networks + +- Public Gateways +- Load Balancers +- VPC Routing +- VPC Peering + +## Security best practices + +- Security groups and network ACLs +- Monitoring and logging (Utilizing cloud provider tools for network traffic analysis and security auditing.) +- Apply the principals of zero trust networking + +## Cost management +- Understand pricing +- Avoid common pitfalls that can lead to unexpected charges via cost optimization + +## Use cases + + +## \ No newline at end of file From 4209f5b2c4fb2f94768d2704bf13ebcb604d7c7d Mon Sep 17 00:00:00 2001 From: Rowena Date: Wed, 28 Aug 2024 17:54:31 +0200 Subject: [PATCH 02/12] feat(vpc): continued content --- .../assets/scaleway-vpc-osi.webp | Bin 0 -> 120418 bytes .../assets/scaleway-vpc-schema.webp | Bin 0 -> 86942 bytes .../getting-most-private-networks.mdx | 29 ++++++++++++++---- 3 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 network/vpc/reference-content/assets/scaleway-vpc-osi.webp create mode 100644 network/vpc/reference-content/assets/scaleway-vpc-schema.webp diff --git a/network/vpc/reference-content/assets/scaleway-vpc-osi.webp b/network/vpc/reference-content/assets/scaleway-vpc-osi.webp new file mode 100644 index 0000000000000000000000000000000000000000..911e0a8c572af0bc5f0ee7ac11dfb8b70e5ed3c2 GIT binary patch literal 120418 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

q@$ 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 literal 0 HcmV?d00001 diff --git a/network/vpc/reference-content/assets/scaleway-vpc-schema.webp b/network/vpc/reference-content/assets/scaleway-vpc-schema.webp new file mode 100644 index 0000000000000000000000000000000000000000..25adf4f1afd990dfdb8ee1b21496d50358cc2da0 GIT binary patch literal 86942 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 ZA}(7R-mZPMzi*URG + +VPCs and Private Networks are both **regional** resources. When you create a Private Network in a VPC, it is necessarily scoped to the same region as the VPC. Some Scaleway resources are also regional, others are zonal and scoped to a single Availability Zone (AZ). When attaching resources to a Private Network, you can attach resources from any AZ within the Private Network's region, allowing for example an Elastic Metal server in PAR-2 to communicate securely, away from the public internet, with an Instance in PAR-1 and a Managed Database in PAR-3. + + -- Separation of concerns, separate different tiers (e.g. web, application, database) -- Regions and zones +| Region | Availability Zones | +|-------------------------|---------------------------| +| France - Paris | PAR1, PAR2, PAR3 | +| Netherlands - Amsterdam | AMS1, AMS2, AMS3 | +| Poland - Warsaw | WAW1, WAW2, WAW3 | -We recommend that you build your VPC infrastructure with **separation of concerns** in mind. Separation of concerns is a fundamental design principle aimed at breaking down large complex systems into smaller, distinct components each with clear responsibilities and interfaces. This kind of design will future-proof your VPC and come into its own when we introduce features such as custom routing and ACLs. +One default VPC for each region is automatically created in each Scaleway [Project](/identity-and-access-management/organizations-and-projects/concepts/#project). + +## Designing your network topology + +When you start creating resources and building your infrastructure with Scaleway, take some time to consider and plan your network topology. We recommend that you build your VPC infrastructure with **separation of concerns** in mind. Separation of concerns is a fundamental design principle aimed at breaking down large complex systems into smaller, distinct components each with clear responsibilities and interfaces. This kind of design will future-proof your VPC and come into its own when Scaleway introduces features such as custom routing and ACLs. Separating resources into different Private Networks according to function and usage can: - Improve network performance by reducing broadcast traffic and congestion @@ -30,9 +45,9 @@ We recommend that you build your VPC infrastructure with **separation of concern - Enable easier troubleshooting, monitoring and maintenance - Allow for easier scalability -For example, you may use one Private Network for frontend resources and another for backend resources, limiting public access only via Load Balancers and/or Public Gateways. +For example, you may use one Private Network for frontend resources and another for backend resources, limiting public access only via Load Balancers and/or Public Gateways, stripping other resources of public IP addresses. You may want to create different VPCs for production and test environments, allowing you isolate potential errors in testing from the production environment. -## Creating a Private Network +## Creating Private Networks - Subnetting @@ -48,6 +63,8 @@ For example, you may use one Private Network for frontend resources and another - VPC Routing - VPC Peering +For secure, dedicated connectivity between resources in a Scaleway VPC and your on-premises architecture, consider creating an [InterLink](TODO). Otherwise, you may consider installing a manual VPN on a Scaleway Instance to connect to other non-Scaleway infrastructure, and create a [custom route](TODO) towards this VPN so traffic on your Private Network can securely communicate with resources at the other end of your VPN tunnel. + ## Security best practices - Security groups and network ACLs From bb30105d2dc2a612cac370c2eea8f0906eb2b6ee Mon Sep 17 00:00:00 2001 From: Rowena Date: Mon, 2 Sep 2024 17:46:53 +0200 Subject: [PATCH 03/12] feat(ipam): continued doc --- .../getting-most-private-networks.mdx | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/network/vpc/reference-content/getting-most-private-networks.mdx b/network/vpc/reference-content/getting-most-private-networks.mdx index 0115638fc6..8f78a22d7d 100644 --- a/network/vpc/reference-content/getting-most-private-networks.mdx +++ b/network/vpc/reference-content/getting-most-private-networks.mdx @@ -47,16 +47,29 @@ When you start creating resources and building your infrastructure with Scaleway For example, you may use one Private Network for frontend resources and another for backend resources, limiting public access only via Load Balancers and/or Public Gateways, stripping other resources of public IP addresses. You may want to create different VPCs for production and test environments, allowing you isolate potential errors in testing from the production environment. -## Creating Private Networks - -- Subnetting +When [creating a Private Network](/network/vpc/how-to/create-private-network/), you can let Scaleway automatically generate a CIDR block for it that is guaranteed to be unique in this VPC. All resources attached to the Private Network will be allocated a private IP address from this block. However, you also have the option to define your own CIDR block for the network. Ensure you choose a prefix and network size that is appropriate for your needs, does not overlap with that of any other Private Network in the VPC, and contains enough IP addresses for all resources that will be attached to the Private Network. ## Attaching resources to Private Networks -- Using IPAM to reserve and assign IPs -- Considering whether public IP is necessary +When you attach a resource (e.g. an Instance, an Elastic Metal server) to a Private Network, you can either: +- Let Scaleway automatically assign any IP address from the Private Network's CIDR block to use for the attachment, or +- Define a specific, reserved IP address from the CIDR block to use for the attachment. + +### Auto-assigning any available IP address + +This solution is best for simplicity, dynamic environments, and short-lived resources. It can be especially useful in large-scale deployments where manual IP management could be cumbersome. When you let Scaleway automatically assign IP addresses, we ensure there are no IP conflicts within your VPC, reducing any risk of human error. + +Note that when you select this option, the IP address randomly assigned to the resource will be stable, and does not risk changing until you detach the resource from the Private Network. At this point, the private IP address is released back into the pool of generally available addresses from the network's CIDR block, and may be auto-assigned to another resource requesting attachment. + +### Using reserved IP addresses + +You can reserve private IP addresses from your Private Networks' CIDR blocks thanks to Scaleway's [**IP A**ddress **M**anagement solution](/network/ipam/), which helps you plan, track and manage the IP address space of your VPCs and their Private Networks. Simply select the Private Network you want to reserve an IP address on, and choose to either reserve any available address, or a specific address not currently attached to any resource. The reserved address will then not risk being auto-assigned by Scaleway to other resources during network attachment, and can be kept until you are ready to use it to attach a specific resource. + +Further, when you attach a resource to a Private Network and specify a reserved IP to use, the IP will remain reserved even after you detach the resource from the network. You can choose to either release the IP back into the pool, or keep it reserved until you use it to attach another resource. + +Using reserved IP addresses is ideal to ensure that certain IP addresses are never released into the general pool and kept for certain critical resources with fixed IP requirements, even when that resource is detached from the Private Network, or when migrating between resources. Reserved IP addresses may also be useful where your Private Network is extending or integrating with external networks via InterLink or manual VPNs, or to assign addresses to virtual machines hosted on Elastic Metal servers via Proxmox. -## Connecting your Private Networks +## NOT GIVING A PUBLIC IP - Public Gateways - Load Balancers From 895c07d8d7bbcc8651ee8461f15fc252a9a681dd Mon Sep 17 00:00:00 2001 From: Rowena Date: Fri, 27 Sep 2024 17:55:58 +0200 Subject: [PATCH 04/12] feat(vpc): getting most from private networks --- .../getting-most-private-networks.mdx | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/network/vpc/reference-content/getting-most-private-networks.mdx b/network/vpc/reference-content/getting-most-private-networks.mdx index 8f78a22d7d..9f0fe1c4a5 100644 --- a/network/vpc/reference-content/getting-most-private-networks.mdx +++ b/network/vpc/reference-content/getting-most-private-networks.mdx @@ -19,7 +19,7 @@ This document sets out guidance, advice and best practices for building and opti VPC allows you to build your own **V**irtual **P**rivate **C**loud on top of Scaleway's shared public cloud. Within each VPC, you can create **Private Networks**. Resources attached to Private Networks can communicate securely between themselves, away from the public internet, reducing security risks by ensuring traffic is isolated from public routes. -The VPC operates at the network layer (layer 3) of the OSI model, while Private Networks are a layer 2 resource. As such, a VPC is responsible for routing packets between its different Private Networks. The [**VPC Routing**](TODO) feature auto-creates managed routes between the Private Networks of a VPC, so resources on different Private Networks within a VPC can communicate. You can also use [InterLink](TODO) to connect your VPC to your own on-premises infrastructure. Meanwhile, Private Networks provide network isolation within a VPC and enable you to segment your resources and traffic across different subnets. +The VPC operates at the network layer (layer 3) of the OSI model, while Private Networks are a layer 2 resource. As such, a VPC is responsible for routing packets between its different Private Networks. Private Networks provide network isolation within a VPC and enable you to segment your resources and traffic across different subnets. The [**VPC Routing**](TODO) feature allows for managed and custom routes between the Private Networks of a VPC, so resources on different subnets can communicate. @@ -47,7 +47,7 @@ When you start creating resources and building your infrastructure with Scaleway For example, you may use one Private Network for frontend resources and another for backend resources, limiting public access only via Load Balancers and/or Public Gateways, stripping other resources of public IP addresses. You may want to create different VPCs for production and test environments, allowing you isolate potential errors in testing from the production environment. -When [creating a Private Network](/network/vpc/how-to/create-private-network/), you can let Scaleway automatically generate a CIDR block for it that is guaranteed to be unique in this VPC. All resources attached to the Private Network will be allocated a private IP address from this block. However, you also have the option to define your own CIDR block for the network. Ensure you choose a prefix and network size that is appropriate for your needs, does not overlap with that of any other Private Network in the VPC, and contains enough IP addresses for all resources that will be attached to the Private Network. +When [creating a Private Network](/network/vpc/how-to/create-private-network/), you can let Scaleway automatically generate a CIDR block for it that is guaranteed to be unique in this VPC. All resources attached to the Private Network get a private IP address from this block. However, you also have the option to define your own CIDR block for the network. Ensure you choose a prefix and network size that is appropriate for your needs, does not overlap with that of any other Private Network in the VPC, and contains enough IP addresses for all resources that will be attached to the Private Network. ## Attaching resources to Private Networks @@ -63,32 +63,36 @@ Note that when you select this option, the IP address randomly assigned to the r ### Using reserved IP addresses -You can reserve private IP addresses from your Private Networks' CIDR blocks thanks to Scaleway's [**IP A**ddress **M**anagement solution](/network/ipam/), which helps you plan, track and manage the IP address space of your VPCs and their Private Networks. Simply select the Private Network you want to reserve an IP address on, and choose to either reserve any available address, or a specific address not currently attached to any resource. The reserved address will then not risk being auto-assigned by Scaleway to other resources during network attachment, and can be kept until you are ready to use it to attach a specific resource. +You can reserve private IP addresses from your Private Networks' CIDR blocks thanks to Scaleway's [**IP A**ddress **M**anagement solution](/network/ipam/), which helps you plan, track and manage the IP address space of your VPCs and their Private Networks. From the [IPAM space](https://console.scaleway.com/ipam/) in the Scaleway console, simply use the **Reserve private IP** feature to select the Private Network you want to reserve an IP address on, and choose to either reserve any available address, or a specific address not currently attached to any resource. The reserved address will then not risk being auto-assigned by Scaleway to other resources during network attachment, and can be kept until you are ready to use it to attach a specific resource. Further, when you attach a resource to a Private Network and specify a reserved IP to use, the IP will remain reserved even after you detach the resource from the network. You can choose to either release the IP back into the pool, or keep it reserved until you use it to attach another resource. -Using reserved IP addresses is ideal to ensure that certain IP addresses are never released into the general pool and kept for certain critical resources with fixed IP requirements, even when that resource is detached from the Private Network, or when migrating between resources. Reserved IP addresses may also be useful where your Private Network is extending or integrating with external networks via InterLink or manual VPNs, or to assign addresses to virtual machines hosted on Elastic Metal servers via Proxmox. +Using reserved IP addresses is ideal to ensure that certain IP addresses are never released into the general pool and kept for certain critical resources with fixed IP requirements, even when that resource is detached from the Private Network, or when migrating between resources. Reserved IP addresses may also be useful where your Private Network is extending or integrating with external networks, or to assign addresses to virtual machines hosted on Elastic Metal servers via Proxmox. -## NOT GIVING A PUBLIC IP +## Removing public IPs from resources -- Public Gateways -- Load Balancers -- VPC Routing -- VPC Peering +We strongly recommend that you remove public (flexible) IP addresses from any of your Scaleway resources where public access is not absolutely required. Attaching resources to Private Networks, and limiting their communication to these networks only brings the following advantages: -For secure, dedicated connectivity between resources in a Scaleway VPC and your on-premises architecture, consider creating an [InterLink](TODO). Otherwise, you may consider installing a manual VPN on a Scaleway Instance to connect to other non-Scaleway infrastructure, and create a [custom route](TODO) towards this VPN so traffic on your Private Network can securely communicate with resources at the other end of your VPN tunnel. +- **Minimized attack surface**: Without a public IP address, the resource is not exposed directly to the internet, decreasing the risk of DDoS or brute force attacks, or unauthorized access. +- **Reduced cost**: Public (flexible) IP addresses are [billed](TODO), whereas Private Networks and the private IP addresses that attach resources to Private Networks are free of charge. +- **Improved latency**: Communication between resources over a Private Network is generally faster, as it does not need to be routed through the public internet. -## Security best practices +## Safely exposing a Private Network to the internet -- Security groups and network ACLs -- Monitoring and logging (Utilizing cloud provider tools for network traffic analysis and security auditing.) -- Apply the principals of zero trust networking +### Public Gateways -## Cost management -- Understand pricing -- Avoid common pitfalls that can lead to unexpected charges via cost optimization +You can use Scaleway [Public Gateways](/network/public-gateways/) to provide resources on a Private Network with a secure point of access to and from the public internet. -## Use cases +- Set the Public Gateway to advertize a default route to the internet, allowing attached resources to send packets to the internet via the gateway, without needing their own public IP address. +- Activate the [SSH bastion](TODO) so that you can establish SSH connections to resources on the Private Network via the gateway's bastion. +- Use static NAT to map ingress traffic from the public internet towards resources on the Private Network, using private IP addresses and ports. +### Load Balancers -## \ No newline at end of file +Another option is to attach a Scaleway [Load Balancer](TODO) to the Private Network. By giving the Load Balancer a public IP address, and configuring Instances on the Private Network as backend servers for the Load Balancer via their private IP addresses, the Load Balancer can securely and efficiently distribute traffic to the Instances. This solution is suitable when you have multiple Instances serving the same application. + +You can also remove the public IP address from the Load Balancer itself. This may be relevant if the Load Balancer is configured to receive and distribute traffic from resources on a different Private Network within the same VPC, for example. + +## Connecting a VPC to external infrastructure + +Watch this space for Scaleway's upcoming solution to provide secure, dedicated connectivity between resources in a Scaleway VPC and your external or on-premises architecture. In the meantime, you may consider installing a manual VPN on a Scaleway Instance to connect to other non-Scaleway infrastructure, and create a [custom route](TODO) towards this VPN so traffic on your Private Network can securely communicate with resources at the other end of your VPN tunnel. \ No newline at end of file From e38760bc6744ddcc59e79fc45c48e29d66733732 Mon Sep 17 00:00:00 2001 From: Rowena Date: Mon, 30 Sep 2024 17:35:27 +0200 Subject: [PATCH 05/12] fix(vpc): continued doc --- network/ipam/reference-content/index.mdx | 8 + .../public-connectivity-best-practices.mdx | 149 ++++++++++++++++++ .../getting-most-private-networks.mdx | 40 ++++- 3 files changed, 192 insertions(+), 5 deletions(-) create mode 100644 network/ipam/reference-content/index.mdx create mode 100644 network/ipam/reference-content/public-connectivity-best-practices.mdx diff --git a/network/ipam/reference-content/index.mdx b/network/ipam/reference-content/index.mdx new file mode 100644 index 0000000000..55c52f78b1 --- /dev/null +++ b/network/ipam/reference-content/index.mdx @@ -0,0 +1,8 @@ +--- +meta: + title: IPAM - Additional content + description: IPAM additional content +content: + h1: IPAM - Additional content + paragraph: IPAM additional content +--- diff --git a/network/ipam/reference-content/public-connectivity-best-practices.mdx b/network/ipam/reference-content/public-connectivity-best-practices.mdx new file mode 100644 index 0000000000..e8a80df9fa --- /dev/null +++ b/network/ipam/reference-content/public-connectivity-best-practices.mdx @@ -0,0 +1,149 @@ +--- +meta: + title: Public connectivity - best practices + description: Discover essential best practices for securing and optimizing public connectivity in your Scaleway cloud environment. Learn how to enhance performance and ensure robust protection. +content: + h1: Public connectivity - best practices + paragraph: Discover essential best practices for securing and optimizing public connectivity in your Scaleway cloud environment. Learn how to enhance performance and ensure robust protection. +tags: flexible-ip public-ip private-network connectivity best-practice +dates: + validation: 2024-09-30 + posted: 2024-09-30 +categories: + - network +--- + +This document sets out best practices for securing and optimizing public connectivity for your Scaleway resources. + +## Public vs private connectivity + +Public vs private connectivity defines how resources are accessed and exposed over networks. + +* **Public connectivity**: Your resource has a [public IP address](TODO) and is reachable over the public internet. Anyone with the right credentials can access the resource via its public IP address, e.g. over an [SSH connection](TODO) or simply by directly accessing its IP address in a browser to retrieve and display any content it is serving, e.g. over HTTP. + +* **Private connectivity**: Your resources is reachable over an attached [Private Network](TODO). The resource has a [private IP address](TODO), but it can only be accessed via this address from within the Private Network. Such a resource may or may not also have a public IP address. + +## Flexible IP addresses + +Public connectivity for many types of Scaleway resources is facilitated by a [flexible IP address](TODO). + +### What is a flexible IP? + +- A flexible IP address is a public IP address that you can attach and detach from the resource at will. +- If you detach it, it returns to the pool of flexible IP addresses kept in your account for that product, and you can attach it to a different resource (or reattach it to the same one as before). +- Flexible IP addresses are scoped to a single product and a single Availability Zone (AZ). If you create a flexible IP address for an Instance in PAR-2, you can move it to a different Instance in PAR-2, but not to an Instance in PAR-1, nor to an Elastic Metal server in any AZ. + + +### What are the advantages of flexible IP addresses? + +As flexible IP addresses can be moved between resources, they provide the following advantages: + +**Seamless failover and disaster recovery**: If your Instance, for example, goes down, you can move its public IP to a different Instance in the same AZ to ensure the service remains available. +**Zero downtime during maintenance and migration**: When you need to carry out updates, migrations or maintenance on a resource, you can temporarily move its public IP to a backup resource to avoid disruption for users. +**IP retention and consistent endpoints**: Maintaining the same IP avoids the need for frequent DNS or firewall rule updates, and makes it easier to manage your dynamic cloud environments. + +In the future, look out for even more improvements to our flexible IP offering, such as the ability to move flexible IPs between different types of products, and to manage all your public flexible IPs from your [IPAM](todo) dashboard. + +### How much do flexible IP addresses cost? + +As flexible IP addresses stay in your account, even when they are not attached to a running resource, they are generally billed separately from the resource, and at an additional cost. See our [pricing page](https://www.scaleway.com/en/pricing/) for more information. + +### Which products are compatible with flexible IPs? + +The following products have flexible IP addresses: + +- Instances +- Elastic Metal servers +- Load Balancers +- Public Gateways + + +## When is public connectivity necessary? + +## Security best practices + +Instances - Security Groups +Load Balancers - ACLs + + + + +Implementing firewalls and access control lists (ACLs). +Role of encryption (e.g., TLS/SSL) for securing data in transit. +Using Virtual Private Networks (VPNs) or dedicated secure gateways for enhanced security. +Best practices for API security when using public endpoints. +Network Traffic Management + +Leveraging content delivery networks (CDNs) for efficient data delivery. +Rate limiting and throttling to prevent abuse of public-facing services. +Load balancing strategies to distribute traffic and maintain high availability. +IP Address Management + +Best practices for managing public IP addresses. +Use of elastic or static IPs. +Avoiding IP address conflicts. +DDoS Mitigation + +Techniques for preventing Distributed Denial of Service attacks. +Using cloud-native DDoS protection services. +Monitoring and Observability + +Setting up real-time monitoring of public endpoints. +Alerting and logging practices to detect and respond to unusual activity. +Use of analytics tools for traffic and usage monitoring. +Compliance and Regulatory Considerations + +Ensuring compliance with data protection laws when using public connectivity (e.g., GDPR, HIPAA). +Secure handling of personally identifiable information (PII) in public environments. +Performance Optimization + +Optimizing DNS resolution times. +Caching strategies to reduce latency. +Reducing bottlenecks with edge computing and microservices. +Disaster Recovery and Redundancy + +Ensuring failover and redundancy for public-facing services. +Strategies for backup and disaster recovery over public networks. + + + +## Removing public IPs from resources + +We strongly recommend that you remove public (flexible) IP addresses from any of your Scaleway resources where public access is not absolutely required. Attaching resources to Private Networks, and limiting their communication to these networks only brings the following advantages: + +- **Minimized attack surface**: Without a public IP address, the resource is not exposed directly to the internet, decreasing the risk of DDoS or brute force attacks, or unauthorized access. +- **Reduced cost**: Public (flexible) IP addresses are [billed](TODO), whereas Private Networks and the private IP addresses that attach resources to Private Networks are free of charge. +- **Improved latency**: Communication between resources over a Private Network is generally faster, as it does not need to be routed through the public internet. + +## Safely exposing a Private Network to the internet + +### Public Gateways + +You can use Scaleway [Public Gateways](/network/public-gateways/) to provide resources on a Private Network with a secure point of access to and from the public internet. + +- Set the Public Gateway to advertize a default route to the internet, allowing attached resources to send packets to the internet via the gateway, without needing their own public IP address. +- Activate the [SSH bastion](TODO) so that you can establish SSH connections to resources on the Private Network via the gateway's bastion. +- Use static NAT to map ingress traffic from the public internet towards resources on the Private Network, using private IP addresses and ports. + +### Load Balancers + +Another option is to attach a Scaleway [Load Balancer](TODO) to the Private Network. By giving the Load Balancer a public IP address, and configuring Instances on the Private Network as backend servers for the Load Balancer via their private IP addresses, the Load Balancer can securely and efficiently distribute traffic to the Instances. This solution is suitable when you have multiple Instances serving the same application. + +You can also remove the public IP address from the Load Balancer itself. This may be relevant if the Load Balancer is configured to receive and distribute traffic from resources on a different Private Network within the same VPC, for example. + +## Connecting a VPC to external infrastructure + +Watch this space for Scaleway's upcoming solution to provide secure, dedicated connectivity between resources in a Scaleway VPC and your external or on-premises architecture. In the meantime, you may consider installing a manual VPN on a Scaleway Instance to connect to other non-Scaleway infrastructure, and create a [custom route](TODO) towards this VPN so traffic on your Private Network can securely communicate with resources at the other end of your VPN tunnel. + +## Instances + +Public + +Users can configure a public IPv4 address and or a public IPv6. They can either select from flexible IP options or generate a new one. +Instances can select up to 5 IPs to attach (and more after). +Users will be able to change it later in the Flexible IP section (detach/attach). +Users can choose to not take IPv4 addresses and only have IPv6 (not the case in other products). +If the user activates the setup of a public IP and doesn’t choose an IP type, they will encounter an error requiring them to select at least one IP. +The same applies for private IPs if they don’t fill in PN and private IPs. + +Hypotheses: all Instances are routed \ No newline at end of file diff --git a/network/vpc/reference-content/getting-most-private-networks.mdx b/network/vpc/reference-content/getting-most-private-networks.mdx index 9f0fe1c4a5..61530c126b 100644 --- a/network/vpc/reference-content/getting-most-private-networks.mdx +++ b/network/vpc/reference-content/getting-most-private-networks.mdx @@ -19,7 +19,7 @@ This document sets out guidance, advice and best practices for building and opti VPC allows you to build your own **V**irtual **P**rivate **C**loud on top of Scaleway's shared public cloud. Within each VPC, you can create **Private Networks**. Resources attached to Private Networks can communicate securely between themselves, away from the public internet, reducing security risks by ensuring traffic is isolated from public routes. -The VPC operates at the network layer (layer 3) of the OSI model, while Private Networks are a layer 2 resource. As such, a VPC is responsible for routing packets between its different Private Networks. Private Networks provide network isolation within a VPC and enable you to segment your resources and traffic across different subnets. The [**VPC Routing**](TODO) feature allows for managed and custom routes between the Private Networks of a VPC, so resources on different subnets can communicate. +The VPC operates at the network layer (layer 3) of the OSI model, while Private Networks are a layer 2 resource. As such, a VPC is responsible for routing packets between its different Private Networks. Private Networks provide network isolation within a VPC and enable you to segment your resources and traffic across different subnets. The [**VPC routing**](/network/vpc/concepts/#routing) feature allows for managed and custom routes between the Private Networks of a VPC, so resources on different subnets can communicate. @@ -74,7 +74,7 @@ Using reserved IP addresses is ideal to ensure that certain IP addresses are nev We strongly recommend that you remove public (flexible) IP addresses from any of your Scaleway resources where public access is not absolutely required. Attaching resources to Private Networks, and limiting their communication to these networks only brings the following advantages: - **Minimized attack surface**: Without a public IP address, the resource is not exposed directly to the internet, decreasing the risk of DDoS or brute force attacks, or unauthorized access. -- **Reduced cost**: Public (flexible) IP addresses are [billed](TODO), whereas Private Networks and the private IP addresses that attach resources to Private Networks are free of charge. +- **Reduced cost**: Public (flexible) IP addresses are [billed](https://www.scaleway.com/en/pricing/), whereas Private Networks and the private IP addresses that attach resources to Private Networks are free of charge (except for Elastic Metal servers). - **Improved latency**: Communication between resources over a Private Network is generally faster, as it does not need to be routed through the public internet. ## Safely exposing a Private Network to the internet @@ -84,15 +84,45 @@ We strongly recommend that you remove public (flexible) IP addresses from any of You can use Scaleway [Public Gateways](/network/public-gateways/) to provide resources on a Private Network with a secure point of access to and from the public internet. - Set the Public Gateway to advertize a default route to the internet, allowing attached resources to send packets to the internet via the gateway, without needing their own public IP address. -- Activate the [SSH bastion](TODO) so that you can establish SSH connections to resources on the Private Network via the gateway's bastion. +- Activate the [SSH bastion](/network/public-gateways/how-to/use-ssh-bastion/) so that you can establish SSH connections to resources on the Private Network via the gateway's bastion. - Use static NAT to map ingress traffic from the public internet towards resources on the Private Network, using private IP addresses and ports. ### Load Balancers -Another option is to attach a Scaleway [Load Balancer](TODO) to the Private Network. By giving the Load Balancer a public IP address, and configuring Instances on the Private Network as backend servers for the Load Balancer via their private IP addresses, the Load Balancer can securely and efficiently distribute traffic to the Instances. This solution is suitable when you have multiple Instances serving the same application. +Another option is to attach a Scaleway [Load Balancer](/network/load-balancer/) to the Private Network. By giving the Load Balancer a public IP address, and configuring Instances on the Private Network as backend servers for the Load Balancer via their private IP addresses, the Load Balancer can securely and efficiently distribute traffic to the Instances. This solution is suitable when you have multiple Instances serving the same application. You can also remove the public IP address from the Load Balancer itself. This may be relevant if the Load Balancer is configured to receive and distribute traffic from resources on a different Private Network within the same VPC, for example. ## Connecting a VPC to external infrastructure -Watch this space for Scaleway's upcoming solution to provide secure, dedicated connectivity between resources in a Scaleway VPC and your external or on-premises architecture. In the meantime, you may consider installing a manual VPN on a Scaleway Instance to connect to other non-Scaleway infrastructure, and create a [custom route](TODO) towards this VPN so traffic on your Private Network can securely communicate with resources at the other end of your VPN tunnel. \ No newline at end of file +Watch this space for Scaleway's upcoming solution to provide secure, dedicated connectivity between resources in a Scaleway VPC and your external or on-premises architecture. In the meantime, you may consider installing a manual VPN on a Scaleway Instance to connect to other non-Scaleway infrastructure, and create a [custom route](/network/vpc/how-to/manage-routing/#how-to-create-a-custom-route) towards this VPN so traffic on your Private Network can securely communicate with resources at the other end of your VPN tunnel. + +## Resource-specific information + +Different types of Scaleway resources may have different requirements and possibilities in terms of Private Networks. See the comparative table below for more information, and to jump to the resource-specific documentation on Private Networks for each product. + +* **Max attached PNs**: The maximum number of Private Networks that a resource can be attached to +* **Mandatory PN**: Whether or not a Private Network must necessarily be attached to this resource +* **Compatible with private IPv6**: Whether or not the resource is compatible with private IPv6 addressing. Compatible resources generally acquire both an IPv4 and an IPv6 address when attached to a Private Network. +* **Compatible with reserved IPs**: Whether or not you can use a [reserved IP](/network/ipam/how-to/reserve-ip/#how-to-attach-a-resource-to-a-private-network-using-a-reserved-ip-address) to attach the resouce to a Private Network + +| | Instance | Elastic Metal | Kubernetes | Managed Inference | +|------------------------------|----------|---------------|------------|-------------------| +| Max attached PNs | 8 | 8 | 1 | 1 | +| Mandatory PN | No | No | Yes | No | +| Compatible with private IPv6 | Yes | Yes | Yes | No | +| Compatible with reserved IPs | Yes | Yes | No | No | +| Additional information | -- | [Paid-for
feature](https://www.scaleway.com/en/pricing/elastic-metal/#network) | PN cannot be changed
after cluster creation | Must have at least one of
private and/or public endpoint | +| Documentation | [Go](/compute/instances/how-to/use-private-networks/) | [Go](/bare-metal/elastic-metal/how-to/use-private-networks/) | [Go](/containers/kubernetes/reference-content/secure-cluster-with-private-network/#why-have-a-private-network-for-your-kubernetes-kapsule-cluster) | [Go](/ai-data/managed-inference/how-to/managed-inference-with-private-network/) | + + +| | Managed Database | Managed Database for Redis™ | Public Gateways | Load Balancer | +|------------------------------|------------------|-----------------------------|-----------------|---------------| +| Max attached PNs | 1 | 1 | 8 | 8 | +| Mandatory PN | No | No | No | No | +| Compatible with private IPv6 | No | No | No | No | +| Compatible with reserved IPs | No | No | Yes | Yes | +| Additional information | Must have at least one of
private and/or public endpoint | Must have at least one of
private and/or public endpoint | -- | Private LBs must have a PN | +| Documentation | [Go](/managed-databases/postgresql-and-mysql/how-to/connect-database-private-network/) | [Go](/faq/databases-for-redis/#what-is-the-private-networks-feature-for-redistm-database-instances) | [Go](/network/public-gateways/how-to/configure-a-public-gateway/#how-to-attach-a-public-gateway-to-a-private-network) | [Go](/network/load-balancer/how-to/use-with-private-network/) + + From 446d9ea11d6126ebac4f61911b539b6570adb087 Mon Sep 17 00:00:00 2001 From: Rowena Date: Wed, 2 Oct 2024 18:10:54 +0200 Subject: [PATCH 06/12] fix(ipam): continued content --- .../public-connectivity-best-practices.mdx | 116 ++++++------------ .../getting-most-private-networks.mdx | 8 +- 2 files changed, 37 insertions(+), 87 deletions(-) diff --git a/network/ipam/reference-content/public-connectivity-best-practices.mdx b/network/ipam/reference-content/public-connectivity-best-practices.mdx index e8a80df9fa..26385ebf3f 100644 --- a/network/ipam/reference-content/public-connectivity-best-practices.mdx +++ b/network/ipam/reference-content/public-connectivity-best-practices.mdx @@ -23,18 +23,19 @@ Public vs private connectivity defines how resources are accessed and exposed ov * **Private connectivity**: Your resources is reachable over an attached [Private Network](TODO). The resource has a [private IP address](TODO), but it can only be accessed via this address from within the Private Network. Such a resource may or may not also have a public IP address. -## Flexible IP addresses +## IP address management -Public connectivity for many types of Scaleway resources is facilitated by a [flexible IP address](TODO). +### Flexible IP addresses: definition -### What is a flexible IP? +Public connectivity for **Instances**, **Elastic Metal**, **Load Balancers** and **Public Gateways** is facilitated by a [flexible IP address](TODO). - A flexible IP address is a public IP address that you can attach and detach from the resource at will. - If you detach it, it returns to the pool of flexible IP addresses kept in your account for that product, and you can attach it to a different resource (or reattach it to the same one as before). - Flexible IP addresses are scoped to a single product and a single Availability Zone (AZ). If you create a flexible IP address for an Instance in PAR-2, you can move it to a different Instance in PAR-2, but not to an Instance in PAR-1, nor to an Elastic Metal server in any AZ. +Other resource types generally facilitate public connectivity in other ways, e.g. via public endpoints that cannot be modified by the user. Public connectivity may be mandatory with no option to deactivate (e.g. for Apple Silicon), or optional (e.g. for Managed Database). See the specific documentation for the product in question to find out more. -### What are the advantages of flexible IP addresses? +### Exploiting the benefits of flexible IPs As flexible IP addresses can be moved between resources, they provide the following advantages: @@ -44,106 +45,59 @@ As flexible IP addresses can be moved between resources, they provide the follow In the future, look out for even more improvements to our flexible IP offering, such as the ability to move flexible IPs between different types of products, and to manage all your public flexible IPs from your [IPAM](todo) dashboard. -### How much do flexible IP addresses cost? +### Limiting public connectivity, prioritizing Private Networks -As flexible IP addresses stay in your account, even when they are not attached to a running resource, they are generally billed separately from the resource, and at an additional cost. See our [pricing page](https://www.scaleway.com/en/pricing/) for more information. +We strongly recommend that you disable public connectivity on all of your Scaleway resources, unless it is absolutely required. Attaching resources to Private Networks, and limiting their communication to these networks brings the following advantages: -### Which products are compatible with flexible IPs? - -The following products have flexible IP addresses: - -- Instances -- Elastic Metal servers -- Load Balancers -- Public Gateways - - -## When is public connectivity necessary? - -## Security best practices - -Instances - Security Groups -Load Balancers - ACLs - - - - -Implementing firewalls and access control lists (ACLs). -Role of encryption (e.g., TLS/SSL) for securing data in transit. -Using Virtual Private Networks (VPNs) or dedicated secure gateways for enhanced security. -Best practices for API security when using public endpoints. -Network Traffic Management - -Leveraging content delivery networks (CDNs) for efficient data delivery. -Rate limiting and throttling to prevent abuse of public-facing services. -Load balancing strategies to distribute traffic and maintain high availability. -IP Address Management +- **Minimized attack surface**: Without a public IP address, the resource is not exposed directly to the internet, decreasing the risk of DDoS or brute force attacks, or unauthorized access. +- **Reduced cost**: Public (flexible) IP addresses are [billed](https://www.scaleway.com/en/pricing/), whereas Private Networks and the private IP addresses that attach resources to Private Networks are free of charge (except for Elastic Metal servers). +- **Improved latency**: Communication between resources over a Private Network is generally faster, as it does not need to be routed through the public internet. -Best practices for managing public IP addresses. -Use of elastic or static IPs. -Avoiding IP address conflicts. -DDoS Mitigation +Favor resources such as Public Gateways and Load Balancers to provide access to the public internet over the Private Network. This allows Instances and other attached resources to send and receive packets to the internet through a single, secure point of access. -Techniques for preventing Distributed Denial of Service attacks. -Using cloud-native DDoS protection services. -Monitoring and Observability +Find out more about how to get the most from Private Networks, and how to expose Private Networks to the internet in our [dedicated documentation](/network/vpc/reference-content/getting-most-private-networks/#exposing-a-private-network-to-the-internet) -Setting up real-time monitoring of public endpoints. -Alerting and logging practices to detect and respond to unusual activity. -Use of analytics tools for traffic and usage monitoring. -Compliance and Regulatory Considerations +## Implementing security controls -Ensuring compliance with data protection laws when using public connectivity (e.g., GDPR, HIPAA). -Secure handling of personally identifiable information (PII) in public environments. -Performance Optimization +Different products offer different security features and controls to help place limits and restrictions on the traffic arriving over your resource's public interface. We strongly recommend that you implement all available measures to minimize security risk and optimize the security of your resource. Some of the available security controls are listed below. -Optimizing DNS resolution times. -Caching strategies to reduce latency. -Reducing bottlenecks with edge computing and microservices. -Disaster Recovery and Redundancy +### Instances: Security groups -Ensuring failover and redundancy for public-facing services. -Strategies for backup and disaster recovery over public networks. +[Security groups](/compute/instances/concepts/#security-group) act as firewalls, filtering public internet traffic on your Instances. They can be stateful or stateless, and allow you to create rules to drop or allow public traffic to and from your Instance. [Find out how to create and configure security groups](/compute/instances/how-to/use-security-groups/). +### Load Balancers: ACLs + -## Removing public IPs from resources +Learn how to use the ACL feature in our [dedicated how-to](/network/load-balancer/how-to/create-manage-acls/) and go deeper with our [reference documentation](/network/load-balancer/reference-content/acls/). -We strongly recommend that you remove public (flexible) IP addresses from any of your Scaleway resources where public access is not absolutely required. Attaching resources to Private Networks, and limiting their communication to these networks only brings the following advantages: +### Other controls -- **Minimized attack surface**: Without a public IP address, the resource is not exposed directly to the internet, decreasing the risk of DDoS or brute force attacks, or unauthorized access. -- **Reduced cost**: Public (flexible) IP addresses are [billed](TODO), whereas Private Networks and the private IP addresses that attach resources to Private Networks are free of charge. -- **Improved latency**: Communication between resources over a Private Network is generally faster, as it does not need to be routed through the public internet. +For resources such as Instances and Elastic Metal servers, you may wish to implement third-party manual solutions in front of your public services to enhance security, for example: -## Safely exposing a Private Network to the internet +- Deploying a reverse proxy, e.g. Nginx (TODO), and configuring it to enforce rate limits and to throttle traffic. This helps to prevent abuse and DDOS attacks on your public-facing services. +- Installing a **W**eb **A**pplication **F**irewall that can filter out malicious traffic such as requests containing attack patterns, or requests from blacklisted IPs. -### Public Gateways +## Handle traffic surges with autoscaling, caching and load balacing solutions -You can use Scaleway [Public Gateways](/network/public-gateways/) to provide resources on a Private Network with a secure point of access to and from the public internet. +Autoscaling for Traffic Spikes +While not a direct DDoS mitigation strategy, setting up auto-scaling policies for your infrastructure (if the cloud provider supports it) helps ensure that your services can handle legitimate traffic surges, reducing the risk of a DDoS attack taking down your system due to resource exhaustion. -- Set the Public Gateway to advertize a default route to the internet, allowing attached resources to send packets to the internet via the gateway, without needing their own public IP address. -- Activate the [SSH bastion](TODO) so that you can establish SSH connections to resources on the Private Network via the gateway's bastion. -- Use static NAT to map ingress traffic from the public internet towards resources on the Private Network, using private IP addresses and ports. +Combine this with traffic monitoring to quickly identify when a scaling event might be triggered by malicious activity. -### Load Balancers +Deploy a CDN (Content Delivery Network) +A CDN like Cloudflare, Akamai, or Fastly can help protect your public services by absorbing DDoS traffic. CDNs have global networks that can cache content, distribute traffic, and mitigate DDoS attacks at the edge before they reach your origin server. This minimizes the load on your infrastructure and prevents resource exhaustion. -Another option is to attach a Scaleway [Load Balancer](TODO) to the Private Network. By giving the Load Balancer a public IP address, and configuring Instances on the Private Network as backend servers for the Load Balancer via their private IP addresses, the Load Balancer can securely and efficiently distribute traffic to the Instances. This solution is suitable when you have multiple Instances serving the same application. +P Blacklisting/Whitelisting +Manually configure firewalls or load balancers to limit access to your public services by: -You can also remove the public IP address from the Load Balancer itself. This may be relevant if the Load Balancer is configured to receive and distribute traffic from resources on a different Private Network within the same VPC, for example. +Blocking known malicious IPs or IP ranges (e.g., using public threat intelligence feeds). +Whitelisting trusted IP addresses (especially for administrative interfaces or APIs) and blocking all others. This reduces your attack surface, allowing access only to known entities. -## Connecting a VPC to external infrastructure +## Monitoring and alerting via Scaleway Cockpit -Watch this space for Scaleway's upcoming solution to provide secure, dedicated connectivity between resources in a Scaleway VPC and your external or on-premises architecture. In the meantime, you may consider installing a manual VPN on a Scaleway Instance to connect to other non-Scaleway infrastructure, and create a [custom route](TODO) towards this VPN so traffic on your Private Network can securely communicate with resources at the other end of your VPN tunnel. +(Setting up real-time monitoring of public endpoints, alerting and logging practices to detect and respond to unusual activity, Use of analytics tools for traffic and usage monitoring) -## Instances -Public -Users can configure a public IPv4 address and or a public IPv6. They can either select from flexible IP options or generate a new one. -Instances can select up to 5 IPs to attach (and more after). -Users will be able to change it later in the Flexible IP section (detach/attach). -Users can choose to not take IPv4 addresses and only have IPv6 (not the case in other products). -If the user activates the setup of a public IP and doesn’t choose an IP type, they will encounter an error requiring them to select at least one IP. -The same applies for private IPs if they don’t fill in PN and private IPs. -Hypotheses: all Instances are routed \ No newline at end of file diff --git a/network/vpc/reference-content/getting-most-private-networks.mdx b/network/vpc/reference-content/getting-most-private-networks.mdx index 61530c126b..cc2f2025d1 100644 --- a/network/vpc/reference-content/getting-most-private-networks.mdx +++ b/network/vpc/reference-content/getting-most-private-networks.mdx @@ -71,13 +71,9 @@ Using reserved IP addresses is ideal to ensure that certain IP addresses are nev ## Removing public IPs from resources -We strongly recommend that you remove public (flexible) IP addresses from any of your Scaleway resources where public access is not absolutely required. Attaching resources to Private Networks, and limiting their communication to these networks only brings the following advantages: +We strongly recommend that you disable public connectivity on all of your Scaleway resources, unless it is absolutely required. It is preferable to attach resources to Private Networks wherever possible, and direct all traffic to the resource's private IP address on that network. This ensures optimal security, reduced cost and enhanced latency. Find out more in our documentation about [public connectivity best practices](/network/ipam/reference-content/public-connectivity-best-practices). -- **Minimized attack surface**: Without a public IP address, the resource is not exposed directly to the internet, decreasing the risk of DDoS or brute force attacks, or unauthorized access. -- **Reduced cost**: Public (flexible) IP addresses are [billed](https://www.scaleway.com/en/pricing/), whereas Private Networks and the private IP addresses that attach resources to Private Networks are free of charge (except for Elastic Metal servers). -- **Improved latency**: Communication between resources over a Private Network is generally faster, as it does not need to be routed through the public internet. - -## Safely exposing a Private Network to the internet +## Exposing a Private Network to the internet ### Public Gateways From 9b62fe6ef9f194793ce13121c0101a89478a41b5 Mon Sep 17 00:00:00 2001 From: Rowena Date: Thu, 3 Oct 2024 16:42:04 +0200 Subject: [PATCH 07/12] fix(nw): finished docs --- .../public-connectivity-best-practices.mdx | 41 +++++++++++++------ .../getting-most-private-networks.mdx | 16 ++++---- 2 files changed, 36 insertions(+), 21 deletions(-) diff --git a/network/ipam/reference-content/public-connectivity-best-practices.mdx b/network/ipam/reference-content/public-connectivity-best-practices.mdx index 26385ebf3f..f2f98d4ecb 100644 --- a/network/ipam/reference-content/public-connectivity-best-practices.mdx +++ b/network/ipam/reference-content/public-connectivity-best-practices.mdx @@ -23,7 +23,7 @@ Public vs private connectivity defines how resources are accessed and exposed ov * **Private connectivity**: Your resources is reachable over an attached [Private Network](TODO). The resource has a [private IP address](TODO), but it can only be accessed via this address from within the Private Network. Such a resource may or may not also have a public IP address. -## IP address management +## Effectively managing IP addresses ### Flexible IP addresses: definition @@ -53,7 +53,16 @@ We strongly recommend that you disable public connectivity on all of your Scalew - **Reduced cost**: Public (flexible) IP addresses are [billed](https://www.scaleway.com/en/pricing/), whereas Private Networks and the private IP addresses that attach resources to Private Networks are free of charge (except for Elastic Metal servers). - **Improved latency**: Communication between resources over a Private Network is generally faster, as it does not need to be routed through the public internet. -Favor resources such as Public Gateways and Load Balancers to provide access to the public internet over the Private Network. This allows Instances and other attached resources to send and receive packets to the internet through a single, secure point of access. +Depending on the resource type, public connectivity can be disabled by: +- Toggling off **Public connectivity** when creating the resource +- Detaching an existing flexible IP address (after resource creation) +- Deactivating public connectivity (after resource creation) + + +For some products, e.g. Apple Silicon, public connectivity cannot be disabled at any stage, and for other resources, eg Managed Databases for Redis, public connectivity options cannot be modified after resource creation. Check the documentation for your specific product to learn more. + + +Favor resources such as Public Gateways and Load Balancers to provide access to the public internet over the Private Network. This allows Instances and other attached resources to send and receive packets to the internet through a single, secure point of access. You can use the Public Gateway's SSH bastion feature to [connect to your resource via its private IP address](/network/public-gateways/how-to/use-ssh-bastion/#how-to-connect-to-a-resource-behind-your-ssh-bastion). Find out more about how to get the most from Private Networks, and how to expose Private Networks to the internet in our [dedicated documentation](/network/vpc/reference-content/getting-most-private-networks/#exposing-a-private-network-to-the-internet) @@ -78,25 +87,31 @@ For resources such as Instances and Elastic Metal servers, you may wish to imple - Deploying a reverse proxy, e.g. Nginx (TODO), and configuring it to enforce rate limits and to throttle traffic. This helps to prevent abuse and DDOS attacks on your public-facing services. - Installing a **W**eb **A**pplication **F**irewall that can filter out malicious traffic such as requests containing attack patterns, or requests from blacklisted IPs. -## Handle traffic surges with autoscaling, caching and load balacing solutions +## Handling traffic surges + +Exposing your resource to the public internet can present risks of unexpected traffic surges. These may be malicious DDoS attacks, or legitimate surges that are simply the result of high demand. If correct mechanisms are not put in place to deal with high load, you risk facing downtime, service unavailability and performance degradation. A number of possibilities exist to help you handle this scenario: + +### Autoscaling -Autoscaling for Traffic Spikes -While not a direct DDoS mitigation strategy, setting up auto-scaling policies for your infrastructure (if the cloud provider supports it) helps ensure that your services can handle legitimate traffic surges, reducing the risk of a DDoS attack taking down your system due to resource exhaustion. +Scaleway currently offers Autoscaling in Public Beta. Autoscaling allows you to dynamically adjust the number of Instances within a given Instance group based on defined scaling policies. Scaling actions (scale up or down) are triggered when the monitored metric exceeds the configured thresholds from your policies. Check out the [API docuemtnation](https://www.scaleway.com/en/developers/api/autoscaling/). -Combine this with traffic monitoring to quickly identify when a scaling event might be triggered by malicious activity. +### Load Balancer -Deploy a CDN (Content Delivery Network) -A CDN like Cloudflare, Akamai, or Fastly can help protect your public services by absorbing DDoS traffic. CDNs have global networks that can cache content, distribute traffic, and mitigate DDoS attacks at the edge before they reach your origin server. This minimizes the load on your infrastructure and prevents resource exhaustion. +Placing a Scaleway Load Balancer in front of your backend servers allows you to expose multiple Instances through a single public IP. The Load Balancer distributes workload across the servers in the backend pool, ensurable scalable and continuously available applications, even during heavy traffic. You can manually add and remove servers from the backend pool as necessary, and configure the best balancing method for your particular needs. Find out more in the [Load Balancer documentation](/network/load-balancer/). -P Blacklisting/Whitelisting -Manually configure firewalls or load balancers to limit access to your public services by: +### Edge Services -Blocking known malicious IPs or IP ranges (e.g., using public threat intelligence feeds). -Whitelisting trusted IP addresses (especially for administrative interfaces or APIs) and blocking all others. This reduces your attack surface, allowing access only to known entities. +Available for Load Balancers and Object Storage buckets, Scaleway Edge Services provides a caching service to reduce load on your origin. This means that content can be served directly to users from Edge Services' servers, instead of from your Load Balancer or Object Storage bucket. [Learn more about Edge Services](/network/edge-services/). + +### Kubernetes Kapsule + +Hosting your containerized application in a managed Kubernetes cluster brings many benefits in terms of scaling and managing fluctuating demand. Kubernetes can automatically adjust the number of running resources within defined limits, based on current demand. It also offers self-healing capabilities in the case of node failure. Find out more in the [Scaleway Kubernetes](/containers/kubernetes/) documentation. ## Monitoring and alerting via Scaleway Cockpit -(Setting up real-time monitoring of public endpoints, alerting and logging practices to detect and respond to unusual activity, Use of analytics tools for traffic and usage monitoring) +We recommend that you use [Scaleway Cockpit](TODO) to monitor your resources. Cockpit stores metrics, logs and traces and provides a dedicated dashboarding system on Grafana for easy visualisation. Different metrics are available for different resource types, with metrics for network traffic being available for many, enabling you to monitor connections over the public interface. You can also configure managed and pre-configured alerts for your resources, to receive warnings for potentially abnormal behavior or unusual network activity. + +Read more about [Scaleway Cockpit](/observability/cockpit/). diff --git a/network/vpc/reference-content/getting-most-private-networks.mdx b/network/vpc/reference-content/getting-most-private-networks.mdx index cc2f2025d1..0ab13f5beb 100644 --- a/network/vpc/reference-content/getting-most-private-networks.mdx +++ b/network/vpc/reference-content/getting-most-private-networks.mdx @@ -15,13 +15,11 @@ categories: This document sets out guidance, advice and best practices for building and optimizing your Scaleway VPCs and Private Networks. -## What are Private Networks and VPCs? +## Private Networks and VPC definitions VPC allows you to build your own **V**irtual **P**rivate **C**loud on top of Scaleway's shared public cloud. Within each VPC, you can create **Private Networks**. Resources attached to Private Networks can communicate securely between themselves, away from the public internet, reducing security risks by ensuring traffic is isolated from public routes. -The VPC operates at the network layer (layer 3) of the OSI model, while Private Networks are a layer 2 resource. As such, a VPC is responsible for routing packets between its different Private Networks. Private Networks provide network isolation within a VPC and enable you to segment your resources and traffic across different subnets. The [**VPC routing**](/network/vpc/concepts/#routing) feature allows for managed and custom routes between the Private Networks of a VPC, so resources on different subnets can communicate. - - +The VPC operates at the network layer (layer 3) of the OSI model, while Private Networks are a layer 2 resource. As such, a VPC is responsible for routing packets between its different Private Networks. Private Networks provide network isolation within a VPC and enable you to segment your resources and traffic across different subnets. VPCs and Private Networks are both **regional** resources. When you create a Private Network in a VPC, it is necessarily scoped to the same region as the VPC. Some Scaleway resources are also regional, others are zonal and scoped to a single Availability Zone (AZ). When attaching resources to a Private Network, you can attach resources from any AZ within the Private Network's region, allowing for example an Elastic Metal server in PAR-2 to communicate securely, away from the public internet, with an Instance in PAR-1 and a Managed Database in PAR-3. @@ -33,7 +31,9 @@ VPCs and Private Networks are both **regional** resources. When you create a Pri | Netherlands - Amsterdam | AMS1, AMS2, AMS3 | | Poland - Warsaw | WAW1, WAW2, WAW3 | -One default VPC for each region is automatically created in each Scaleway [Project](/identity-and-access-management/organizations-and-projects/concepts/#project). +One default VPC for each region is automatically created in each Scaleway [Project](/identity-and-access-management/organizations-and-projects/concepts/#project). The [**VPC routing**](/network/vpc/concepts/#routing) feature allows for managed and custom routes between the Private Networks of a VPC, so resources on different Private Networks can communicate. + + ## Designing your network topology @@ -55,7 +55,7 @@ When you attach a resource (e.g. an Instance, an Elastic Metal server) to a Priv - Let Scaleway automatically assign any IP address from the Private Network's CIDR block to use for the attachment, or - Define a specific, reserved IP address from the CIDR block to use for the attachment. -### Auto-assigning any available IP address +### Auto-assigning an IP address This solution is best for simplicity, dynamic environments, and short-lived resources. It can be especially useful in large-scale deployments where manual IP management could be cumbersome. When you let Scaleway automatically assign IP addresses, we ensure there are no IP conflicts within your VPC, reducing any risk of human error. @@ -73,7 +73,7 @@ Using reserved IP addresses is ideal to ensure that certain IP addresses are nev We strongly recommend that you disable public connectivity on all of your Scaleway resources, unless it is absolutely required. It is preferable to attach resources to Private Networks wherever possible, and direct all traffic to the resource's private IP address on that network. This ensures optimal security, reduced cost and enhanced latency. Find out more in our documentation about [public connectivity best practices](/network/ipam/reference-content/public-connectivity-best-practices). -## Exposing a Private Network to the internet +## Public connectivity over Private Networks ### Public Gateways @@ -85,7 +85,7 @@ You can use Scaleway [Public Gateways](/network/public-gateways/) to provide res ### Load Balancers -Another option is to attach a Scaleway [Load Balancer](/network/load-balancer/) to the Private Network. By giving the Load Balancer a public IP address, and configuring Instances on the Private Network as backend servers for the Load Balancer via their private IP addresses, the Load Balancer can securely and efficiently distribute traffic to the Instances. This solution is suitable when you have multiple Instances serving the same application. +Another option is to attach a Scaleway [Load Balancer](/network/load-balancer/) to the Private Network. By giving the Load Balancer a public IP address, and configuring Instances on the Private Network as backend servers for the Load Balancer via their private IP addresses, the Load Balancer can securely and efficiently distribute traffic to the Instances. This solution is suitable when you have multiple Instances serving the same application, although you can also use multiple frontends/backends and [routes](/network/load-balancer/how-to/create-manage-routes/) to direct traffic to specific server pools. You can also remove the public IP address from the Load Balancer itself. This may be relevant if the Load Balancer is configured to receive and distribute traffic from resources on a different Private Network within the same VPC, for example. From cc6fb3d92d1e651a23d08f3ed8f903164fde5275 Mon Sep 17 00:00:00 2001 From: Rowena Date: Mon, 7 Oct 2024 10:57:06 +0200 Subject: [PATCH 08/12] feat(nw): best practice docs --- .../public-connectivity-best-practices.mdx | 23 +++++++++---------- .../getting-most-private-networks.mdx | 12 +++++----- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/network/ipam/reference-content/public-connectivity-best-practices.mdx b/network/ipam/reference-content/public-connectivity-best-practices.mdx index f2f98d4ecb..1ff5730664 100644 --- a/network/ipam/reference-content/public-connectivity-best-practices.mdx +++ b/network/ipam/reference-content/public-connectivity-best-practices.mdx @@ -19,15 +19,14 @@ This document sets out best practices for securing and optimizing public connect Public vs private connectivity defines how resources are accessed and exposed over networks. -* **Public connectivity**: Your resource has a [public IP address](TODO) and is reachable over the public internet. Anyone with the right credentials can access the resource via its public IP address, e.g. over an [SSH connection](TODO) or simply by directly accessing its IP address in a browser to retrieve and display any content it is serving, e.g. over HTTP. - -* **Private connectivity**: Your resources is reachable over an attached [Private Network](TODO). The resource has a [private IP address](TODO), but it can only be accessed via this address from within the Private Network. Such a resource may or may not also have a public IP address. +- **Public connectivity**: Your resource has a [public IP address](/network/ipam/concepts/#public-flexible-ip-address) and is reachable over the public internet. Anyone with the right credentials can access the resource via its public IP address, e.g. over an [SSH connection](/compute/instances/how-to/connect-to-instance/) or simply by directly accessing its IP address in a browser to retrieve and display any content it is serving, e.g. over HTTP. +- **Private connectivity**: Your resources is reachable over an attached [Private Network](/network/vpc/concepts/#private-networks). The resource has a [private IP address](/network/vpc/concepts/#private-ip-address), but it can only be accessed via this address from within the Private Network. Such a resource may or may not also have a public IP address. ## Effectively managing IP addresses ### Flexible IP addresses: definition -Public connectivity for **Instances**, **Elastic Metal**, **Load Balancers** and **Public Gateways** is facilitated by a [flexible IP address](TODO). +Public connectivity for **Instances**, **Elastic Metal**, **Load Balancers** and **Public Gateways** is facilitated by a [flexible IP address](/network/ipam/concepts/#public-flexible-ip-address). - A flexible IP address is a public IP address that you can attach and detach from the resource at will. - If you detach it, it returns to the pool of flexible IP addresses kept in your account for that product, and you can attach it to a different resource (or reattach it to the same one as before). @@ -39,11 +38,11 @@ Other resource types generally facilitate public connectivity in other ways, e.g As flexible IP addresses can be moved between resources, they provide the following advantages: -**Seamless failover and disaster recovery**: If your Instance, for example, goes down, you can move its public IP to a different Instance in the same AZ to ensure the service remains available. -**Zero downtime during maintenance and migration**: When you need to carry out updates, migrations or maintenance on a resource, you can temporarily move its public IP to a backup resource to avoid disruption for users. -**IP retention and consistent endpoints**: Maintaining the same IP avoids the need for frequent DNS or firewall rule updates, and makes it easier to manage your dynamic cloud environments. +- **Seamless failover and disaster recovery**: If your Instance, for example, goes down, you can move its public IP to a different Instance in the same AZ to ensure the service remains available. +- **Zero downtime during maintenance and migration**: When you need to carry out updates, migrations or maintenance on a resource, you can temporarily move its public IP to a backup resource to avoid disruption for users. +- **IP retention and consistent endpoints**: Maintaining the same IP avoids the need for frequent DNS or firewall rule updates, and makes it easier to manage your dynamic cloud environments. -In the future, look out for even more improvements to our flexible IP offering, such as the ability to move flexible IPs between different types of products, and to manage all your public flexible IPs from your [IPAM](todo) dashboard. +In the future, look out for even more improvements to our flexible IP offering, such as the ability to move flexible IPs between different types of products, and to manage all your public flexible IPs from your [IPAM](/network/ipam/) dashboard. ### Limiting public connectivity, prioritizing Private Networks @@ -64,7 +63,7 @@ For some products, e.g. Apple Silicon, public connectivity cannot be disabled at Favor resources such as Public Gateways and Load Balancers to provide access to the public internet over the Private Network. This allows Instances and other attached resources to send and receive packets to the internet through a single, secure point of access. You can use the Public Gateway's SSH bastion feature to [connect to your resource via its private IP address](/network/public-gateways/how-to/use-ssh-bastion/#how-to-connect-to-a-resource-behind-your-ssh-bastion). -Find out more about how to get the most from Private Networks, and how to expose Private Networks to the internet in our [dedicated documentation](/network/vpc/reference-content/getting-most-private-networks/#exposing-a-private-network-to-the-internet) +Find out more about how to get the most from Private Network in our [dedicated documentation](/network/vpc/reference-content/getting-most-private-networks/) ## Implementing security controls @@ -84,7 +83,7 @@ Learn how to use the ACL feature in our [dedicated how-to](/network/load-balance For resources such as Instances and Elastic Metal servers, you may wish to implement third-party manual solutions in front of your public services to enhance security, for example: -- Deploying a reverse proxy, e.g. Nginx (TODO), and configuring it to enforce rate limits and to throttle traffic. This helps to prevent abuse and DDOS attacks on your public-facing services. +- Deploying a reverse proxy, e.g. Nginx (/tutorials/nginx-reverse-proxy/), and configuring it to enforce rate limits and to throttle traffic. This helps to prevent abuse and DDOS attacks on your public-facing services. - Installing a **W**eb **A**pplication **F**irewall that can filter out malicious traffic such as requests containing attack patterns, or requests from blacklisted IPs. ## Handling traffic surges @@ -93,7 +92,7 @@ Exposing your resource to the public internet can present risks of unexpected tr ### Autoscaling -Scaleway currently offers Autoscaling in Public Beta. Autoscaling allows you to dynamically adjust the number of Instances within a given Instance group based on defined scaling policies. Scaling actions (scale up or down) are triggered when the monitored metric exceeds the configured thresholds from your policies. Check out the [API docuemtnation](https://www.scaleway.com/en/developers/api/autoscaling/). +Scaleway currently offers Autoscaling in Public Beta. Autoscaling allows you to dynamically adjust the number of Instances within a given Instance group based on defined scaling policies. Scaling actions (scale up or down) are triggered when the monitored metric exceeds the configured thresholds from your policies. Check out the [API documentation](https://www.scaleway.com/en/developers/api/autoscaling/). ### Load Balancer @@ -109,7 +108,7 @@ Hosting your containerized application in a managed Kubernetes cluster brings ma ## Monitoring and alerting via Scaleway Cockpit -We recommend that you use [Scaleway Cockpit](TODO) to monitor your resources. Cockpit stores metrics, logs and traces and provides a dedicated dashboarding system on Grafana for easy visualisation. Different metrics are available for different resource types, with metrics for network traffic being available for many, enabling you to monitor connections over the public interface. You can also configure managed and pre-configured alerts for your resources, to receive warnings for potentially abnormal behavior or unusual network activity. +We recommend that you use [Scaleway Cockpit](/observability/cockpit/) to monitor your resources. Cockpit stores metrics, logs and traces and provides a dedicated dashboarding system on Grafana for easy visualisation. Different metrics are available for different resource types, with metrics for network traffic being available for many, enabling you to monitor connections over the public interface. You can also configure managed and pre-configured alerts for your resources, to receive warnings for potentially abnormal behavior or unusual network activity. Read more about [Scaleway Cockpit](/observability/cockpit/). diff --git a/network/vpc/reference-content/getting-most-private-networks.mdx b/network/vpc/reference-content/getting-most-private-networks.mdx index 0ab13f5beb..d27cc37707 100644 --- a/network/vpc/reference-content/getting-most-private-networks.mdx +++ b/network/vpc/reference-content/getting-most-private-networks.mdx @@ -23,7 +23,7 @@ The VPC operates at the network layer (layer 3) of the OSI model, while Private VPCs and Private Networks are both **regional** resources. When you create a Private Network in a VPC, it is necessarily scoped to the same region as the VPC. Some Scaleway resources are also regional, others are zonal and scoped to a single Availability Zone (AZ). When attaching resources to a Private Network, you can attach resources from any AZ within the Private Network's region, allowing for example an Elastic Metal server in PAR-2 to communicate securely, away from the public internet, with an Instance in PAR-1 and a Managed Database in PAR-3. - + | Region | Availability Zones | |-------------------------|---------------------------| @@ -40,10 +40,10 @@ One default VPC for each region is automatically created in each Scaleway [Proje When you start creating resources and building your infrastructure with Scaleway, take some time to consider and plan your network topology. We recommend that you build your VPC infrastructure with **separation of concerns** in mind. Separation of concerns is a fundamental design principle aimed at breaking down large complex systems into smaller, distinct components each with clear responsibilities and interfaces. This kind of design will future-proof your VPC and come into its own when Scaleway introduces features such as custom routing and ACLs. Separating resources into different Private Networks according to function and usage can: -- Improve network performance by reducing broadcast traffic and congestion -- Enhance manageability via a logical organization of resources -- Enable easier troubleshooting, monitoring and maintenance -- Allow for easier scalability +- **Improve network performance** by reducing broadcast traffic and congestion +- **Enhance manageability** via a logical organization of resources +- **Enable easier troubleshooting, monitoring and maintenance** +- **Allow for easier scalability** For example, you may use one Private Network for frontend resources and another for backend resources, limiting public access only via Load Balancers and/or Public Gateways, stripping other resources of public IP addresses. You may want to create different VPCs for production and test environments, allowing you isolate potential errors in testing from the production environment. @@ -87,7 +87,7 @@ You can use Scaleway [Public Gateways](/network/public-gateways/) to provide res Another option is to attach a Scaleway [Load Balancer](/network/load-balancer/) to the Private Network. By giving the Load Balancer a public IP address, and configuring Instances on the Private Network as backend servers for the Load Balancer via their private IP addresses, the Load Balancer can securely and efficiently distribute traffic to the Instances. This solution is suitable when you have multiple Instances serving the same application, although you can also use multiple frontends/backends and [routes](/network/load-balancer/how-to/create-manage-routes/) to direct traffic to specific server pools. -You can also remove the public IP address from the Load Balancer itself. This may be relevant if the Load Balancer is configured to receive and distribute traffic from resources on a different Private Network within the same VPC, for example. +You can also disable public connectivity on the Load Balancer itself. This may be relevant if the Load Balancer is configured to receive and distribute traffic from resources on a different Private Network within the same VPC, for example. ## Connecting a VPC to external infrastructure From 5283923e354ab2dd2419c2ad9c9db32e4edfd9c0 Mon Sep 17 00:00:00 2001 From: Rowena Date: Mon, 7 Oct 2024 17:16:02 +0200 Subject: [PATCH 09/12] fix(ipam): modification review --- .../reference-content/public-connectivity-best-practices.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/network/ipam/reference-content/public-connectivity-best-practices.mdx b/network/ipam/reference-content/public-connectivity-best-practices.mdx index 1ff5730664..85f2430346 100644 --- a/network/ipam/reference-content/public-connectivity-best-practices.mdx +++ b/network/ipam/reference-content/public-connectivity-best-practices.mdx @@ -20,7 +20,7 @@ This document sets out best practices for securing and optimizing public connect Public vs private connectivity defines how resources are accessed and exposed over networks. - **Public connectivity**: Your resource has a [public IP address](/network/ipam/concepts/#public-flexible-ip-address) and is reachable over the public internet. Anyone with the right credentials can access the resource via its public IP address, e.g. over an [SSH connection](/compute/instances/how-to/connect-to-instance/) or simply by directly accessing its IP address in a browser to retrieve and display any content it is serving, e.g. over HTTP. -- **Private connectivity**: Your resources is reachable over an attached [Private Network](/network/vpc/concepts/#private-networks). The resource has a [private IP address](/network/vpc/concepts/#private-ip-address), but it can only be accessed via this address from within the Private Network. Such a resource may or may not also have a public IP address. +- **Private connectivity**: Your resources is reachable over an attached [Private Network](/network/vpc/concepts/#private-networks). The resource has a [private IP address](/network/vpc/concepts/#private-ip-address), but it can only be accessed via this address from within the VPC of the Private Network. Such a resource may or may not also have a public IP address. ## Effectively managing IP addresses From e89f42a8e5309e557574b1caa53ff90b394994b1 Mon Sep 17 00:00:00 2001 From: Rowena Date: Tue, 8 Oct 2024 11:42:39 +0200 Subject: [PATCH 10/12] fix(network): add to menu --- menu/navigation.json | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/menu/navigation.json b/menu/navigation.json index d8e0fdf192..ccd50f2c3a 100644 --- a/menu/navigation.json +++ b/menu/navigation.json @@ -2712,6 +2712,10 @@ { "label": "Understanding routing", "slug": "understanding-routing" + }, + { + "label": "Getting the most from Private Networks", + "slug": "getting-most-private-networks" } ], "label": "Additional Content", @@ -2788,7 +2792,17 @@ ], "label": "API/CLI", "slug": "api-cli" - } + }, + { + "items": [ + { + "label": "Public connectivity: best practices", + "slug": "public-connectivity-best-practices" + } + ], + "label": "Additional Content", + "slug": "reference-content" + } ], "label": "IPAM", "slug": "ipam" From 254a8d8eb0ac5ca5c36f7011f79cb37ed9f39658 Mon Sep 17 00:00:00 2001 From: Rowena Jones <36301604+RoRoJ@users.noreply.github.com> Date: Wed, 9 Oct 2024 11:35:34 +0200 Subject: [PATCH 11/12] Apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Océane --- .../vpc/reference-content/getting-most-private-networks.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/network/vpc/reference-content/getting-most-private-networks.mdx b/network/vpc/reference-content/getting-most-private-networks.mdx index d27cc37707..cdba10a461 100644 --- a/network/vpc/reference-content/getting-most-private-networks.mdx +++ b/network/vpc/reference-content/getting-most-private-networks.mdx @@ -37,7 +37,7 @@ One default VPC for each region is automatically created in each Scaleway [Proje ## Designing your network topology -When you start creating resources and building your infrastructure with Scaleway, take some time to consider and plan your network topology. We recommend that you build your VPC infrastructure with **separation of concerns** in mind. Separation of concerns is a fundamental design principle aimed at breaking down large complex systems into smaller, distinct components each with clear responsibilities and interfaces. This kind of design will future-proof your VPC and come into its own when Scaleway introduces features such as custom routing and ACLs. +When you start creating resources and building your infrastructure with Scaleway, take some time to consider and plan your network topology. We recommend that you build your VPC infrastructure with **separation of concerns** in mind. Separation of concerns is a fundamental design principle aimed at breaking down large complex systems into smaller, distinct components each with clear responsibilities and interfaces. This kind of design will future-proof your VPC and come into its own when Scaleway introduces further features such as ACLs for VPC. Separating resources into different Private Networks according to function and usage can: - **Improve network performance** by reducing broadcast traffic and congestion @@ -45,7 +45,7 @@ When you start creating resources and building your infrastructure with Scaleway - **Enable easier troubleshooting, monitoring and maintenance** - **Allow for easier scalability** -For example, you may use one Private Network for frontend resources and another for backend resources, limiting public access only via Load Balancers and/or Public Gateways, stripping other resources of public IP addresses. You may want to create different VPCs for production and test environments, allowing you isolate potential errors in testing from the production environment. +For example, you may use one Private Network for frontend resources and another for backend resources, limiting public access only via Load Balancers and/or Public Gateways, stripping other resources of public IP addresses. You may want to create different VPCs for production and test environments, allowing you to isolate potential errors in testing from the production environment. When [creating a Private Network](/network/vpc/how-to/create-private-network/), you can let Scaleway automatically generate a CIDR block for it that is guaranteed to be unique in this VPC. All resources attached to the Private Network get a private IP address from this block. However, you also have the option to define your own CIDR block for the network. Ensure you choose a prefix and network size that is appropriate for your needs, does not overlap with that of any other Private Network in the VPC, and contains enough IP addresses for all resources that will be attached to the Private Network. @@ -100,7 +100,7 @@ Different types of Scaleway resources may have different requirements and possib * **Max attached PNs**: The maximum number of Private Networks that a resource can be attached to * **Mandatory PN**: Whether or not a Private Network must necessarily be attached to this resource * **Compatible with private IPv6**: Whether or not the resource is compatible with private IPv6 addressing. Compatible resources generally acquire both an IPv4 and an IPv6 address when attached to a Private Network. -* **Compatible with reserved IPs**: Whether or not you can use a [reserved IP](/network/ipam/how-to/reserve-ip/#how-to-attach-a-resource-to-a-private-network-using-a-reserved-ip-address) to attach the resouce to a Private Network +* **Compatible with reserved IPs**: Whether or not you can use a [reserved IP](/network/ipam/how-to/reserve-ip/#how-to-attach-a-resource-to-a-private-network-using-a-reserved-ip-address/) to attach the resource to a Private Network | | Instance | Elastic Metal | Kubernetes | Managed Inference | |------------------------------|----------|---------------|------------|-------------------| From 95ad8dbb5a06a5cb8033a24a6fc485e557de477e Mon Sep 17 00:00:00 2001 From: Rowena Jones <36301604+RoRoJ@users.noreply.github.com> Date: Wed, 9 Oct 2024 12:10:13 +0200 Subject: [PATCH 12/12] Update network/vpc/reference-content/getting-most-private-networks.mdx --- network/vpc/reference-content/getting-most-private-networks.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/network/vpc/reference-content/getting-most-private-networks.mdx b/network/vpc/reference-content/getting-most-private-networks.mdx index cdba10a461..2872bf7e65 100644 --- a/network/vpc/reference-content/getting-most-private-networks.mdx +++ b/network/vpc/reference-content/getting-most-private-networks.mdx @@ -91,7 +91,7 @@ You can also disable public connectivity on the Load Balancer itself. This may b ## Connecting a VPC to external infrastructure -Watch this space for Scaleway's upcoming solution to provide secure, dedicated connectivity between resources in a Scaleway VPC and your external or on-premises architecture. In the meantime, you may consider installing a manual VPN on a Scaleway Instance to connect to other non-Scaleway infrastructure, and create a [custom route](/network/vpc/how-to/manage-routing/#how-to-create-a-custom-route) towards this VPN so traffic on your Private Network can securely communicate with resources at the other end of your VPN tunnel. +Watch this space for Scaleway's upcoming solution to provide private, secure connectivity between resources in a Scaleway VPC and your external or on-premises architecture. In the meantime, you may consider installing a manual VPN on a Scaleway Instance to connect to other non-Scaleway infrastructure, and create a [custom route](/network/vpc/how-to/manage-routing/#how-to-create-a-custom-route) towards this VPN so traffic on your Private Network can securely communicate with resources at the other end of your VPN tunnel. ## Resource-specific information