Tutorial: Criar e gerenciar redes virtuais do Azure para máquinas virtuais do Linux com o CLI do AzureTutorial: Create and manage Azure virtual networks for Linux virtual machines with the Azure CLI

As máquinas virtuais do Azure utilizam a rede do Azure para a comunicação de rede interna e externa.Azure virtual machines use Azure networking for internal and external network communication. Este tutorial mostra a implementação de duas máquinas virtuais e a configuração da rede do Azure para essas VMsThis tutorial walks through deploying two virtual machines and configuring Azure networking for these VMs. Os exemplos neste tutorial partem do princípio de que as VMs alojam uma aplicação Web com um back-end de base de dados. No entanto, não é implementada nenhuma aplicação no tutorial.The examples in this tutorial assume that the VMs are hosting a web application with a database back-end, however an application is not deployed in the tutorial. Neste tutorial, ficará a saber como:In this tutorial, you learn how to:

  • Criar uma rede virtual e uma sub-redeCreate a virtual network and subnet
  • Crie um endereço IP públicoCreate a public IP address
  • Criar uma VM de front-endCreate a front-end VM
  • Proteger o tráfego de redeSecure network traffic
  • Criar uma VM de back-endCreate a back-end VM

Utilizar o Azure Cloud ShellUse Azure Cloud Shell

O Azure hospeda Azure Cloud Shell, um ambiente de shell interativo que você pode usar por meio de seu navegador.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell permite que você use bash o PowerShell ou o para trabalhar com os serviços do Azure.Cloud Shell lets you use either bash or PowerShell to work with Azure services. Você pode usar os comandos pré-instalados Cloud Shell para executar o código neste artigo sem precisar instalar nada em seu ambiente local.You can use the Cloud Shell pre-installed commands to run the code in this article without having to install anything on your local environment.

Para iniciar o Azure Cloud Shell:To launch Azure Cloud Shell:

OpçãoOption Exemplo/linkExample/Link
Selecione Experimentar no canto superior direito de um bloco de código.Select Try It in the upper-right corner of a code block. A seleção de try não copia automaticamente o código para Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Exemplo de teste para Azure Cloud Shell
Vá para https://shell.azure.com ou selecione o botão Iniciar Cloud Shell para abrir Cloud Shell em seu navegador.Go to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. Iniciar Cloud Shell em uma nova janelaLaunch Cloud Shell in a new window
Selecione o botão Cloud Shell na barra de menus superior direita na portal do Azure.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Botão Cloud Shell no portal do Azure

Para executar o código neste artigo em Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Iniciar Cloud Shell.Launch Cloud Shell.

  2. Selecione o botão copiar em um bloco de código para copiar o código.Select the Copy button on a code block to copy the code.

  3. Cole o código na sessão de Cloud shell com Ctrl+Shift+v no Windows e Linux, ou cmd+Shift+v no MacOS.Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.

  4. Pressione Enter para executar o código.Press Enter to run the code.

Se optar por instalar e utilizar a CLI localmente, este tutorial requer que execute uma versão da CLI do Azure que seja a 2.0.30 ou posterior.If you choose to install and use the CLI locally, this tutorial requires that you are running the Azure CLI version 2.0.30 or later. Executar az --version para localizar a versão.Run az --version to find the version. Se precisar de instalar ou atualizar, veja Instalar a CLI do Azure.If you need to install or upgrade, see Install Azure CLI.

Descrição geral do funcionamento em rede de VMsVM networking overview

As redes virtuais do Azure permitem ligações de rede seguras entre as máquinas virtuais, a Internet e outros serviços do Azure, como a Base de Dados SQL do Azure.Azure virtual networks enable secure network connections between virtual machines, the internet, and other Azure services such as Azure SQL database. As redes virtuais são divididas em segmentos lógicos, chamados sub-redes.Virtual networks are broken down into logical segments called subnets. As sub-redes são utilizadas para controlar o fluxo de rede e como limite de segurança.Subnets are used to control network flow, and as a security boundary. Ao implementar uma VM, incluem, geralmente, uma interface de rede virtual, que é ligada a uma sub-rede.When deploying a VM, it generally includes a virtual network interface, which is attached to a subnet.

