Kurz: Informace o správě virtuálních počítačů s Windows pomocí Azure PowerShell

Při nasazování prostředků do Azure máte značnou flexibilitu při rozhodování, jaké typy prostředků nasadit, do jakého umístění a jak je nastavit. Tato flexibilita však může otevírat více možností, než byste ve vaší organizaci chtěli povolit. Při zvažování nasazení prostředků do Azure si můžete klást následující otázky:

  • 如何实现 splnit právní požadavky na suverenitu dat v určitých zemích/oblastech?
  • Jak můžu řídit náklady?
  • Jak zajistím, že někdo nechtěně nezmění důležitý systém?
  • Jak můžu sledovat náklady na prostředky a správně je účtovat?

Těmito otázkami se zabývá tento článek. Konkrétně můžete:

  • Přiřadit uživatele k rolím a tyto role přiřadit k rozsahům, aby uživatelé měli oprávnění k provádění očekávaných akcí, ale žádných dalších.
  • Použít zásady, které předepisují konvence pro prostředky ve vašem předplatném.
  • Uzamknout prostředky, které jsou pro váš systém klíčové.
  • Označit prostředky, abyste je mohli sledovat podle hodnot, které dávají smysl pro vaši organizaci.

Tento článek se zaměřuje na úlohy, pomocí kterých můžete implementovat zásady správného řízení. Podrobnější popis těchto konceptů najdete v tématu Zásady správného řízení v Azure.

Spuštění služby Azure Cloud Shell

Azure Cloud Shell je bezplatné interaktivní prostředí, které můžete použít k provedení kroků v tomto článku. Má předinstalované obecné nástroje Azure, které jsou nakonfigurované pro použití s vaším účtem.

Pokud chcete otevřít Cloud Shell, vyberte položku Vyzkoušet v pravém horním rohu bloku kódu. Cloud Shell můžete spustit také na samostatné kartě prohlížeče na adrese https://shell.azure.com/powershell. Zkopírujte bloky kódu výběrem možnosti Kopírovat, vložte je do služby Cloud Shell a potom je spusťte stisknutím klávesy Enter.

Orientace v oborech

Než začnete vytvářet položky, projdeme si koncept rozsahu. Azure poskytuje čtyři úrovně správy: skupiny pro správu, předplatné, skupina prostředků a prostředek. Skupiny pro správu jsou ve verzi Preview. Následující obrázek ukazuje příklad těchto vrstev.

Obor

Nastavení správy můžete použít na jakékoli z těchto úrovní rozsahu. Vybraná úroveň určuje rozsah použití nastavení. Nižší úrovně dědí nastavení z vyšších úrovní. Když nějaké nastavení použijete pro předplatné, použije se toto nastavení pro všechny skupiny prostředků a prostředky v tomto předplatném. Když nějaké nastavení použijete pro skupinu prostředků, použije se toto nastavení pro skupinu prostředků i všechny prostředky, které obsahuje. Jiná skupina prostředků ale toto nastavení nezíská.

Obvykle je vhodné používat důležitá nastavení na vyšších úrovních a nastavení související s požadavky konkrétního projektu na nižších úrovních. Například můžete chtít zajistit, aby se všechny prostředky vaší organizace nasazovaly do konkrétních oblastí. Tento požadavek splníte tak, že pro předplatné použijete zásadu, která udává povolená umístění. Když ostatní uživatelé ve vaší organizaci přidají nové skupiny prostředků a prostředky, automaticky se vynutí použití některého z povolených umístění.

V tomto kurzu se nastavení pro správu aplikují na skupinu prostředků, takže je po skončení můžete snadno odebrat.

Vytvoříme skupinu prostředků.

New-AzResourceGroup -Name myResourceGroup -Location EastUS

V tuto chvíli je skupina prostředků prázdná.

Řízení přístupu na základě role v Azure

Potřebujete zajistit, aby uživatelé ve vaší organizaci měli správnou úroveň přístupu k těmto prostředkům. Nechcete uživatelům dát neomezený přístup, ale zároveň jim potřebujete umožnit dělat svou práci. Řízení přístupu na základě role v Azure (Azure RBAC) umožňuje spravovat, kteří uživatelé mají oprávnění k provádění konkrétních akcí v oboru.

