Tagowanie zasobów w skali 100 000 obiektów
Jak wygląda egzekwowanie standardu tagowania w dużym tenancie Azure i dlaczego sama Azure Policy nie wystarcza.
- FinOps
- PowerShell
- Governance
Standard tagowania zwykle powstaje na wczesnym etapie adopcji chmury i przez pierwsze miesiące działa. Problem ujawnia się wtedy, gdy środowisko przekracza kilkadziesiąt tysięcy zasobów, a odpowiedzialność za nie rozkłada się na kilkanaście zespołów.
Dlaczego sama polityka nie wystarcza
Azure Policy dobrze radzi sobie z jednym scenariuszem: zablokowaniem utworzenia zasobu bez wymaganego tagu. Nie rozwiązuje natomiast trzech sytuacji, które w dużym tenancie występują zawsze:
- Zasoby istniejące przed wprowadzeniem polityki. Tryb deny nie działa wstecz, a masowa remediacja wymaga świadomej decyzji o wartościach domyślnych.
- Zasoby tworzone przez usługi. Węzły klastrów, dyski zarządzane czy adresy publiczne powstają automatycznie i często omijają logikę dziedziczenia tagów.
- Tagi poprawne składniowo, ale bezwartościowe.
owner: itprzechodzi walidację i nie niesie żadnej informacji przy rozliczeniu kosztów.
Podejście, które się sprawdza
W praktyce skuteczny okazuje się model dwuwarstwowy: polityka blokuje nowe naruszenia, a cykliczna automatyzacja PowerShell zajmuje się stanem faktycznym.
$resources = Search-AzGraph -Query @"
Resources
| where isnull(tags['CostCenter']) or tags['CostCenter'] == ''
| project id, name, type, resourceGroup, subscriptionId
"@ -First 1000
$resources | Group-Object subscriptionId |
Select-Object Name, Count | Sort-Object Count -Descending
Użycie Azure Resource Graph zamiast iterowania po subskrypcjach ma znaczenie praktyczne: zapytanie obejmujące cały tenant wykonuje się w sekundach, podczas gdy przejście przez Get-AzResource w każdej subskrypcji potrafi trwać godzinami i napotyka limity API.
Raportowanie zamiast egzekwowania na siłę
Automatyczne uzupełnianie brakujących tagów wartością domyślną daje pozorny porządek. Skuteczniejsze okazuje się cykliczne raportowanie do właścicieli subskrypcji: lista zasobów bez przypisania, ich koszt miesięczny i termin uzupełnienia danych. Koszt widoczny przy nazwisku właściciela działa lepiej niż jakakolwiek polityka techniczna.
Wniosek
Governance tagów w dużej skali to proces, a nie konfiguracja. Polityka zabezpiecza przyszłość, automatyzacja porządkuje przeszłość, a raportowanie utrzymuje stan — brak którejkolwiek z tych trzech warstw powoduje, że standard degraduje się w ciągu kilku kwartałów.