具有“修改”效果的Azure Policy需要更新或创建事件 - 如何处理现有资源?

问题描述 投票:0回答:1

客户希望有一个策略/计划能够为资源组中的各个资源继承该资源组的标签。 由于有一个应该继承的标签列表,我创建了一个像这样的policySetDefinition(“initiative”):

{
"name": "psd-inherit-rg-tags",
"properties": {
    "description": "Adds tags attached to the resource group to individual resources (upon update/modify event)",
    "displayName": "Inherit RG tags",
    "metadata": {
        "category": "Tags"
    },
    "parameters": {},
    "policyDefinitionGroups": [],
    "policyDefinitions": [
        {
            "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/ea3f2387-9b95-492a-a190-fcdc54f7b070",
            "policyDefinitionReferenceId": "Inherit tag CreatedBy from the resource group if missing",
            "parameters": {
                "tagName": {
                    "value": "CreatedBy"
                }
            }
        },
        {
            "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/ea3f2387-9b95-492a-a190-fcdc54f7b070",
            "policyDefinitionReferenceId": "Inherit tag IT-Responsible from the resource group if missing",
            "parameters": {
                "tagName": {
                    "value": "IT-Responsible"
                }
            }
        },
        {more blocks for more tags here}

这效果很好,引用的内置策略的默认效果是“名称”/id 为“ea3f2387-9b95-492a-a190-fcdc54f7b070”修改将标签添加到资源组中任何新创建的资源或当我更新时例如通过更改访问配置来获取诸如存储帐户之类的资源。 但当然,我/客户不想等待所有现有资源从资源组获取其标签,直到出现对资源更新的需要。另外,对于某些资源(例如公共 IP),我不知道什么是有意义的更新要求。

有没有一种方法可以通过 az cli 或 powershell 以编程方式“伪造”/在存储帐户和网络组件等资源上生成无害的更新事件? 或者这是向现有资源添加标签的错误方法?

感谢您的任何意见!

azure tags policy
1个回答
0
投票

有没有一种方法可以通过 az cli 或 PowerShell 以编程方式“伪造”/在存储帐户和网络组件等资源上生成无害的更新事件?

是的,您可以使用

PowerShell
触发 Azure 中的资源更新,甚至无需对资源本身进行任何实际更改。这可以通过更新资源的
non-essential
属性(例如
tag
description
)来实现,它将充当资源更新,而无需更改配置。

    # Connect to Azure
    Connect-AzAccount
    
    # Specify the resource group name
    $resourceGroupName = "<RG_name>"
    
    # Get a list of resources in the resource group
    $resources = Get-AzResource -ResourceGroupName $resourceGroupName
    
    # Iterate over the resources and update them
    foreach ($resource in $resources) {
        # Fake update by setting a tag (you can adjust this as needed)
        $tags = @{
            "Environment" = "test"
        }
    
        # Update the resource with the new tag(s)
        Set-AzResource -ResourceId $resource.ResourceId -Tag $tags -Force
    }

输出:

enter image description here

运行PowerShell脚本后,标签已添加到资源中。

enter image description here

将标签分配给资源后,策略将识别资源修改并开始应用策略从资源组继承标签。

© www.soinside.com 2019 - 2024. All rights reserved.