Oktatóanyag: A Windows rendszerű virtuális gépek Azure PowerShell való kezelésének ismertetése

Amikor erőforrásokat helyez üzembe az Azure-ban, elképesztően rugalmasan dönthet arról, milyen típusú erőforrásokat szeretne üzembe helyezni, hol legyenek és hogyan állítja be őket. Előfordulhat azonban, hogy ez a rugalmasság több lehetőséget teremt, mint amennyit a szervezeten belül engedélyezni szeretne. Amikor erőforrások Azure-ban való üzembe helyezését mérlegeli, esetleg felmerülhetnek az alábbi kérdések:

  • Hogyan megfelel-e bizonyos országokban/régiókban az adatok elkülönítésére vonatkozó jogi követelményeknek?
  • Hogyan szabályozhatom a költségeket?
  • Hogyan biztosíthatom, hogy senki ne módosítson akarata ellenére egy kritikus rendszert?
  • Hogyan követhetem nyomon és számlázhatom pontosan a költségeket?

A cikk ezekkel a kérdésekkel foglalkozik. Konkrétan a következőket fogja tenni:

  • Hozzárendel felhasználókat szerepkörökhöz, és hozzárendeli a szerepköröket egy hatókörhöz, hogy a felhasználók engedélyt kapjanak az elvárt műveletek elvégzésére, de másra ne.
  • Az előfizetésében lévő erőforrásokra konvenciókat előíró szabályzatokat alkalmaz.
  • Zárolja a rendszer szempontjából kritikus fontosságú erőforrásokat.
  • Felcímkézi az erőforrásokat, hogy nyomon követhesse őket a szervezet számára jelentéssel bíró értékek szerint.

Ez a cikk az irányítás megvalósításához elvégzendő feladatokra összpontosít. A fogalmak részletesebb ismertetését az Azure-beli irányítást ismertető cikkben találja.

Az Azure Cloud Shell elindítása

Az Azure Cloud Shell egy olyan ingyenes interaktív kezelőfelület, amelyet a jelen cikkben található lépések futtatására használhat. A fiókjával való használat érdekében a gyakran használt Azure-eszközök már előre telepítve és konfigurálva vannak rajta.

A Cloud Shell megnyitásához válassza a Kipróbálás lehetőséget egy kódblokk jobb felső sarkában. A Cloud Shellt egy külön böngészőlapon is elindíthatja a https://shell.azure.com/powershell cím megnyitásával. A Copy (másolás) gombra kattintva másolja és illessze be a kódot a Cloud Shellbe, majd nyomja le az Enter billentyűt a futtatáshoz.

A hatókör bemutatása

Mielőtt létrehoznánk bármit is, tekintsük át a hatókör fogalmát. Az Azure négy felügyeleti szintet biztosít: felügyeleti csoportok, előfizetés, erőforráscsoport és erőforrás. A felügyeleti csoportok szintje egyelőre előzetes verzióban érhető el. Az alábbi ábra ezekre a rétegekre mutat egy példát.

Hatókör

Felügyeleti beállításokat a hatókörszintek bármelyikéhez megadhat. A kiválasztott szint határozza meg, milyen széles körben lesz alkalmazva a beállítás. Az alacsonyabb szintek öröklik a magasabb szintek beállításait. Amikor alkalmaz egy beállítást az előfizetésre, a beállítást a rendszer alkalmazza az előfizetésben lévő összes erőforráscsoportra és erőforrásra. Amikor alkalmaz egy beállítást az erőforráscsoportra, az a beállítás érvényben lesz az erőforráscsoporton és annak összes erőforrásán. Más erőforráscsoportra azonban nem érvényes ez a beállítás.

Általában logikus döntés a kritikus fontosságú beállításokat magasabb szinten alkalmazni, a projektspecifikus feltételeket pedig alacsonyabb szinten. Előfordulhat például, hogy biztosítani szeretné, hogy a szervezet összes erőforrása bizonyos régiókban legyen üzembe helyezve. A feltétel teljesítéséhez alkalmazzon egy, a megengedett helyeket megadó szabályzatot az előfizetésre. Ahogy a szervezet más felhasználói új erőforráscsoportokat és erőforrásokat vesznek fel, a rendszer automatikusan kikényszeríti a megengedett helyeket.

Ebben az oktatóanyagban minden kezelési beállítást egy erőforráscsoportra alkalmaz, így egyszerűen eltávolíthatja a beállításokat, ha elkészült.

Hozzuk létre az erőforráscsoportot.

New-AzResourceGroup -Name myResourceGroup -Location EastUS

Az erőforráscsoport jelenleg üres.

Azure-beli szerepköralapú hozzáférés-vezérlés

