이전 Azure 관련 글
Azure 시작하기 - IT관리자 생성
Azure Resource Group 생성
Azure Policy 등록
Azure 에서는 Resource를 실수로 삭제하거나 수정하는 것을 방지하기 위해 Lock 기능을 제공합니다. Resource의 보안을 강화하고 예기치 않은 변경이나 삭제를 방지할 수 있도록 Lock(잠금)을 설정하는 방법에 대해서 알아보겠습니다.
Azure Lock에는 두 가지 유형이 있습니다
리소스를 읽기만 가능하게 만들고, 수정이나 삭제는 불가능합니다.
예를 들어, 가상 머신(VM)에 Read-Only 잠금을 설정하면, 해당 VM의 구성을 변경하거나 다시 시작할 수 없습니다. 하지만 VM의 상태(예: 로그, 모니터링 데이터)를 조회하는 것은 가능합니다.
리소스를 수정할 수는 있지만 삭제는 불가능합니다.
예를 들어, CanNotDelete 잠금을 적용한 경우, 리소스의 구성은 변경할 수 있지만 해당 리소스 자체를 삭제할 수 없습니다.
Azure Lock은 리소스 수준, 리소스 그룹 수준, 또는 구독 수준에 설정할 수 있습니다.
개별 리소스(예: 특정 가상 머신)에 대해 잠금을 설정할 수 있습니다.
리소스 그룹 전체에 대해 잠금을 적용하면, 해당 리소스 그룹 안에 있는 모든 리소스에도 동일한 잠금이 적용됩니다.
구독에 걸쳐 잠금을 설정하면, 해당 구독 내 모든 리소스와 리소스 그룹에 잠금이 적용됩니다.
잠금은 상위 수준(예: 구독)에서 설정되면 하위 수준(예: 리소스 그룹 및 리소스)에 상속되며, 하위 수준에서 별도로 잠금을 해제할 수 없습니다.
중요한 데이터베이스나 네트워크 인터페이스 같은 핵심 리소스를 실수로 삭제하는 것을 방지하기 위해 Azure Lock을 사용할 수 있습니다. 이러한 리소스에 CanNotDelete 잠금을 적용하면, 구성 변경은 가능하더라도 실수로 삭제되는 것을 방지할 수 있습니다.
테스트 환경에서는 잘못된 설정 변경으로 인해 애플리케이션이 중단될 수 있습니다. 이를 방지하기 위해 Read-Only 잠금을 설정하여 리소스가 수정되지 않도록 할 수 있습니다.
재해 복구용으로 구성한 리소스는 반드시 항상 유지되어야 합니다. 이럴 때 CanNotDelete 잠금을 설정하여, 실수로 중요한 재해 복구 리소스가 삭제되지 않도록 보장할 수 있습니다.
리소스를 실수로 삭제하여 복구하는데 드는 추가 비용을 방지할 수 있다.
잠금을 설정하면, 권한을 가진 사용자라 하더라도 특정 작업이 제한됩니다. 예를 들어, Read-Only 잠금이 설정된 리소스에서는 구성을 변경할 수 없습니다.
상위 수준에서 설정된 잠금은 하위 리소스에 적용됩니다. 즉, 구독에 잠금을 설정하면, 해당 구독 내 모든 리소스 그룹과 리소스에도 동일한 잠금이 적용됩니다.
잠금을 설정한 상태에서 리소스를 삭제하거나 수정하려면, 먼저 잠금을 해제해야 합니다.
RBAC(Role-Based Access Control, 역할 기반 액세스 제어)는 리소스에 대한 접근 권한을 정의하는 것이며, 누가 무엇을 할 지를 제어하는 것 입니다. Lock은 RBAC 설정을 우회하여 변경을 방지하는 기능입니다. 예를 들어 관리자 권한을 가지고 있는 사용자라도 리소스에 Lock이 설정되어 있다면 변경을 할 수 없습니다.
이전에 작성된 sRG Resource Group에 Read-only 설정을 해서 삭제가 제한되는지 확인해 보겠습니다.
관리자 계정으로 로그인 하여 Resource Groups > sRG > Locks > Add 를 차례대로 클릭합니다. 그리고 아래와 같이 User Read-only lock을 설정하여 sRG Resource Group 의 삭제를 제한합니다.

Overview > Delete resource group 을 클릭하여 삭제를 진행합니다.

관리자 권한으로 삭제를 하였지만 Lock 이 설정되어 삭제가 되지 않는 것을 확인하실 수 있습니다. 삭제를 하기 위해선 Lock 을 우선 삭제하고 진행해야만 합니다.
