Gyakorlat – Erőforrások üzembe helyezése felügyeleti csoportban
A Project Teddybear sikeres volt, és most a játékvállalat titkos R&D fejlesztése készen áll arra, hogy még több új játékot kutatjon. A csapat majdnem napi rendszerességgel kezdett új előfizetéseket kérni, és mindegyikre alkalmaznia kell a szabályzatait.
A szabályzatdefiníciók és hozzárendelések duplikálása helyett úgy döntött, hogy a csoport összes előfizetését egy felügyeleti csoportba helyezi. Ezután a szabályzatot az egyes előfizetések helyett a teljes felügyeleti csoportra alkalmazhatja.
Ebben a gyakorlatban létrehoz egy új Bicep-sablont, amely szabályzatdefiníciókat és hozzárendeléseket alkalmaz egy felügyeleti csoportra.
A folyamat során a következőt fogja elvégezni:
- Hozzon létre egy új felügyeleti csoportot.
- Hozzon létre egy új felügyeleti csoport hatókörű Bicep-fájlt.
- Adja hozzá az Azure Policy-erőforrásokat a fájlhoz.
- Kapcsolja a szabályzat-hozzárendelést a szabályzatdefinícióhoz az erőforrás-azonosító manuális összeállításával.
- Helyezze üzembe a sablont, és ellenőrizze az eredményt.
Ehhez a gyakorlathoz a következő előfeltételek szükségesek:
- A felügyeleti csoportokat engedélyezni kell az Azure-bérlőn.
- Engedélyekre van szüksége egy új felügyeleti csoport létrehozásához a hierarchián belül.
- Engedélyekre van szüksége az Azure Policy-erőforrások felügyeleti csoportban való üzembe helyezéséhez.
Ha a jelenlegi Azure-fiókjával nem tudja teljesíteni ezeket a követelményeket, ingyenes próbaverziót kaphat, és létrehozhat egy új Azure-előfizetést és -bérlőt. Másik lehetőségként kihagyhatja a gyakorlat üzembe helyezési lépéseit.
Felügyeleti csoport létrehozása
Ebben a gyakorlatban létrehoz egy új felügyeleti csoportot, hogy véletlenül ne befolyásolja az Azure-környezet egy másik részén található erőforrásokat.
A Visual Studio Code terminálon futtassa a következő Azure CLI-parancsokat:
az account management-group create \
--name SecretRND \
--display-name "Secret R&D Projects"
Alapértelmezés szerint az új felügyeleti csoport a bérlői gyökérszintű felügyeleti csoport közvetlen gyermekeként jön létre. Ha a felügyeleti csoportot egy adott helyre kell helyeznie a meglévő felügyeleti csoport hierarchiájában, használja a --parent-id
paramétert, és adja meg a szülőként használni kívánt felügyeleti csoport nevét.
A Visual Studio Code terminálon futtassa a következő Azure PowerShell-parancsokat:
New-AzManagementGroup `
-GroupId 'SecretRND' `
-DisplayName 'Secret R&D Projects'
Alapértelmezés szerint az új felügyeleti csoport a bérlő gyökérszintű felügyeleti csoportjának gyermekeként jön létre. Ha a felügyeleti csoportot egy adott helyre kell helyeznie a meglévő felügyeleti csoport hierarchiájában, használja a -ParentId
paramétert, és adja meg a szülőként használni kívánt felügyeleti csoport nevét.
Egy valós üzembe helyezés során az R&D-csapat előfizetéseit áthelyezi a felügyeleti csoportba. Ebben a gyakorlatban akkor is üzembe helyezi a szabályzatokat, ha a felügyeleti csoport nem tartalmaz előfizetéseket. Ugyanez az üzembe helyezési folyamat vonatkozik arra, hogy a felügyeleti csoport üres vagy előfizetéseket tartalmaz-e.
Bicep-fájl létrehozása felügyeleti csoporton való üzembe helyezéshez
Nyissa meg a Visual Studio Code-ot.
Törölje a main.bicep fájlt, majd hozzon létre egy új üres fájlt ugyanazzal a névvel.
Mentse az üres fájlt.
Adja hozzá a következő tartalmat a fájlhoz.
targetScope = 'managementGroup'
Vegye figyelembe, hogy ez a kódsor tájékoztatja a Bicepet, hogy a sablon a felügyeleti csoport hatókörében lesz üzembe helyezve.
Szabályzatdefiníció hozzáadása
Ahogy korábban is tette, hozzon létre egy szabályzatdefiníciót a Bicep-fájlban.
Az imént hozzáadott sor alatt adja hozzá a következő változódefiníciót:
var policyDefinitionName = 'DenyFandGSeriesVMs'
A fájl alján adja hozzá a következő Azure Policy-definíciót:
resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2020-03-01' = { name: policyDefinitionName properties: { policyType: 'Custom' mode: 'All' parameters: {} policyRule: { if: { allOf: [ { field: 'type' equals: 'Microsoft.Compute/virtualMachines' } { anyOf: [ { field: 'Microsoft.Compute/virtualMachines/sku.name' like: 'Standard_F*' } { field: 'Microsoft.Compute/virtualMachines/sku.name' like: 'Standard_G*' } ] } ] } then: { effect: 'deny' } } } }
A szabályzatdefiníció megegyezik az előfizetésre korábban alkalmazott szabályzattal. Ezúttal azonban egy felügyeleti csoportban helyezi üzembe.
Szabályzat-hozzárendelés hozzáadása
Most alkalmazza a szabályzatot a felügyeleti csoportra. Ez azt jelenti, hogy a szabályzat a felügyeleti csoport összes gyermek előfizetésére érvényes lesz.
policyDefinitionName
A változódefiníció alatt adja hozzá a következő változót:var policyAssignmentName = 'DenyFandGSeriesVMs'
A fájl alján, a szabályzatdefiníciós erőforrás alatt adja hozzá a következő szabályzat-hozzárendelést:
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2020-03-01' = { name: policyAssignmentName properties: { policyDefinitionId: policyDefinition.id } }
Mentse a fájl módosításait.
A sablon ellenőrzése
A sablonnak a következőképpen kell kinéznie:
targetScope = 'managementGroup'
var policyDefinitionName = 'DenyFandGSeriesVMs'
var policyAssignmentName = 'DenyFandGSeriesVMs'
resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2020-03-01' = {
name: policyDefinitionName
properties: {
policyType: 'Custom'
mode: 'All'
parameters: {}
policyRule: {
if: {
allOf: [
{
field: 'type'
equals: 'Microsoft.Compute/virtualMachines'
}
{
anyOf: [
{
field: 'Microsoft.Compute/virtualMachines/sku.name'
like: 'Standard_F*'
}
{
field: 'Microsoft.Compute/virtualMachines/sku.name'
like: 'Standard_G*'
}
]
}
]
}
then: {
effect: 'deny'
}
}
}
}
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2020-03-01' = {
name: policyAssignmentName
properties: {
policyDefinitionId: policyDefinition.id
}
}
Ha nem, másolja ki a példát, vagy módosítsa a sablont a példának megfelelően.
A sablon üzembe helyezése az Azure-ban
A Visual Studio Code terminálban helyezze üzembe a sablont az alábbi Azure CLI-parancsokkal:
managementGroupId="SecretRND"
templateFile="main.bicep"
today=$(date +"%d-%b-%Y")
deploymentName="mg-scope-"$today
az deployment mg create \
--management-group-id $managementGroupId \
--name $deploymentName \
--location westus \
--template-file $templateFile
Helyezze üzembe a sablont Azure PowerShell-parancsok használatával a terminálban.
$managementGroupId = 'SecretRND'
$templateFile = 'main.bicep'
$today = Get-Date -Format 'MM-dd-yyyy'
$deploymentName = "mg-scope-$today"
New-AzManagementGroupDeployment `
-ManagementGroupId $managementGroupId `
-Name $deploymentName `
-Location westus `
-TemplateFile $templateFile
Figyelje meg, hogy az előfizetések központi telepítéséhez hasonlóan explicit módon adja meg az üzembehelyezési metaadatok nevét és helyét. A mai dátumot használva csökkenti a meglévő üzembe helyezési név használatának esélyét.
Az üzembe helyezés végrehajtása eltarthat egy-két percig, majd megjelenik egy sikeres üzembe helyezés.
Az üzemelő példány ellenőrzése
Az előfizetés-hatókörű üzemelő példányokhoz hasonlóan a felügyeleti csoport hatókörű üzemelő példányait is megtekintheti az Azure Portalon.
Nyissa meg az Azure Portalt.
A bal oldali panelen válassza a Minden szolgáltatás lehetőséget.
A Keresőmezőbe írja be a felügyeleti csoportot, majd válassza ki a Felügyeleti csoportokat a találatok listájában.
Válassza ki a Titkos R&D-projektek felügyeleti csoportját .
A bal oldali ablaktáblán a Keresőmezőbe írja be az Üzembe helyezéseket, majd válassza a Központi telepítések lehetőséget az Irányítás területen.
Válassza ki az mg-hatókörrel kezdődő üzembe helyezést az üzembe helyezett erőforrások megtekintéséhez.
A kijelölt üzembe helyezés Áttekintés ablaktábláján válassza az Üzembe helyezés részletei lehetőséget a kibontásához. A két Azure Policy-erőforrás szerepel a listán.
Az erőforrások eltávolítása
Sikeresen üzembe helyezte a felügyeleti csoport hatókörű erőforrásait. Eltávolíthatja a létrehozott szabályzaterőforrásokat és felügyeleti csoportot.
az account management-group delete --name SecretRND
Remove-AzManagementGroup -GroupId SecretRND