Azure 정책으로 Azure 진단 설정 구성

37476 단어 armdevopspolicyazure

Azure 정책으로 Azure 진단 설정 구성



목차



1 Objective
2 Diagnostic Settings in Azure Portal
3 Policy
3.1 Policy Rule
3.2 Policy Set Definitions
4 Permissions
5 Deployment
6 Policy in Azure Portal

1 목표

Azure resources had to be configured with diagnostic settings.
To apply these settings the general approach with
Azure Policies이 가장 큰 이점을 가졌습니다.
  • ARM 템플릿을 사용한 관리
  • 규정 준수 확인
  • CI/CD 통합

  • Azure Diagnostic Settings은 여러 가지 방법으로 구성할 수 있습니다.
  • Azure 포털
  • 파워쉘
  • Azure CLI
  • REST API
  • Azure Policy

  • 2 Azure Portal의 진단 설정

    The screenshots below display the diagnostic settings (logs and metrics) for a Cosmos DB account.




    3 정책

    A policy에는 다른 요소가 포함되어 있습니다.

    3.1 정책 규칙

    Each resource type needs a Policy Rule .

    제 경우에는 다음 리소스 유형에 대한 정책을 구성했습니다.
  • Microsoft.KeyVault/볼트
  • Microsoft.EventGrid/주제
  • Microsoft.EventGrid/eventSubscriptions
  • Microsoft.Web/sites
  • Microsoft.ServiceBus/네임스페이스
  • Microsoft.Network/networkSecurityGroups
  • Microsoft.Network/applicationGateways

  • 3.1.1 정책 규칙 유형의 예



    policyRule에서 추출:

              "policyRule": {
      "if": {
        "field": "type",
        "equals": "Microsoft.DocumentDB/databaseAccounts"
      },
      "then": {
        "effect": "[[parameters('effect')]",
        "details": {
          "type": "Microsoft.Insights/diagnosticSettings",
          "name": "[[parameters('profileName')]",
          "existenceCondition": {
            "allOf": [
              {
                "field": "Microsoft.Insights/diagnosticSettings/logs.enabled",
                "equals": "[[parameters('logsEnabled')]"
              },
              {
                "field": "Microsoft.Insights/diagnosticSettings/metrics.enabled",
                "equals": "[[parameters('metricsEnabled')]"
              },
              {
                "field": "Microsoft.Insights/diagnosticSettings/storageAccountId",
                "equals": "[[parameters('storageExists')]"
              }
            ]
          },
          "roleDefinitionIds": [
            "/providers/microsoft.authorization/roleDefinitions/749f88d5-cbae-40b8-bcfc-e573ddc772fa",
            "/providers/microsoft.authorization/roleDefinitions/92aaf0da-9dab-42b6-94a3-d43ce8d16293"
          ]
        }
      }
    }
    
    




    3.1.1.1 존재 조건

    매개변수 값에 따라 로깅, 메트릭 및 스토리지 로깅에 대한 진단 설정이 확인됩니다.


    3.1.1.2 역할 정의 ID

    Azure built-in roles은 적절한 권한을 설정하는 데 필요합니다.

  • Monitoring Contributor
  • 749f88d5-cbae-40b8-bcfc-e573ddc772fa



  • Log Analytics Contributor
  • 92aaf0da-9dab-42b6-94a3-d43ce8d16293


  • 3.1.2



    배포 속성에는 로그와 메트릭이 포함됩니다.

    policyRule에서 추출:

    {
      "policyRule": {
        "if": {
        },
        "then": {
          "deployment": {
            "properties": {
              "mode": "incremental",
              "template": {
                "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                "contentVersion": "1.0.0.0",
                "parameters": {
                  "resourceName": {
                    "type": "string"
                  },
                  "location": {
                    "type": "string"
                  },
                  "logAnalytics": {
                    "type": "string"
                  },
                  "archiveStorage": {
                    "type": "string"
                  },
                  "metricsEnabled": {
                    "type": "string"
                  },
                  "logsEnabled": {
                    "type": "string"
                  },
                  "storageExists": {
                    "type": "string"
                  },
                  "profileName": {
                    "type": "string"
                  }
                },
                "variables": {},
                "resources": [
                  {
                    "type": "Microsoft.DocumentDB/databaseAccounts/providers/diagnosticSettings",
                    "apiVersion": "2017-05-01-preview",
                    "name": "[[concat(parameters('resourceName'), '/', 'Microsoft.Insights/', parameters('profileName'))]",
                    "location": "[[parameters('location')]",
                    "dependsOn": [],
                    "properties": {
                      "workspaceId": "[[parameters('logAnalytics')]",
                      "storageAccountId": "[[parameters('archiveStorage')]",
                      "metrics": [
                        {
                          "category": "Requests",
                          "enabled": true,
                          "retentionPolicy": {
                            "days": 0,
                            "enabled": false
                          },
                          "timeGrain": null
                        }
                      ],
                      "logs": [
                        {
                          "category": "DataPlaneRequests",
                          "enabled": true
                        },
                        {
                          "category": "QueryRuntimeStatistics",
                          "enabled": true
                        },
                        {
                          "category": "PartitionKeyStatistics",
                          "enabled": true
                        },
                        {
                          "category": "PartitionKeyRUConsumption",
                          "enabled": true
                        },
                        {
                          "category": "ControlPlaneRequests",
                          "enabled": true
                        },
                        {
                          "category": "GremlinRequests",
                          "enabled": true
                        }
                      ]
                    }
                  }
                ],
                "outputs": {}
              },
              "parameters": {
                "location": {
                  "value": "[[field('location')]"
                },
                "resourceName": {
                  "value": "[[field('name')]"
                },
                "logAnalytics": {
                  "value": "[[parameters('logAnalytics')]"
                },
                "archiveStorage": {
                  "value": "[[parameters('archiveStorage')]"
                },
                "metricsEnabled": {
                  "value": "[[parameters('metricsEnabled')]"
                },
                "logsEnabled": {
                  "value": "[[parameters('logsEnabled')]"
                },
                "storageExists": {
                  "value": "[[parameters('storageExists')]"
                },
                "profileName": {
                  "value": "[[parameters('profileName')]"
                }
              }
            }
          }
        }
      }
    }
    
    


    3.2 정책 세트 정의

    An Azure Policy Initiative은 일련의 정책입니다.



    정책 세트 정의로 추출:

    {
      "type": "Microsoft.Authorization/policySetDefinitions",
      "name": "[variables('diagnosticSettingsInitiativeName')]",
      "apiVersion": "2019-09-01",
      "dependsOn": [
      ],
      "properties": {
        "displayName": "MarkusMeyer - Apply diagnostic settings for applicable resources - Log Analytics",
        "description": "This initiative configures application Azure resources to forward diagnostic logs and metrics to an Azure Log Analytics workspace.",
        "metadata": {
          "category": "Monitoring"
        },
        "parameters": {
          "logAnalytics": {
            "type": "string",
            "metadata": {
              "displayName": "Log Analytics workspace",
              "description": "Select the Log Analytics workspace from dropdown list",
              "strongType": "omsWorkspace"
            }
          }
        },
        "policyDefinitions": [
          {
            "policyDefinitionId": "[resourceId('Microsoft.Authorization/policyDefinitions/', variables('kvLogPolicyName'))]",
            "parameters": {
              "logAnalytics": {
                "value": "[[parameters('logAnalytics')]"
              }
            }
          },
          {
            "policyDefinitionId": "[resourceId('Microsoft.Authorization/policyDefinitions/', variables('sbLogPolicyName'))]",
            "parameters": {
              "logAnalytics": {
                "value": "[[parameters('logAnalytics')]"
              }
            }
          },
          {
            "policyDefinitionId": "[resourceId('Microsoft.Authorization/policyDefinitions/', variables('cosmosLogPolicyName'))]",
            "parameters": {
              "logAnalytics": {
                "value": "[[parameters('logAnalytics')]"
              }
            }
          },
          {
            "policyDefinitionId": "[resourceId('Microsoft.Authorization/policyDefinitions/', variables('funcLogPolicyName'))]",
            "parameters": {
              "logAnalytics": {
                "value": "[[parameters('logAnalytics')]"
              }
            }
          },
          {
            "policyDefinitionId": "[resourceId('Microsoft.Authorization/policyDefinitions/', variables('evgTopicLogPolicyName'))]",
            "parameters": {
              "logAnalytics": {
                "value": "[[parameters('logAnalytics')]"
              }
            }
          }
        ]
      }
    }
    
    


    전체 템플릿은 내GitHub repository에서 찾을 수 있습니다.

    정책을 배포하려면

    4 권한

    Following permissions이 필요합니다.





    행위
    설명

    */읽다
    비밀을 제외한 모든 유형의 리소스를 읽습니다.

    Microsoft.Authorization/policyassignments/*
    정책 할당 생성 및 관리

    Microsoft.Authorization/policydefinitions/*
    정책 정의 생성 및 관리

    Microsoft.Authorization/policyexemptions/*

    Microsoft.Authorization/policysetdefinitions/*
    정책 세트 생성 및 관리

    Microsoft.PolicyInsights/*

    마이크로소프트.지원/*
    지원 티켓 생성 및 업데이트


    5 전개

    Ths policies will be deployed on subscription level

    정책은 다음에 배포할 수도 있습니다.
  • Management group
  • Tenant

  • 5.1 애저 CLI




    az deployment sub create  --location westeurope --template-file .\Policy.json --parameters "@Policy.parameters.json"
    


    5.2 파워쉘




    New-AzDeployment -Name "diagPolicies" -location "West Europe" -TemplateFile .\Policy.json  -verbose -TemplateParameterFile .\Policy.parameters.json
    




    6 Azure 포털의 정책

    The deployed policies will be display in Azure Portal .

    좋은 웹페이지 즐겨찾기