À medida que concluir o tutorial, são criados os seguintes recursos de rede virtual:As you complete the tutorial, the following virtual network resources are created:

Rede virtual com duas sub-redes

  • myVNet - a rede virtual que as VMs utilizam para comunicar entre si e com a Internet.myVNet - The virtual network that the VMs use to communicate with each other and the internet.
  • myFrontendSubnet - a sub-rede em myVNet que os recursos de front-end utilizam.myFrontendSubnet - The subnet in myVNet used by the front-end resources.
  • myPublicIPAddress - o endereço IP público utilizado para aceder a myFrontendVM a partir da Internet.myPublicIPAddress - The public IP address used to access myFrontendVM from the internet.
  • myFrontentNic - a interface de rede utilizada por myFrontendVM para comunicar com myBackendVM.myFrontentNic - The network interface used by myFrontendVM to communicate with myBackendVM.
  • myFrontendVM - a VM utilizada para comunicar entre a Internet e myBackendVM.myFrontendVM - The VM used to communicate between the internet and myBackendVM.
  • myBackendNSG - o grupo de segurança de rede que controla a comunicação entre myFrontendVM e myBackendVM.myBackendNSG - The network security group that controls communication between the myFrontendVM and myBackendVM.
  • myBackendSubnet - a sub-rede associada a myBackendNSG e utilizada pelos recursos de back-end.myBackendSubnet - The subnet associated with myBackendNSG and used by the back-end resources.
  • myBackendNic - a interface de rede utilizada por myBackendVM para comunicar com myFrontendVM.myBackendNic - The network interface used by myBackendVM to communicate with myFrontendVM.
  • myBackendVM - a VM que utiliza as portas 22 e 3306 para comunicar com myFrontendVM.myBackendVM - The VM that uses port 22 and 3306 to communicate with myFrontendVM.

Criar uma rede virtual e uma sub-redeCreate a virtual network and subnet

Neste tutorial, é criada uma rede virtual individual com duas sub-redes.For this tutorial, a single virtual network is created with two subnets. Uma sub-rede de front-end para alojar uma aplicação Web e uma sub-rede de back-end para alojar um servidor de bases de dados.A front-end subnet for hosting a web application, and a back-end subnet for hosting a database server.

Antes de poder criar uma rede virtual, crie um grupo de recursos com az group create.Before you can create a virtual network, create a resource group with az group create. O exemplo seguinte cria um grupo de recursos com o nome myRGNetwork na localização eastus.The following example creates a resource group named myRGNetwork in the eastus location.

az group create --name myRGNetwork --location eastus

Criar a rede virtualCreate virtual network

Utilize o comando az network vnet create para criar uma rede virtual.Use the az network vnet create command to create a virtual network. Neste exemplo, a rede tem o nome mvVNet e recebe o prefixo de endereço 10.0.0.0/16.In this example, the network is named mvVNet and is given an address prefix of 10.0.0.0/16. Também é criada uma sub-rede com o nome myFrontendSubnet e o prefixo 10.0.1.0/24.A subnet is also created with a name of myFrontendSubnet and a prefix of 10.0.1.0/24. Mais tarde no tutorial, vai ser ligada uma VM de front-end a esta sub-rede.Later in this tutorial a front-end VM is connected to this subnet.

az network vnet create \
  --resource-group myRGNetwork \
  --name myVNet \
  --address-prefix 10.0.0.0/16 \
  --subnet-name myFrontendSubnet \
  --subnet-prefix 10.0.1.0/24

Criar sub-redeCreate subnet

