리소스 태그 및 리소스 잠금
비용 배분과 검색을 위해 리소스에 메타데이터 태그를 적용하고, 읽기 전용 또는 삭제 리소스 잠금으로 실수로 삭제하거나 수정하지 못하게 합니다.
리소스 태그 및 리소스 잠금은(는) CoddyKit의 무료 Azure Fundamentals 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Azure Fundamentals 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Azure Fundamentals 강의에는 총 4개의 강의가 포함되어 있습니다.
Azure 리소스 태그란 무엇인가요?
리소스 태그는 Azure 리소스, resource group 및 구독에 연결하는 이름-값 형식의 메타데이터입니다. 폴더 구조와 달리 태그를 사용하면 하나의 리소스를 여러 기준으로 동시에 분류할 수 있습니다. 예를 들어 VM 하나에 Environment=Production, Team=Backend, CostCentre=CC-042, Project=Phoenix 태그를 모두 지정할 수 있으므로 이러한 기준 중 어느 것을 사용하더라도 독립적으로 필터링할 수 있습니다.
일반적인 태그 전략
조직은 일반적으로 여러 차원을 포괄하는 표준 태그 분류 체계를 정의합니다. 재무 태그(CostCentre, BudgetOwner)는 비용 할당을 가능하게 합니다. 운영 태그(Environment, Criticality, Owner)는 필터링과 경고에 활용됩니다. 수명 주기 태그(AutoShutdown, ExpiryDate)는 자동화를 가능하게 합니다. Security 태그(DataClassification, Compliance)는 Security 도구를 지원합니다. 리소스를 배포하기 전에 분류 체계를 정의하면 일관되지 않고 조회하기 어려운 태그 환경이 만들어지는 것을 방지할 수 있습니다.
CLI 및 Policy를 통한 태그 적용
태그는 Azure 포털, CLI, ARM 템플릿, Bicep, Terraform을 통해 적용할 수 있습니다. az tag 명령은 리소스의 태그를 관리하고, az group update는 리소스 그룹에 태그를 지정합니다. 수정 또는 추가 효과가 적용된 Azure Policy를 사용하면 리소스가 생성될 때 태그를 자동으로 추가하거나 필수로 지정할 수 있습니다. 따라서 개발자가 태그를 수동으로 추가해야 한다는 사실을 기억하지 못하더라도 새 리소스마다 CostCentre 태그가 지정되도록 할 수 있습니다.
# Apply tags to a resource
az resource tag \
--resource-group myRG \
--name myVM \
--resource-type Microsoft.Compute/virtualMachines \
--tags Environment=Production Team=Backend CostCentre=CC-042
# Apply tags to a resource group (does NOT apply to resources inside)
az group update \
--name myRG \
--set tags.Environment=Production tags.CostCentre=CC-042태그 상속의 제한
리소스 그룹의 태그가 그 안에 포함된 리소스에 자동으로 전파된다고 생각하는 경우가 많습니다. 하지만 그렇지 않습니다. Azure 리소스 태그는 상위 scope에서 상속되지 않습니다. 리소스 그룹에 Environment=Production 태그를 지정해도 해당 그룹에 포함된 VM과 데이터베이스에는 이 태그가 자동으로 지정되지 않습니다. 일관된 태그 지정을 적용하려면 리소스 그룹에서 태그 상속 기본 제공 정의가 적용된 Azure Policy를 사용하십시오. 그러면 리소스 그룹의 태그가 해당 그룹 내 모든 리소스에 자동으로 복사됩니다.
# Assign the 'Inherit a tag from the resource group' policy
az policy assignment create \
--name 'inherit-environment-tag' \
--policy 'cd3aa116-8754-49c9-a813-ad46512ece54' \
--params '{"tagName": {"value": "Environment"}}' \
--scope /subscriptions/<sub-id>Cost Management에서 태그 사용
태그는 Azure Cost Management와 함께 사용할 때 가장 강력한 기능을 발휘합니다. 비용 분석 보기에서 모든 태그 키를 기준으로 지출을 그룹화할 수 있습니다. 예를 들어 CostCentre별 월간 총 지출을 확인하여 어느 부서가 클라우드를 가장 많이 사용하는지 파악할 수 있습니다. 또한 Environment=Production으로 필터링하여 프로덕션 예산에서 개발 지출을 제외할 수도 있습니다. Azure Cost Management에서 비용 데이터에 태그를 표시하려면 해당 태그가 청구 기간이 시작되기 전에 적용되어 있어야 합니다.
# Export cost data grouped by tag
# (Azure CLI cost export with tag grouping)
az consumption usage list \
--start-date 2026-06-01 \
--end-date 2026-06-30 \
--query '[].{Cost:pretaxCost, Service:instanceName, CostCentre:tags.CostCentre}' \
--output table리소스 잠금이란?
리소스 잠금은 사용자가 보유한 RBAC 권한과 관계없이 Azure 리소스가 실수로 삭제되거나 수정되지 않도록 보호합니다. Owner 또는 Contributor 권한이 있는 사용자라도 잠긴 리소스를 삭제하거나 수정하지 못하도록 차단될 수 있습니다. 잠금은 리소스, 리소스 그룹 또는 구독 수준에서 적용되며 하위로 전파됩니다. 따라서 리소스 그룹에 잠금을 설정하면 그 안의 모든 리소스가 보호됩니다.
잠금 유형: CanNotDelete 및 ReadOnly
Azure는 두 가지 잠금 유형을 지원합니다. CanNotDelete(삭제 잠금)를 사용하면 사용자가 리소스를 읽고 수정할 수 있지만 삭제할 수는 없습니다. 가장 일반적인 잠금 유형으로, 실수로 프로덕션 데이터베이스, storage accounts, VNet을 해체하지 못하도록 적용합니다. ReadOnly는 모든 쓰기 및 삭제 작업을 차단하므로, 모든 사용자에게 Reader 역할만 할당된 것처럼 리소스가 동작합니다. ReadOnly는 더 제한적이므로 리소스 속성을 업데이트하는 자동화 프로세스를 중단시킬 수 있습니다.
# Apply a CanNotDelete lock to a resource group
az lock create \
--name 'prevent-delete' \
--resource-group myRG \
--lock-type CanNotDelete \
--notes 'Protect production resources from accidental deletion'
# Apply a ReadOnly lock to a specific storage account
az lock create \
--name 'storage-readonly' \
--resource-group myRG \
--resource-name mystorageaccount \
--resource-type Microsoft.Storage/storageAccounts \
--lock-type ReadOnly리소스 잠금 제거
잠긴 리소스를 삭제하거나 수정하려면 먼저 잠금을 제거해야 합니다. 이 작업에는 Microsoft.Authorization/locks/delete 권한이 필요하며, 기본적으로 Owner 및 User Access Administrator 역할에 제공됩니다. 잠금 제거, 리소스 수정, 필요한 경우 잠금 재적용을 변경 관리 워크플로에 스크립트로 포함할 수 있습니다. 이렇게 하면 감사 추적을 유지하면서도 통제된 프로세스를 통해 보호된 리소스를 수정할 수 있습니다.
# List all locks in a resource group
az lock list \
--resource-group myRG \
--output table
# Remove a lock
az lock delete \
--name 'prevent-delete' \
--resource-group myRG잠금 상속 및 재정의
상위 scope(구독 또는 리소스 그룹)에 적용된 잠금은 모든 하위 리소스에 상속됩니다. 하위 scope에서는 잠금을 재정의할 수 없습니다. 리소스 그룹에 CanNotDelete 잠금이 있으면 개별 리소스에 직접 잠금이 적용되지 않았더라도 해당 리소스를 삭제할 수 없습니다. 상위 잠금과 함께 리소스 수준에서 CanNotDelete 잠금을 추가해도 동작은 달라지지 않습니다. 상위 잠금이 이미 보호 기능을 제공하기 때문입니다.
ReadOnly 잠금의 부작용
ReadOnly 잠금은 자동화 프로세스에서 예상하지 못한 오류를 일으킬 수 있습니다. 일부 Azure 작업은 겉으로는 읽기 전용처럼 보이지만 실제로는 내부에서 리소스 속성에 대한 쓰기 액세스가 필요합니다. 예를 들어 storage account의 액세스 키를 나열하는 작업은 ReadOnly 잠금으로 차단됩니다. 키를 나열하는 작업이 계정의 감사 추적을 수정하기 때문입니다. VM 크기 조정, App Service 다시 시작, 실행 중인 VM에 디스크 연결도 차단됩니다. 중요한 리소스에 적용하기 전에 비프로덕션 환경에서 ReadOnly 잠금을 테스트하십시오.
태그와 잠금 함께 사용하기
태그와 잠금을 결합하면 강력한 거버넌스 패턴을 만들 수 있습니다. Protected=true와 같은 태그를 사용하여 CanNotDelete 잠금이 필요한 리소스를 표시한 다음, 이 태그가 지정된 리소스를 조회하고 잠금이 없으면 생성하는 Azure Automation Runbook을 실행할 수 있습니다. 이 자동 복구 거버넌스 패턴을 사용하면 관리자가 실수로 잠금을 제거하더라도 Runbook 일정에 따라 자동으로 다시 적용됩니다.
빠른 확인
이 단원에서 다룬 Microsoft Azure Fundamentals (AZ-900) 개념을 얼마나 이해했는지 확인해 보십시오.
단원 요약
이 단원에서는 다음을 배웠습니다. 리소스 태그는 이름-값 메타데이터 쌍으로, 모든 기준에 걸쳐 비용 할당, 필터링, 자동화를 가능하게 합니다. 태그는 상위 리소스 그룹에서 상속되지 않으므로 Azure Policy를 통해 적용해야 합니다. 또한 리소스 잠금(CanNotDelete 및 ReadOnly)은 RBAC 권한과 관계없이 리소스를 실수로 변경하지 못하도록 보호합니다. 다음 단원에서는 거버넌스 Artefact를 함께 패키징하는 Azure Blueprints를 살펴봅니다.
자주 묻는 질문
“리소스 태그 및 리소스 잠금” 강의는 무료인가요?
네 — “리소스 태그 및 리소스 잠금” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Azure Fundamentals 강의 전체를 잠금 해제할 수 있습니다. Azure Fundamentals 강의에는 총 4개의 강의가 포함되어 있습니다.
“리소스 태그 및 리소스 잠금”에서 뭘 배우나요?
비용 배분과 검색을 위해 리소스에 메타데이터 태그를 적용하고, 읽기 전용 또는 삭제 리소스 잠금으로 실수로 삭제하거나 수정하지 못하게 합니다. 브라우저에서 직접 실행하는 실습 코드로 Azure Fundamentals을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Azure Fundamentals을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Azure Fundamentals은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“리소스 태그 및 리소스 잠금” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Azure Fundamentals 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Azure Fundamentals 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 관리 그룹 및 구독
- Azure Policy
- 리소스 태그 및 리소스 잠금
- Azure Blueprints 및 규정 준수