如何制定策略来标记 CreatedBy:AccountID?
Posted
技术标签:
【中文标题】如何制定策略来标记 CreatedBy:AccountID?【英文标题】:how to make a policy to tag CreatedBy: AccountID? 【发布时间】:2021-07-28 07:10:15 【问题描述】:我正在尝试制定一项政策,用 AccountID 值标记我们在组织中创建的每个资源。
我有两个标签要强制:
-
创建日期
创建者
“CreatedBy”标签名称我不知道如何在标签值中插入创建此资源的“AccountID”。 当我创建一个 kubernetes 服务时,我看到他的资源有这个 TagName CreatedBy 指向 kubernetes .. 这意味着我猜这种解决方案已经存在。
我的政策如下所示:
"mode": "All",
"policyRule":
"if":
"allOf": [
"field": "tags['CreatedOnDate']",
"exists": "false"
,
"field": "tags['CreatedBy']",
"exists": "false"
]
,
"then":
"effect": "append",
"details": [
"field": "tags['CreatedOnDate']",
"value": "[utcNow()]"
,
"field": "tags['CreatedBy']",
"value": [????]
]
,
"parameters":
【问题讨论】:
【参考方案1】:这是automatically tag resources with creator's name 的一个工作示例。
【讨论】:
【参考方案2】:这是我的解决方案... 我正在寻找标签名称=“created_By”=“无”的所有资源(我像这样标记了我的所有资源) 如果可用,我会从 az-log 获取呼叫者 ID,在我运行一次后,我会制作一个 schdule runbook 以每天运行并标记最后一天创建的资源。(当然不要忘记将日期修改为 - ( Get-Date).AddDays(-1)
$resourceWithTag = Get-AzResource -Tag @ created_By = "None"
# Tag each resource with tag name 'created_By = None' with his CallerID'
foreach ($resource in $resourceWithTag)
$users = Get-AzLog -ResourceId $resource.ResourceId -StartTime (Get-Date).AddDays(-90) -EndTime (Get-Date)| Select-Object Caller | Where-Object $_.Caller | Sort-Object -Property Caller -Unique | Sort-Object -Property Caller -Descending
if ((!$users) -or ($users.Caller -eq $null))
Write-Output "no logs"
else
Update-AzTag -ResourceId $resource.ResourceId -Tag @ created_By = $users[0] -Operation Merge
【讨论】:
以上是关于如何制定策略来标记 CreatedBy:AccountID?的主要内容,如果未能解决你的问题,请参考以下文章