É adicionada uma sub-rede nova à rede virtual com o comando az network vnet subnet create.A new subnet is added to the virtual network using the az network vnet subnet create command. Neste exemplo, a sub-rede tem o nome myBackendSubnet e recebe o prefixo de endereço 10.0.2.0/24.In this example, the subnet is named myBackendSubnet and is given an address prefix of 10.0.2.0/24. Esta sub-rede é utilizada com todos os serviços de back-end.This subnet is used with all back-end services.

az network vnet subnet create \
  --resource-group myRGNetwork \
  --vnet-name myVNet \
  --name myBackendSubnet \
  --address-prefix 10.0.2.0/24

Nesta fase, já está criada uma rede e segmentada em duas sub-redes, uma para os serviços de front-end e outra para os de back-end.At this point, a network has been created and segmented into two subnets, one for front-end services, and another for back-end services. Na secção seguinte, são criadas máquinas virtuais e ligadas a estas sub-redes.In the next section, virtual machines are created and connected to these subnets.

Crie um endereço IP públicoCreate a public IP address

Os endereços IP públicos permitem que os recursos do Azure estejam acessíveis na Internet.A public IP address allows Azure resources to be accessible on the internet. O método de atribuição do endereço IP público pode ser configurado como dinâmico ou estático.The allocation method of the public IP address can be configured as dynamic or static. Por predefinição, o endereço IP público é atribuído dinamicamente.By default, a public IP address is dynamically allocated. Os endereços IP dinâmicos são libertados quando uma VM é desalocada.Dynamic IP addresses are released when a VM is deallocated. Este comportamento faz com que o endereço IP mude durante qualquer operação que inclua desalocar uma VM.This behavior causes the IP address to change during any operation that includes a VM deallocation.

O método de alocação pode ser definido como estático, o que garante que o endereço IP permanece atribuído a uma VM, mesmo durante o estado desalocado.The allocation method can be set to static, which ensures that the IP address remains assigned to a VM, even during a deallocated state. Quando é utilizado um endereço IP atribuído estaticamente, não é possível especificar o próprio endereço IP.When using a statically allocated IP address, the IP address itself cannot be specified. Em vez disso, é alocado partir de um conjunto de endereços disponíveis.Instead, it is allocated from a pool of available addresses.

az network public-ip create --resource-group myRGNetwork --name myPublicIPAddress

Quando cria uma VM com o comando az vm create, o método alocação predefinido do endereço IP público é dinâmico.When creating a VM with the az vm create command, the default public IP address allocation method is dynamic. Se criar uma máquina virtual com o comando az vm create, inclua o argumento --public-ip-address-allocation static para atribuir um endereço IP público estático.When creating a virtual machine using the az vm create command, include the --public-ip-address-allocation static argument to assign a static public IP address. Esta operação não é demonstrada neste tutorial. No entanto, na secção seguinte, um endereço IP alocado dinamicamente vai ser alterado para um endereço alocado de forma estática.This operation is not demonstrated in this tutorial, however in the next section a dynamically allocated IP address is changed to a statically allocated address.

Alterar o método de alocaçãoChange allocation method

O método de alocação do endereço IP pode ser alterado com o comando az network public-ip update.The IP address allocation method can be changed using the az network public-ip update command. Neste exemplo, o método de alocação do endereço IP da VM de front-end é alterado para estático.In this example, the IP address allocation method of the front-end VM is changed to static.

Em primeiro lugar, anule a alocação da VM.First, deallocate the VM.

az vm deallocate --resource-group myRGNetwork --name myFrontendVM

Utilize o comando az network public-ip update para atualizar o método de alocação.Use the az network public-ip update command to update the allocation method. Neste caso, --allocation-method vai ser definido como estático.In this case, the --allocation-method is being set to static.

az network public-ip update --resource-group myRGNetwork --name myPublicIPAddress --allocation-method static

Inicie a VM.Start the VM.

az vm start --resource-group myRGNetwork --name myFrontendVM --no-wait

Sem endereço IP públicoNo public IP address

