У нас есть существующее хранилище ключей, скажем, kv1, и существующая группа безопасности рекламы, скажем, adg1.
У adg1 уже есть настроенная политика доступа, которая обеспечивает доступ для получения и получения списка для членов группы.
Используя конвейер azure devops и шаблон arm, мы развертываем несколько ресурсов, включая масштаб vmset say vmss1
В конце мы вызываем задание автоматизации Azure, у которого есть доступ администратора ad, чтобы добавить vmss1 к adg1
vmss1 не может получить доступ к секретам в kv1.
Если вместо этого мы добавим субъекта службы vmss1 непосредственно к adg1, он получит доступ, если мы удалим прямое добавление, он потеряет доступ.
Наша структура AD не очень сложна имы ждали 2-3 часа распространения и все еще ничего.
Вот PowerShell, который обрабатывает добавление:
$vmssid = (Get-AzureRMADServicePrincipal -DisplayName "$_scaleSetName").Id
if(!$vmssid){
Write-Error 'Scale set did not exiset or was not a scale set'
return 1
}
$groupId = (Get-AzureRMAdGroup -AzureRmContext $AzureContext -DisplayName "$webAppGroupName" ).Id
if(!$groupId){
Write-Error 'Group not found'
return 1
}
$shouldAddMember = !(Get-AzureRMAdGroupMember -AzureRmContext $AzureContext -GroupObjectId $groupId | ?{$_.Id-eq $vmssid})
if($shouldAddMember ){
Add-AzureRmAdGroupMember -AzureRmContext $AzureContext -MemberObjectId $vmssId -TargetGroupObjectId $groupId
}
else{
Write-Output 'Member existed in group'
exit 0
}
Первый запуск приводит к добавлению пользователя, последующие запуска print"Член существует"