The Virtual Network is in place and divided into subnets — now it's time to secure it! In this task, you will create network security groups for the TODO web app.
Before completing any task in the module, make sure that you followed all the steps described in the Environment Setup topic, in particular:
-
Ensure you have an Azure account and subscription.
-
Create a resource group called “mate-resources” in the Azure subscription.
-
In the “mate-resources” resource group, create a storage account (any name) and a “task-artifacts” container.
-
Install PowerShell 7 on your computer. All tasks in this module use PowerShell 7. To run it in the terminal, execute the following command:
pwsh -
Install Azure module for PowerShell 7:
Install-Module -Name Az -Repository PSGallery -Force
If you are a Windows user, before running this command, please also run the following:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
- Log in to your Azure account using PowerShell:
Connect-AzAccount -TenantId <your Microsoft Entra ID tenant id>
In this task, you will need to plan and create network security groups for the virtual network from the previous task:
- each subnet (
webservers,database,management) should have its own NSG, with the same name as the subnet; - all subnets should allow traffic from other subnets within the virtual network;
webserverssubnet should accept only HTTP and HTTPS traffic from the Internet;managementsubnet should accept only SSH traffic from the Internet;databasesubnet should not accept any traffic from the Internet at all.
To complete the task, you need to perform the following steps:
-
Update the PowerShell script
task.ps1to add deployment of the required Network Security Groups and subnets using the PowerShell module for Azure. To achieve that, use comandlets New-AzNetworkSecurityGroup and New-AzNetworkSecurityRuleConfig. Filetask.ps1already contains code for deployment of the virtual network and subnets — make sure to update it so NSGs will be attached to the subnets. -
Run the updated
task.ps1script to create a cloud infrastructure for the web app. -
Run artifacts generation script
scripts/generate-artifacts.ps1. -
Test yourself using the script
scripts/validate-artifacts.ps1. -
Make sure that changes to both
task.ps1andresult.jsonare committed to the repo, and submit the solution for review. -
You can keep the resources if you want to — anyway, the virtual network resource itself is free
Tasks in this module are relying on 2 PowerShell scripts:
scripts/generate-artifacts.ps1generates the task “artifacts” and uploads them to cloud storage. An “artifact” is evidence of a task completed by you. Each task will have its own script, which will gather the required artifacts. The script also adds a link to the generated artifact in theartifacts.jsonfile in this repository — make sure to commit changes to this file after you run the script.scripts/validate-artifacts.ps1validates the artifacts generated by the first script. It loads information about the task artifacts from theartifacts.jsonfile.
Here is how to complete tasks in this module:
-
Clone task repository;
-
Make sure you completed the steps, described in the Prerequisites section;
-
Complete the task described in the Requirements section;
-
Run
scripts/generate-artifacts.ps1to generate task artifacts. The script will update the fileartifacts.jsonin this repo; -
Run
scripts/validate-artifacts.ps1to test yourself. If tests are failing — follow the recommendation from the test script error message to fix or re-deploy your infrastructure. When you are ready to test yourself again — re-generate the artifacts (step 4) and re-run tests again; -
When all tests pass — commit your changes and submit the solution for a review;
Pro tip: if you are stuck with any of the implementation steps — run scripts/generate-artifacts.ps1 and scripts/validate-artifacts.ps1. The validation script might give you a hint on what you should do.