Muitas vezes, as VMs não têm de estar acessíveis através da internet.Often, a VM does not need to be accessible over the internet. Para criar uma VM sem um endereço IP público, utilize o argumento --public-ip-address "" com um conjunto vazio de aspas duplas.To create a VM without a public IP address, use the --public-ip-address "" argument with an empty set of double quotes. Esta configuração é demonstrada mais à frente neste tutorial.This configuration is demonstrated later in this tutorial.

Criar uma VM de front-endCreate a front-end VM

Utilize o comando az vm create para criar a VM chamada myFrontendVM com myPublicIPAddress.Use the az vm create command to create the VM named myFrontendVM using myPublicIPAddress.

az vm create \
  --resource-group myRGNetwork \
  --name myFrontendVM \
  --vnet-name myVNet \
  --subnet myFrontendSubnet \
  --nsg myFrontendNSG \
  --public-ip-address myPublicIPAddress \
  --image UbuntuLTS \
  --generate-ssh-keys

Proteger o tráfego de redeSecure network traffic

Os grupos de segurança de rede (NSG) contêm uma lista de regras de segurança que permitem ou negam o tráfego de rede para recursos ligados a Redes Virtuais do Azure (VNet).A network security group (NSG) contains a list of security rules that allow or deny network traffic to resources connected to Azure Virtual Networks (VNet). Os NSGs podem ser associados a sub-redes ou a interfaces de rede individuais.NSGs can be associated to subnets or individual network interfaces. Quando um NSG é associado uma interface de rede, aplica apenas a VM associada.When an NSG is associated with a network interface, it applies only the associated VM. Quando um NSG é associado a uma sub-rede, as regras são aplicadas a todos os recursos ligados à mesma.When an NSG is associated to a subnet, the rules apply to all resources connected to the subnet.

Regras do grupo de segurança de redeNetwork security group rules

As regras do NSG definem as portas de rede através das quais o tráfego é permitido ou recusado.NSG rules define networking ports over which traffic is allowed or denied. As regras podem incluir intervalos de endereços IP de origem e de destino, para que o tráfego seja controlado entre sistemas ou sub-redes específicos.The rules can include source and destination IP address ranges so that traffic is controlled between specific systems or subnets. As regras do NSG também incluem uma prioridade (entre 1 e 4096).NSG rules also include a priority (between 1—and 4096). As regras são avaliadas por ordem de prioridade.Rules are evaluated in the order of priority. Uma regra com uma prioridade de 100 é avaliada antes de uma regra com prioridade de 200.A rule with a priority of 100 is evaluated before a rule with priority 200.

Todos os NSGs contêm um conjunto de regras predefinidas.All NSGs contain a set of default rules. As regras predefinidas não podem ser eliminadas, mas como lhes é atribuída a prioridade mais baixa, podem ser substituídas pelas regras que criar.The default rules cannot be deleted, but because they are assigned the lowest priority, they can be overridden by the rules that you create.

As regras predefinidas dos NSGs são:The default rules for NSGs are:

  • Rede virtual - o tráfego que tem origem e termina numa rede virtual é permitido nas direções de entrada e de saída.Virtual network - Traffic originating and ending in a virtual network is allowed both in inbound and outbound directions.
  • Internet - o tráfego de saída é permitido, mas o tráfego de entrada é bloqueado.Internet - Outbound traffic is allowed, but inbound traffic is blocked.
  • Balanceador de carga - permitir que o balanceador de carga do Azure sonde o estado de funcionamento das VMs e das instâncias de função.Load balancer - Allow Azure’s load balancer to probe the health of your VMs and role instances. Se não estiver a utilizar um conjunto com balanceamento de carga, pode substituir esta regra.If you are not using a load balanced set, you can override this rule.

Criar grupos de segurança de redeCreate network security groups

