Bicep 및 Azure 정책: Azure 정책 집합(또는 정책 이니셔티브) 만들기
11128 단어 governancepowershellbicepazure
Bicep 및 PowerShell을 사용하여 자동화할 수 있는 많은 것들이 있습니다.
먼저 정책 세트를 만들고 배포하는 방법을 보여 드리겠습니다. 그러나 먼저 Azure 정책 집합(또는 이니셔티브)이 무엇인지 정의해 보겠습니다. 정책 집합(또는 이니셔티브)은 Azure 정책 모음입니다. 이니셔티브를 범위(구독 또는 관리 그룹)에 적용하는 이러한 정책(정책 추가 또는 제거) 및 할당의 수명 주기를 단순화합니다.
정책 세트는 여러 속성을 포함하는 JSON 정의입니다.
마지막으로 정책 정의 및 정책 집합은 관리 그룹 또는 구독 범위 중 하나의 범위에 배포됩니다.
Bicep에서는 다음과 같이 보입니다.
resource symbolicname 'Microsoft.Authorization/policySetDefinitions@2021-06-01' = {
name: 'string'
scope: resourceSymbolicName
properties: {
description: 'string'
displayName: 'string'
metadata: {}
parameters: {}
policyDefinitions: [
{
groupNames: [
'string'
]
parameters: {}
policyDefinitionId: 'string'
policyDefinitionReferenceId: 'string'
}
]
policyType: 'custom'
}
}
이제 3개의 기본 제공 정책이 있는 정책 이니셔티브를 만들고 관리하라는 요청을 받았다고 상상해 보십시오.
다른 정책을 추가할 수 있고 기존 정책을 제거할 수 있다는 점, 솔루션 설계 방법을 알고 있습니다.
우리는 PolicyDefinitions 속성이 개체의 배열이며 여기에 사용된 정책 정의가 기본 매개 변수를 사용한다는 것을 알고 있습니다.
Bicep은 루프 및 배열을 처리할 수 있으므로 배포하려는 정책 이니셔티브의 텍스트 버전을 간단한 JSON 파일로 정의하는 간단한 방법을 쉽게 상상할 수 있습니다.
이 파일은 정책 세트 표시 이름, 설명, 범주 및 버전, 마지막으로 정책 ID 배열을 저장해야 합니다.
JSON 정의는 다음과 같습니다.
{
"initiativeName": "demoPolicySet",
"displayName": "Demo Policy Initiative for Dev.to",
"Category": "compliance",
"version": "1.0.0",
"policyToInclude": [
"/providers/Microsoft.Authorization/policyDefinitions/b52376f7-9612-48a1-81cd-1ffe4b61032c",
"/providers/Microsoft.Authorization/policyDefinitions/d9844e8a-1437-4aeb-a32c-0c992f056095",
"/providers/Microsoft.Authorization/policyDefinitions/1b8ca024-1d5c-4dec-8995-b1a932b41780"
],
"description": "Demo Policy Initiative for Dev.to"
}
간단하고 사람이 읽을 수 있습니다.
이제 솔루션을 배포하기 위해 bicep 파일을 살펴보겠습니다.
targetScope = 'managementGroup'
@maxLength(64)
@description('PolicySet name')
param initiativeName string
@maxLength(128)
@description('PolicySet display Name')
param initiativeDisplayName string
@description('PolicySet description')
param initiativeDescription string
@minLength(1)
@description('array of policy ID')
param initiativePoliciesID array
param category string = 'compliance'
param verion string = '1.0.0'
resource policySetDef 'Microsoft.Authorization/policySetDefinitions@2021-06-01' = {
name: initiativeName
properties: {
description: initiativeDescription
displayName: initiativeDisplayName
metadata: {
category: Category
version: version
}
parameters: {}
policyDefinitions: [for ID in initiativePoliciesID: {
parameters: {}
policyDefinitionId: ID
policyDefinitionReferenceId: ''
} ]
policyType: 'Custom'
}
}
다른 사람이 잘못된 값을 사용하는 경우 오류를 방지하기 위해 이니셔티브 이름 및 이니셔티브 디스플레이 이름에 대한 일부 제약 조건이 있는 매개 변수 블록이 있습니다.
일련의 정책을 처리하려면 for 루프가 필요합니다.
이제 정책 이니셔티브를 배포하려면 bicep 파일을 JSON 파일과 연결해야 합니다.
간단한 PowerShell 스크립트가 필요합니다!
이 스크립트는 JSON 파일을 읽고 bicep 파일을 배포하는 데 필요한 변수를 생성합니다.
[CmdletBinding()]
param (
[Parameter(Mandatory = $true)]
[string]
$managementGroupID,
[string]
$location = "westeurope"
)
if (!(Test-Path -Path "./policysetdef.json")) {
throw "Definition policy configuration json file is not present"
exit 1
}
if ($null -eq ( Get-AzContext -ErrorAction SilentlyContinue)){
throw "You need to have an open session in Azure, please use connect-azaccount"
exit 1
}
try {
$jsonDefinition = Get-Content -Path "./policysetdef.json" | ConvertFrom-Json
}
catch {
write-error "unable to get configuration data"
exit 1
}
$randomNumber = Get-Random
$deployName = "$($jsonDefinition.initiativeName)-$($randomNumber)"
New-AzManagementGroupDeployment -Name $deployName -ManagementGroupId $managementGroupID -Location $location -TemplateFile ./deploySet.bicep -initiativeName $jsonDefinition.initiativeName -initiativeDisplayName $jsonDefinition.displayName -initiativeDescription $jsonDefinition.description -initiativePoliciesID $jsonDefinition.policyToInclude
이 스크립트는 정책 이니셔티브의 배포 범위인 필수 managementGroupID와 기본적으로 서유럽인 배포 위치인 위치라는 두 가지 매개 변수를 사용합니다.
그런 다음 스크립트는 bicep 파일의 존재 여부와 Azure 세션이 열려 있는지 테스트합니다. 그런 다음 JSON 파일을 가져오고 데이터와 함께 New-AzManagementGroupDeployment Cmdlet을 사용하여 정책 이니셔티브를 배포합니다.
Reference
이 문제에 관하여(Bicep 및 Azure 정책: Azure 정책 집합(또는 정책 이니셔티브) 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/omiossec/bicep-and-azure-policy-create-an-azure-policy-set-or-policy-initiative-60j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)