Azure 태그·Policy 거버넌스: Deny부터 걸면 실패하는 이유와 3단계 도입 순서
“태그 없으면 생성 금지”를 먼저 걸면 배포가 전부 실패하고 며칠 못 가 정책이 꺼집니다. Audit로 현황 파악 → Modify로 자동 상속 → 준수율 95% 후 Deny 전환하는 순서와, 관리 ID 없이 Modify 정책이 조용히 실패하는 함정, 재구성 작업으로 기존 리소스에 소급 적용하는 법을 정리했습니다.
“태그 없으면 생성 금지”를 먼저 걸면 배포가 전부 실패하고 며칠 못 가 정책이 꺼집니다. Audit로 현황 파악 → Modify로 자동 상속 → 준수율 95% 후 Deny 전환하는 순서와, 관리 ID 없이 Modify 정책이 조용히 실패하는 함정, 재구성 작업으로 기존 리소스에 소급 적용하는 법을 정리했습니다.
“Premium 플랜을 쓰세요”로 끝나는 조언 대신, 콜드 스타트를 4구간으로 분해해 각각 어떻게 줄이는지 정리했습니다. Application Insights로 p50·p99 격차를 재는 KQL, static·Lazy 클라이언트 재사용, Key Vault 참조 전환, Run From Package까지 비용 없이 할 수 있는 것부터 다룹니다.
조건부 액세스의 사고는 정책 내용이 아니라 활성화 순서에서 납니다. 비상 액세스 계정 준비부터 보고서 전용 모드 1주일 검증, 레거시 인증 사용처를 KQL로 확인하는 법, 그리고 관리자 MFA·레거시 차단·위험 기반 MFA 세 정책의 상세 설정과 복구 절차까지 정리했습니다.
리소스를 하나씩 뒤지지 마세요. 일별 그래프로 급증 모양(계단/뾰족/우상향)을 먼저 판별하고 Service name → Resource group → Resource → Meter 순으로 축을 좁히면 대부분 30분 안에 잡힙니다. 미연결 디스크·유휴 공용 IP·할당 해제 안 된 VM 등 사각지대 확인 명령과 재발 방지용 예측 예산 알림까지 정리했습니다.
둘 다 할 수 있는 게 거의 같아서 기능 비교로는 결론이 안 납니다. 코드 위치와 통제 요구로 가르는 기준표, 그리고 어느 쪽을 택하든 클라이언트 시크릿을 OIDC로 대체하는 전체 설정을 다룹니다. subject로 브랜치·환경까지 제한하는 법과 rollout status로 거짓 성공을 막는 법까지 포함했습니다.
알림이 하루 수십 건 오면 진짜 장애도 묻힙니다. CPU 임계치·에러 로그 발생처럼 무시하게 되는 알림을 실패율·급증 감지 KQL로 바꾸는 방법, 최소 표본 조건으로 야간 오탐을 막는 법, 그리고 꼭 필요한 알림 4개와 심각도 설계를 정리했습니다.
B·D·E·F 시리즈를 스펙으로 나열하는 대신, 필요 메모리를 필요 vCPU로 나눈 비율로 시리즈를 역산하는 방법을 정리했습니다. 64GB가 필요할 때 D16s와 E8as의 연간 385만원 차이, B 시리즈 크레딧 소진 함정, 그리고 이미 돌고 있는 VM을 p95 사용률로 재조정하는 기준표까지 다룹니다.
공용 IP를 여는 순간 자동 스캐너의 대상이 됩니다. 실제로 얼마나 두드려 맞고 있는지 KQL과 journalctl로 확인하는 법, 구독 전체에서 0.0.0.0/0으로 열린 NSG 규칙을 찾는 스크립트, NSG 제한·JIT·Bastion·VPN 4가지 비교, 그리고 공용 IP를 실제로 제거하는 마무리 절차까지 정리했습니다.
첫 청구서가 예상의 몇 배가 되는 원인은 거창한 실수가 아니라 몇 가지 기본 설정입니다. 실제가 아닌 예측 기준 예산 알림, “중지됨”과 “할당 취소”의 과금 차이, 배포만 해도 시간당 요금이 나가는 서비스 7가지, 프로비저닝 용량으로 과금되는 디스크 구간 함정까지 조회 명령과 함께 정리했습니다.