Pode ser criado um grupo de segurança de rede ao mesmo tempo que uma VM com o comando az vm create.A network security group can be created at the same time as a VM using the az vm create command. Ao fazê-lo, o NSG é associado à interface de rede das VMs e é criada automaticamente uma regra de NSG para permitir tráfego na porta 22 a partir de qualquer origem.When doing so, the NSG is associated with the VMs network interface and an NSG rule is auto created to allow traffic on port 22 from any source. Anteriormente no tutorial, o NSG de front-end foi criado automaticamente com a VM de front-end.Earlier in this tutorial, the front-end NSG was auto-created with the front-end VM. Também foi criada automaticamente uma regra de NSG para a porta 22.An NSG rule was also auto created for port 22.

Em alguns casos, poderá ser útil pré-criar um NSG, por exemplo, quando não devem ser criadas regras de SSH predefinidas ou quando o NSG deve ser ligado a uma sub-rede.In some cases, it may be helpful to pre-create an NSG, such as when default SSH rules should not be created, or when the NSG should be attached to a subnet.

Utilize o comando az network nsg create para criar um grupo de segurança de rede.Use the az network nsg create command to create a network security group.

az network nsg create --resource-group myRGNetwork --name myBackendNSG

Em vez de associar o NSG a uma interface de rede, este é associado a uma sub-rede.Instead of associating the NSG to a network interface, it is associated with a subnet. Nesta configuração, qualquer VM que esteja ligada à sub-rede herda as regras do NSG.In this configuration, any VM that is attached to the subnet inherits the NSG rules.

Atualize a sub-rede existente com o nome myBackendSubnet com o NSG novo.Update the existing subnet named myBackendSubnet with the new NSG.

az network vnet subnet update \
  --resource-group myRGNetwork \
  --vnet-name myVNet \
  --name myBackendSubnet \
  --network-security-group myBackendNSG

Proteger o tráfego de entradaSecure incoming traffic

Quando a VM de front-end foi criada, foi criada uma regra de NSG para permitir o tráfego de entrada na porta 22.When the front-end VM was created, an NSG rule was created to allow incoming traffic on port 22. Esta regra permite ligações SSH à VM.This rule allows SSH connections to the VM. Neste exemplo, o tráfego também deve ser permitido na porta 80.For this example, traffic should also be allowed on port 80. Esta configuração permite aceder a uma aplicação Web na VM.This configuration allows a web application to be accessed on the VM.

Utilize o comando az network nsg rule create para criar uma regra para a porta 80.Use the az network nsg rule create command to create a rule for port 80.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myFrontendNSG \
  --name http \
  --access allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 200 \
  --source-address-prefix "*" \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range 80

A VM de front-end só é acessível na porta 22 e na porta 80.The front-end VM is only accessible on port 22 and port 80. O restante tráfego é bloqueado no grupo de segurança de rede.All other incoming traffic is blocked at the network security group. Poderá ser útil visualizar as configurações das regras do NSG.It may be helpful to visualize the NSG rule configurations. Devolva a configuração da regra do NSG com o comando az network rule list.Return the NSG rule configuration with the az network rule list command.

az network nsg rule list --resource-group myRGNetwork --nsg-name myFrontendNSG --output table

Proteger o tráfego de VM para VMSecure VM to VM traffic

Também é possível aplicar regras de grupos de segurança de rede entre VMs.Network security group rules can also apply between VMs. Neste exemplo, a VM de front-end tem de comunicar com a VM de back-end nas portas 22 e 3306.For this example, the front-end VM needs to communicate with the back-end VM on port 22 and 3306. Esta configuração permite ligações SSH a partir da VM de front-end e também permite que uma aplicação nesta última comunique com uma base de dados MySQL de back-end.This configuration allows SSH connections from the front-end VM, and also allow an application on the front-end VM to communicate with a back-end MySQL database. Todo o outro tráfego deve ser bloqueado entre as máquinas virtuais de front-end e de back-end.All other traffic should be blocked between the front-end and back-end virtual machines.