K vytváření a odebírání přiřazení rolí musí mít uživatelé přístup Microsoft.Authorization/roleAssignments/*. Tento přístup se poskytuje prostřednictvím role vlastníka nebo správce uživatelských přístupů.

Pro správu řešení virtuálních počítačů existují v závislosti na prostředcích tři role, které poskytují běžný přístup:

Místo přiřazování rolí jednotlivým uživatelům je často jednodušší použít skupinu Azure Active Directory obsahující uživatele, kteří potřebují provádět podobné akce. Potom této skupině přiřaďte odpovídající role. Pro účely tohoto článku použijte buď existující skupinu pro správu virtuálního počítače, nebo pomocí portálu vytvořte skupinu Azure Active Directory.

Po vytvoření nové skupiny nebo vyhledání existující skupiny pomocí příkazu New-AzRoleAssignment přiřaďte skupinu Azure Active Directory k roli Přispěvatel virtuálních počítačů pro skupinu prostředků.

$adgroup = Get-AzADGroup -DisplayName <your-group-name>

New-AzRoleAssignment -ObjectId $adgroup.id `
  -ResourceGroupName myResourceGroup `
  -RoleDefinitionName "Virtual Machine Contributor"

Pokud se zobrazí chyba oznamující, že v adresáři neexistuje identifikátor GUID> objektu zabezpečení<, nová skupina se v Azure Active Directory nerozšírovala. Zkuste příkaz znovu spustit.

Obvykle tento postup zopakujete pro role Přispěvatel sítě a Přispěvatel účtů úložiště, abyste zajistili přiřazení uživatelů ke správě nasazených prostředků. V tomto článku můžete tyto kroky vynechat.

Azure Policy

Azure Policy pomáhá zajistit, aby všechny prostředky v předplatném splňovaly firemní standardy. Vaše předplatné už obsahuje několik definic zásad. Pokud chcete zobrazit dostupné definice zásad, použijte příkaz Get-AzPolicyDefinition :

(Get-AzPolicyDefinition).Properties | Format-Table displayName, policyType

Zobrazí se definice existujících zásad. Typ zásad je buď Předdefinované nebo Vlastní. Najděte definice zásad popisující podmínku, kterou chcete přiřadit. V tomto článku můžete přiřadit zásady s těmito funkcemi:

  • Omezení umístění pro všechny prostředky
  • Omezení SKU pro virtuální počítače
  • Audit virtuálních počítačů, které nepoužívají spravované disky

V následujícím příkladu načtete definice tří zásad na základě zobrazovaného názvu. K přiřazení těchto definic ke skupině prostředků použijete příkaz New-AzPolicyAssignment . U některých zásad určíte povolené hodnoty zadáním hodnot parametrů.

# Values to use for parameters
$locations ="eastus", "eastus2"
$skus = "Standard_DS1_v2", "Standard_E2s_v2"

# Get the resource group
$rg = Get-AzResourceGroup -Name myResourceGroup

# Get policy definitions for allowed locations, allowed SKUs, and auditing VMs that don't use managed disks
$locationDefinition = Get-AzPolicyDefinition | where-object {$_.properties.displayname -eq "Allowed locations"}
$skuDefinition = Get-AzPolicyDefinition | where-object {$_.properties.displayname -eq "Allowed virtual machine size SKUs"}
$auditDefinition = Get-AzPolicyDefinition | where-object {$_.properties.displayname -eq "Audit VMs that do not use managed disks"}

# Assign policy for allowed locations
New-AzPolicyAssignment -Name "Set permitted locations" `
  -Scope $rg.ResourceId `
  -PolicyDefinition $locationDefinition `
  -listOfAllowedLocations $locations

# Assign policy for allowed SKUs
New-AzPolicyAssignment -Name "Set permitted VM SKUs" `
  -Scope $rg.ResourceId `
  -PolicyDefinition $skuDefinition `
  -listOfAllowedSKUs $skus

# Assign policy for auditing unmanaged disks
New-AzPolicyAssignment -Name "Audit unmanaged disks" `
  -Scope $rg.ResourceId `
  -PolicyDefinition $auditDefinition

Nasazení virtuálního počítače

Přiřadili jste role a zásady, takže jste připravení nasadit řešení. Výchozí velikost je Standard_DS1_v2, což je jedno z povolených SKU. Při spuštění tohoto kroku se zobrazí výzva k zadání přihlašovacích údajů. Hodnoty, které zadáte, se nakonfigurují jako uživatelské jméno a heslo pro virtuální počítač.

New-AzVm -ResourceGroupName "myResourceGroup" `
     -Name "myVM" `
     -Location "East US" `
     -VirtualNetworkName "myVnet" `
     -SubnetName "mySubnet" `
     -SecurityGroupName "myNetworkSecurityGroup" `
     -PublicIpAddressName "myPublicIpAddress" `
     -OpenPorts 80,3389

Po dokončení nasazování můžete použít další nastavení pro správu řešení.

Uzamčení prostředků

Zámky prostředků zabraňují tomu, aby uživatelé ve vaší organizaci neúmyslně odstranili nebo změnili důležité prostředky. Na rozdíl od řízení přístupu na základě role používají zámky prostředků omezení pro všechny uživatele a role. Zámek můžete nastavit na úroveň CanNotDelete nebo ReadOnly.

Pokud chcete uzamknout virtuální počítač a skupinu zabezpečení sítě, použijte příkaz New-AzResourceLock :

# Add CanNotDelete lock to the VM
New-AzResourceLock -LockLevel CanNotDelete `
  -LockName LockVM `
  -ResourceName myVM `
  -ResourceType Microsoft.Compute/virtualMachines `
  -ResourceGroupName myResourceGroup

# Add CanNotDelete lock to the network security group
New-AzResourceLock -LockLevel CanNotDelete `
  -LockName LockNSG `
  -ResourceName myNetworkSecurityGroup `
  -ResourceType Microsoft.Network/networkSecurityGroups `
  -ResourceGroupName myResourceGroup

Zámky otestujete pomocí následujícího příkazu:

Remove-AzResourceGroup -Name myResourceGroup

Zobrazí se chyba s oznámením, že operaci odstranění nelze kvůli zámku dokončit. Skupinu prostředků odstraníte, pouze pokud skutečně odeberete zámky. Tento krok najdete v části o vyčištění prostředků.

Označení prostředků

Značky použijete u prostředků Azure k jejich logickému uspořádání podle kategorií. Každá značka se skládá z názvu a hodnoty. Můžete například použít název Prostředí a hodnotu Produkční na všechny prostředky v produkčním prostředí.

Pokud chcete do skupiny prostředků přidat dvě značky, použijte příkaz Set-AzResourceGroup :

Set-AzResourceGroup -Name myResourceGroup -Tag @{ Dept="IT"; Environment="Test" }

Předpokládejme, že chcete přidat třetí značku. Pokaždé, když použijete značky na prostředek nebo skupinu prostředků, přepíšete pro daný prostředek nebo skupinu prostředků existující značky. Pokud chcete novou značku přidat bez ztráty stávajících značek, je nutné stávající značky načíst, přidat novou značku a potom kolekci značek znovu použít:

# Get existing tags and add a new tag
$tags = (Get-AzResourceGroup -Name myResourceGroup).Tags
$tags.Add("Project", "Documentation")

# Reapply the updated set of tags 
Set-AzResourceGroup -Tag $tags -Name myResourceGroup

Prostředky nedědí značky ze skupiny prostředků. Vaše skupiny prostředků momentálně má tři značky, ale prostředky nemají žádné. Pokud chcete všechny značky ze skupiny prostředků použít na prostředky a zachovat existující značky u prostředků, které nejsou duplikáty, použijte tento skript:

# Get the resource group
$group = Get-AzResourceGroup myResourceGroup

if ($group.Tags -ne $null) {
    # Get the resources in the resource group
    $resources = Get-AzResource -ResourceGroupName $group.ResourceGroupName

    # Loop through each resource
    foreach ($r in $resources)
    {
        # Get the tags for this resource
        $resourcetags = (Get-AzResource -ResourceId $r.ResourceId).Tags
        
        # If the resource has existing tags, add new ones
        if ($resourcetags)
        {
            foreach ($key in $group.Tags.Keys)
            {
                if (-not($resourcetags.ContainsKey($key)))
                {
                    $resourcetags.Add($key, $group.Tags[$key])
                }
            }

            # Reapply the updated tags to the resource 
            Set-AzResource -Tag $resourcetags -ResourceId $r.ResourceId -Force
        }
        else
        {
            Set-AzResource -Tag $group.Tags -ResourceId $r.ResourceId -Force
        }
    }
}

Další možností je použít pro prostředky značky ze skupiny prostředků a nezachovávat stávající značky:

# Get the resource group
$g = Get-AzResourceGroup -Name myResourceGroup

# Find all the resources in the resource group, and for each resource apply the tags from the resource group
Get-AzResource -ResourceGroupName $g.ResourceGroupName | ForEach-Object {Set-AzResource -ResourceId $_.ResourceId -Tag $g.Tags -Force }

Pokud chcete sloučit několik hodnot v jedné značce, použijte řetězec JSON.

Set-AzResourceGroup -Name myResourceGroup -Tag @{ CostCenter="{`"Dept`":`"IT`",`"Environment`":`"Test`"}" }

Pokud chcete přidat novou značku s několika hodnotami bez ztráty existujících značek, musíte načíst existující značky, použít řetězec JSON pro novou značku a znovu použít kolekci značek:

# Get existing tags and add a new tag
$ResourceGroup = Get-AzResourceGroup -Name myResourceGroup
$Tags = $ResourceGroup.Tags
$Tags.Add("CostCenter", "{`"Dept`":`"IT`",`"Environment`":`"Test`"}")

# Reapply the updated set of tags
$ResourceGroup | Set-AzResourceGroup -Tag $Tags

Pokud chcete odebrat všechny značky, předejte prázdnou zatřiďovací tabulku.

Set-AzResourceGroup -Name myResourceGroup -Tag @{ }

Pokud chcete použít značky na virtuální počítač, použijte příkaz Set-AzResource :

# Get the virtual machine
$r = Get-AzResource -ResourceName myVM `
  -ResourceGroupName myResourceGroup `
  -ResourceType Microsoft.Compute/virtualMachines

# Apply tags to the virtual machine
Set-AzResource -Tag @{ Dept="IT"; Environment="Test"; Project="Documentation" } -ResourceId $r.ResourceId -Force

Hledání prostředků podle značky

Pokud chcete najít prostředky s názvem a hodnotou značky, použijte příkaz Get-AzResource :

(Get-AzResource -Tag @{ Environment="Test"}).Name

Vrácené hodnoty můžete použít pro úlohy správy, jako je zastavení všech virtuálních počítačů s určitou hodnotou značky.

Get-AzResource -Tag @{ Environment="Test"} | Where-Object {$_.ResourceType -eq "Microsoft.Compute/virtualMachines"} | Stop-AzVM

Zobrazení nákladů podle hodnoty značky

Po označení prostředků můžete zobrazit náklady na prostředky s příslušnými značkami. Zobrazení nejnovějšího využití v analýze nákladů nějakou dobu trvá, proto náklady možná ještě nevidíte. Jakmile budou náklady k dispozici, můžete zobrazit náklady na prostředky napříč skupinami prostředků ve vašem předplatném. K zobrazení nákladů musí mít uživatelé přístup k fakturačním údajům na úrovni předplatného.

Pokud chcete na portálu zobrazit náklady podle značky, vyberte své předplatné a pak Analýza nákladů.

Analýza nákladů

Pak vyberte filtr hodnoty značky a vyberte Použít.

Zobrazení nákladů podle značky

Přehled rozhraní API služby Azure Consumption můžete také použít k programovému zobrazení nákladů.

Vyčištění prostředků

Zamčená skupina zabezpečení sítě nejde odstranit, dokud neodstraníte zámek. Zámek odeberete pomocí příkazu Remove-AzResourceLock :

Remove-AzResourceLock -LockName LockVM `
  -ResourceName myVM `
  -ResourceType Microsoft.Compute/virtualMachines `
  -ResourceGroupName myResourceGroup
Remove-AzResourceLock -LockName LockNSG `
  -ResourceName myNetworkSecurityGroup `
  -ResourceType Microsoft.Network/networkSecurityGroups `
  -ResourceGroupName myResourceGroup

Pokud už nepotřebujete, můžete pomocí příkazu Remove-AzResourceGroup odebrat skupinu prostředků, virtuální počítač a všechny související prostředky.

Remove-AzResourceGroup -Name myResourceGroup

Správa nákladů

Služby Azure stojí peníze. S nastavením rozpočtů a konfigurací upozornění tak, abyste měli útratu pod kontrolou, vám pomůže služba Azure Cost Management. Cost Management umožňuje analyzovat, spravovat a optimalizovat náklady na Azure. Další informace najdete v rychlém startu k analýze nákladů.

Další kroky

V tomto kurzu jste vytvořili vlastní image virtuálního počítače. Naučili jste se:

  • Přiřazení role uživateli
  • Použití zásad, které vynucují standardy
  • Ochrana důležitých prostředků pomocí zámků
  • Označení prostředků pro fakturaci a správu

V dalším kurzu se dozvíte, jak identifikovat změny a spravovat aktualizace balíčků na virtuálním počítači s Linuxem.