Implantar o Azure Policy em assinaturas delegadas em escala
Como um provedor de serviços, é provável que você tenha integrado vários locatários ao Azure Lighthouse. O Azure Lighthouse permite que os provedores de serviços realizem operações em escala em vários locatários ao mesmo tempo, tornando as tarefas de gerenciamento mais eficientes.
Este tópico explica como usar o Azure Policy para implantar uma definição de política e uma atribuição de política para vários locatários usando comandos do PowerShell. Neste exemplo, a definição de política garante que as contas de armazenamento estejam protegidas permitindo apenas o tráfego HTTPS. Você pode usar o mesmo processo geral para qualquer política que queira implantar.
Dica
Embora estejamos nos referindo a provedores de serviços e clientes neste tópico, as empresas que gerenciam vários locatários podem usar os mesmos processos.
Usar o Azure Resource Graph para fazer consultas em locatários do cliente
Você pode usar o Azure Resource Graph para consultar todas as assinaturas nos locatários do cliente que você gerencia. Neste exemplo, identificaremos todas as contas de armazenamento nessas assinaturas que atualmente não exigem tráfego HTTPS.
$MspTenant = "insert your managing tenantId here"
$subs = Get-AzSubscription
$ManagedSubscriptions = Search-AzGraph -Query "ResourceContainers | where type == 'microsoft.resources/subscriptions' | where tenantId != '$($mspTenant)' | project name, subscriptionId, tenantId" -subscription $subs.subscriptionId
Search-AzGraph -Query "Resources | where type =~ 'Microsoft.Storage/storageAccounts' | project name, location, subscriptionId, tenantId, properties.supportsHttpsTrafficOnly" -subscription $ManagedSubscriptions.subscriptionId | convertto-json
Implantar uma política em vários locatários do cliente
O exemplo a seguir mostra como usar um Modelo do Azure Resource Manager para implantar uma definição de política e atribuição de política entre assinaturas delegadas em vários locatários do cliente. Esta definição de política de exemplo exige que as contas de armazenamento usem tráfego HTTPS. Ela impede a criação de novas contas de armazenamento que não estejam em conformidade. Todas as contas de armazenamento existentes sem a configuração são marcadas como não compatíveis.
Write-Output "In total, there are $($ManagedSubscriptions.Count) delegated customer subscriptions to be managed"
foreach ($ManagedSub in $ManagedSubscriptions)
{
Select-AzSubscription -SubscriptionId $ManagedSub.subscriptionId
New-AzSubscriptionDeployment -Name mgmt `
-Location eastus `
-TemplateUri "https://raw.githubusercontent.com/Azure/Azure-Lighthouse-samples/master/templates/policy-enforce-https-storage/enforceHttpsStorage.json" `
-AsJob
}
Observação
Embora você possa implantar políticas em vários locatários, atualmente não é possível exibir detalhes de conformidade para recursos fora de conformidade nesses locatários.
Validar a implantação da política
Depois de implantar o modelo do Azure Resource Manager, confirme se a definição de política foi aplicada com êxito durante a tentativa de criação de uma conta de armazenamento com EnableHttpsTrafficOnly definido como false em uma das assinaturas delegadas. Devido à atribuição de política, não será possível criar essa conta de armazenamento.
New-AzStorageAccount -ResourceGroupName (New-AzResourceGroup -name policy-test -Location eastus -Force).ResourceGroupName `
-Name (get-random) `
-Location eastus `
-EnableHttpsTrafficOnly $false `
-SkuName Standard_LRS `
-Verbose
Limpar os recursos
Quando terminar, você poderá remover a definição de política e a atribuição criadas pela implantação.
foreach ($ManagedSub in $ManagedSubscriptions)
{
select-azsubscription -subscriptionId $ManagedSub.subscriptionId
Remove-AzSubscriptionDeployment -Name mgmt -AsJob
$Assignment = Get-AzPolicyAssignment | where-object {$_.Name -like "enforce-https-storage-assignment"}
if ([string]::IsNullOrEmpty($Assignment))
{
Write-Output "Nothing to clean up - we're done"
}
else
{
Remove-AzPolicyAssignment -Name 'enforce-https-storage-assignment' -Scope "/subscriptions/$($ManagedSub.subscriptionId)" -Verbose
Write-Output "Deployment has been deleted - we're done"
}
}
Próximas etapas
- Saiba mais sobre o Azure Policy.
- Saiba mais sobre as experiências de gerenciamento entre locatários.
- Saiba como implantar uma política que pode ser corrigida em uma assinatura delegada.