Utilize o comando az network nsg rule create para criar uma regra para a porta 22.Use the az network nsg rule create command to create a rule for port 22. Repare que o argumento --source-address-prefix especifica o valor 10.0.1.0/24.Notice that the --source-address-prefix argument specifies a value of 10.0.1.0/24. Esta configuração assegura que apenas o tráfego da sub-rede de front-end é permitido através do NSG.This configuration ensures that only traffic from the front-end subnet is allowed through the NSG.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myBackendNSG \
  --name SSH \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 100 \
  --source-address-prefix 10.0.1.0/24 \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range "22"

Agora, adicione uma regra para o tráfego de MySQL na porta 3306.Now add a rule for MySQL traffic on port 3306.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myBackendNSG \
  --name MySQL \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 200 \
  --source-address-prefix 10.0.1.0/24 \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range "3306"

Por fim, porque os NSGs têm uma regra predefinida, permitindo todo o tráfego entre VMs na mesma VNet, pode ser criada uma regra para os NSGs de back-end, de modo a bloquear todo o tráfego.Finally, because NSGs have a default rule allowing all traffic between VMs in the same VNet, a rule can be created for the back-end NSGs to block all traffic. Repare que a --priority é atribuído o valor de 300, que é menor do que as regras do NSG e do MySQL.Notice here that the --priority is given a value of 300, which is lower that both the NSG and MySQL rules. Esta configuração garante que o tráfego de SSH e do MySQL ainda é permitido através do NSG.This configuration ensures that SSH and MySQL traffic is still allowed through the NSG.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myBackendNSG \
  --name denyAll \
  --access Deny \
  --protocol Tcp \
  --direction Inbound \
  --priority 300 \
  --source-address-prefix "*" \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range "*"

Criar a VM de back-endCreate back-end VM

Agora, crie uma máquina virtual que vai ser ligada a myBackendSubnet.Now create a virtual machine, which is attached to the myBackendSubnet. Repare que o argumento --nsg tem um valor de aspas duplas vazias.Notice that the --nsg argument has a value of empty double quotes. Não é necessário criar um NSG com a VM.An NSG does not need to be created with the VM. A VM está ligada à sub-rede de back-end, que está protegida com o NSG de back-end criado previamente.The VM is attached to the back-end subnet, which is protected with the pre-created back-end NSG. Este NSG aplica-se à VM.This NSG applies to the VM. Além disso, repare que o argumento --public-ip-address tem um valor de aspas duplas vazias.Also, notice here that the --public-ip-address argument has a value of empty double quotes. Esta configuração cria uma VM sem um endereço IP público.This configuration creates a VM without a public IP address.

az vm create \
  --resource-group myRGNetwork \
  --name myBackendVM \
  --vnet-name myVNet \
  --subnet myBackendSubnet \
  --public-ip-address "" \
  --nsg "" \
  --image UbuntuLTS \
  --generate-ssh-keys

A VM de back-end só é acessível na porta 22 e na porta 3306 a partir da sub-rede de front-end.The back-end VM is only accessible on port 22 and port 3306 from the front-end subnet. O restante tráfego é bloqueado no grupo de segurança de rede.All other incoming traffic is blocked at the network security group. Poderá ser útil visualizar as configurações das regras do NSG.It may be helpful to visualize the NSG rule configurations. Devolva a configuração da regra do NSG com o comando az network rule list.Return the NSG rule configuration with the az network rule list command.

az network nsg rule list --resource-group myRGNetwork --nsg-name myBackendNSG --output table

Passos SeguintesNext steps

Neste tutorial, criou e protegeu redes do Azure relacionadas com máquinas virtuais.In this tutorial, you created and secured Azure networks as related to virtual machines. Aprendeu a:You learned how to:

  • Criar uma rede virtual e uma sub-redeCreate a virtual network and subnet
  • Crie um endereço IP públicoCreate a public IP address
  • Criar uma VM de front-endCreate a front-end VM
  • Proteger o tráfego de redeSecure network traffic
  • Criar a VM de back-endCreate back-end VM

Avance para o tutorial seguinte para aprender a proteger os dados nas máquinas virtuais com o Azure Backup.Advance to the next tutorial to learn about securing data on virtual machines using Azure backup.