Győződjön meg arról, hogy az intézmény felhasználói megfelelő hozzáférési szinttel rendelkeznek ezekhez az erőforrásokhoz. Nem ajánlott korlátlan hozzáférést nyújtania a felhasználóknak, de fontos biztosítania, hogy el tudják végezni a munkájukat. Az Azure-beli szerepköralapú hozzáférés-vezérlés (Azure RBAC) lehetővé teszi annak kezelését, hogy mely felhasználók jogosultak adott műveletek elvégzésére egy hatókörben.

A szerepkör-hozzárendelések létrehozásához és eltávolításához a felhasználóknak Microsoft.Authorization/roleAssignments/* hozzáféréssel kell rendelkezniük. Ez a hozzáférés a tulajdonosi vagy a felhasználói hozzáférés rendszergazdájának szerepkörével adható meg.

A virtuálisgép-megoldások kezeléséhez három erőforrás-specifikus szerepkör létezik, amelyek biztosítják a leggyakrabban szükséges hozzáféréseket:

Ahelyett, hogy szerepköröket rendelne az egyéni felhasználókhoz, gyakran célszerűbb egy azokat a felhasználókat tartalmazó Azure Active Directory-csoportot használni, akiknek hasonló műveleteket kell elvégezniük. Ezután rendelje hozzá a csoportot a megfelelő szerepkörhöz. Ehhez a cikkhez használhat egy meglévő csoportot a virtuális gép kezeléséhez, vagy a portálon létrehozhat egy Azure Active Directory-csoportot.

Új csoport létrehozása vagy egy meglévő megtalálása után a New-AzRoleAssignment paranccsal rendelje hozzá az Azure Active Directory-csoportot az erőforráscsoport virtuálisgép-közreműködői szerepköréhez.

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

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

Ha hibaüzenetet kap, amely szerint az egyszerű <GUID> nem létezik a címtárban, az új csoport nem propagálta az Azure Active Directoryban. Próbálja meg ismét futtatni a parancsot.

A folyamatot általában a Hálózati közreműködő és a Tárfiók-közreműködő szerepkörön is végre kell hajtani, hogy a felhasználók megkapják az üzembe helyezett erőforrások kezeléséhez szükséges jogosultságokat. Ebben a cikkben kihagyhatja ezeket a lépéseket.

Azure Policy

Az Azure Policy segítségével ellenőrizheti, hogy az előfizetés összes erőforrása megfelel-e a vállalati szabványoknak. Az előfizetése már számos szabályzatdefinícióval rendelkezik. Az elérhető szabályzatdefiníciók megtekintéséhez használja a Get-AzPolicyDefinition parancsot:

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

Itt láthatja a meglévő szabályzatdefiníciókat. A szabályzat típusa lehet Beépített vagy Egyéni. Keresse meg azokat a definíciókat, amelyek az Ön által hozzárendelni kívánt feltételt írják le. Ebben a cikkben olyan szabályzatokat rendel hozzá, amelyek:

  • Korlátozzák az összes erőforrás helyét.
  • Korlátozzák a virtuális gépek termékváltozatait.
  • Naplózzák a felügyelt lemezeket nem használó virtuális gépeket.

A következő példában három olyan szabályzatdefiníciót fog lekérni, amely a megjelenítendő néven alapul. Ezeket a definíciókat a New-AzPolicyAssignment paranccsal rendelheti hozzá az erőforráscsoporthoz. Egyes szabályzatoknál paraméterértékekkel határozhatja meg az engedélyezett értékeket.

# 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

A virtuális gép üzembe helyezése

A szerepkörök és szabályzatok hozzárendelése megtörtént, így megkezdheti a megoldás üzembe helyezését. Az alapértelmezett méret a Standard_DS1_v2, amely az egyik engedélyezett termékváltozat. Ennek a lépésnek a futtatásakor a rendszer a hitelesítő adatok megadását kéri. Az itt megadott értékek határozzák meg a virtuális géphez tartozó felhasználónevet és jelszavát.

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

Az üzembe helyezés befejezése után további kezelési beállításokat alkalmazhat a megoldáson.

Erőforrások zárolása

Az Erőforrás-zárolások megakadályozzák, hogy a cég vagy intézmény felhasználói véletlenül töröljék vagy módosítsák a kritikus erőforrásokat. Az erőforrás-zárolások a szerepköralapú hozzáférés-vezérléssel szemben minden felhasználóra és szerepkörre érvényes korlátozásokat alkalmaznak. A zárolási szintet CanNotDelete (nem törölhető) vagy ReadOnly (csak olvasható) értékre állíthatja be.

A virtuális gép és a hálózati biztonsági csoport zárolásához használja a New-AzResourceLock parancsot:

# 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

A zárolások teszteléséhez futtassa az alábbi parancsot:

Remove-AzResourceGroup -Name myResourceGroup

Megjelenik egy hibaüzenet, amely szerint a törlési művelet nem hajtható végre egy zárolás miatt. Az erőforráscsoport csak akkor törölhető, ha külön eltávolítja a zárolásokat. Ezt a lépést Az erőforrások eltávolítása című szakasz ismerteti.

Erőforrások címkézése

Címkéket alkalmazhat az Azure-erőforrásokra, hogy kategóriák szerint logikailag rendszerezze őket. Minden címke egy névből és egy értékből áll. Alkalmazhatja például a „Környezet” nevet és az „Éles” értéket az összes éles üzemben használt erőforrásra.

Ha két címkét szeretne hozzáadni egy erőforráscsoporthoz, használja a Set-AzResourceGroup parancsot:

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

Tegyük fel, hogy hozzá kíván adni egy harmadik címkét. Minden alkalommal, amikor címkével lát el egy erőforrást vagy erőforráscsoportot, felülírja a hozzá tartozó korábbi címkéket. Ha a meglévő címkék elvesztése nélkül szeretne hozzáadni egy új címkét, le kell kérnie a meglévő címkéket, hozzá kell adnia egy új címkét, és újra alkalmaznia kell a címkegyűjteményt:

# 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

Az erőforrások nem örökölnek címkéket az erőforráscsoporttól. Az erőforráscsoportnak jelenleg három címkéje van, de az erőforrásoknak nincs címkéjük. Ha az erőforráscsoport összes címkéjét alkalmazni kívánja a csoport erőforrásaira, és nem szeretné megőrizni az erőforrások meglévő, nem ismétlődő címkéit, használja a következő szkriptet:

# 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
        }
    }
}

Másik megoldásként alkalmazhatja az erőforráscsoport címkéit az erőforrásokra a meglévő címkék megtartása nélkül:

# 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 }

Ha több értéket szeretne kombinálni egyetlen címkében, használjon JSON-sztringet.

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

Ha több értékkel rendelkező új címkét szeretne hozzáadni a meglévő címkék elvesztése nélkül, le kell kérnie a meglévő címkéket, JSON-sztringet kell használnia az új címkéhez, és újra kell alkalmaznia a címkék gyűjteményét:

# 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

Az összes címke eltávolításához adjon át egy üres kivonattáblát.

Set-AzResourceGroup -Name myResourceGroup -Tag @{ }

Ha címkéket szeretne alkalmazni egy virtuális gépre, használja a Set-AzResource parancsot:

# 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

Erőforrások keresése címke szerint

Címkenévvel és értékkel rendelkező erőforrások kereséséhez használja a Get-AzResource parancsot:

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

A visszaadott értékeket kezelési feladatokhoz, például az adott címkeértékkel rendelkező összes virtuális gép leállításához használhatja.

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

Költségek megtekintése címkeértékek szerint

Az erőforrások felcímkézése után megtekintheti az adott címkével ellátott erőforrások költségét. A legutóbbi használati adatok megjelenítése eltarthat egy darabig a költségelemzés számára, tehát előfordulhat, hogy rögtön nem látja a költségeket. Amikor a költségek már elérhetők, megtekintheti az előfizetésében lévő erőforráscsoportok erőforrásainak költségét. A költségek megtekintéséhez a felhasználóknak előfizetéses szintű hozzáféréssel kell rendelkezniük a számlázási adatokhoz.

Ha címke szerint szeretné megtekinteni a költségeket a portálon, válassza ki az előfizetését, és válassza a Költségelemzés lehetőséget.

Költségelemzés

Ezután szűrjön címkeérték szerint, és válassza az Alkalmaz lehetőséget.

Költség megtekintése címke szerint

Az Azure consumption API áttekintésével programozott módon is megtekintheti a költségeket.

Az erőforrások eltávolítása

A zárolt hálózati biztonsági csoport nem törölhető a zárolás eltávolításáig. A zárolás eltávolításához használja a Remove-AzResourceLock parancsot:

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

Ha már nincs rá szükség, a Remove-AzResourceGroup paranccsal eltávolíthatja az erőforráscsoportot, a virtuális gépet és az összes kapcsolódó erőforrást.

Remove-AzResourceGroup -Name myResourceGroup

Költségek kezelése

Az Azure-szolgáltatások pénzbe kerülnek. Az Azure Cost Management segít a költségvetések beállításában és a riasztások konfigurálásában, hogy kézben tarthassa a költségeket. A Cost Managementtel elemezheti, kezelheti és optimalizálhatja az Azure-költségeit. További információt a költségek elemzésének gyorsútmutatójában talál.

Következő lépések

Ebben az oktatóanyagban létrehozott egy egyéni virtuálisgép-rendszerképet. Megtanulta végrehajtani az alábbi műveleteket:

  • Felhasználók hozzárendelése szerepkörhöz
  • Szabványokat kényszerítő szabályzatok alkalmazása
  • Kritikus erőforrások védelme zárolásokkal
  • Erőforrások címkézése számlázáshoz és felügyelethez

Lépjen tovább a következő oktatóanyagra, amelyből megtudhatja, hogyan azonosíthatja a módosításokat, és hogyan kezelheti a csomagfrissítéseket egy Linux rendszerű virtuális gépen.