예기치 않은 변경을 방지하기 위해 리소스 잠그기Lock resources to prevent unexpected changes

관리자는 구독, 리소스 그룹 또는 리소스에 잠금을 설정하여 조직의 다른 사용자가 실수로 중요한 리소스를 삭제 또는 수정하지 못하게 할 수 있습니다.As an administrator, you may need to lock a subscription, resource group, or resource to prevent other users in your organization from accidentally deleting or modifying critical resources. 잠금 수준을 CanNotDelete 또는 ReadOnly로 설정할 수 있습니다.You can set the lock level to CanNotDelete or ReadOnly.

  • CanNotDelete는 권한이 부여된 사용자가 리소스를 읽고 수정할 수 있지만 삭제할 수 없음을 의미합니다.CanNotDelete means authorized users can still read and modify a resource, but they can't delete the resource.
  • ReadOnly는 권한이 부여된 사용자가 리소스를 읽을 수 있지만 해당 리소스를 삭제하거나 업데이트할 수 없음을 의미합니다.ReadOnly means authorized users can read a resource, but they can't delete or update the resource. 이 잠금을 적용하는 것은 권한 있는 모든 사용자에게 판독기 역할에서 부여한 권한을 제한하는 것과 유사합니다.Applying this lock is similar to restricting all authorized users to the permissions granted by the Reader role.

잠금을 적용하는 방법How locks are applied

부모 범위에서 잠금을 적용하면 해당 범위 내 모든 리소스가 동일한 잠금을 상속합니다.When you apply a lock at a parent scope, all resources within that scope inherit the same lock. 나중에 추가하는 리소스도 부모의 잠금을 상속합니다.Even resources you add later inherit the lock from the parent. 상속의 가장 제한적인 잠금이 우선 적용됩니다.The most restrictive lock in the inheritance takes precedence.

역할 기반 액세스 제어와 달리 관리 잠금을 사용하여 모든 사용자와 역할에 걸쳐 제한을 적용합니다.Unlike role-based access control, you use management locks to apply a restriction across all users and roles. 사용자 및 역할에 대한 권한 설정에 대해 알아보려면 Azure 역할 기반 액세스 제어를 참조하세요.To learn about setting permissions for users and roles, see Azure Role-based Access Control.

리소스 관리자 잠금은 https://management.azure.com에 전송된 작업으로 구성되는 관리 수준에서 발생된 작업에만 적용됩니다.Resource Manager locks apply only to operations that happen in the management plane, which consists of operations sent to https://management.azure.com. 잠금은 리소스 자체 기능을 수행하는 방법을 제한하지 않습니다.The locks do not restrict how resources perform their own functions. 리소스 변경은 제한되지만 리소스 작업은 제한되지 않습니다.Resource changes are restricted, but resource operations are not restricted. 예를 들어 SQL Database에 대한 읽기 전용 잠금을 사용하면 데이터베이스를 삭제하거나 수정하지 못하지만, 데이터베이스에서 데이터를 만들기, 업데이트 또는 삭제하지 못합니다.For example, a ReadOnly lock on a SQL Database prevents you from deleting or modifying the database, but it does not prevent you from creating, updating, or deleting data in the database. 이러한 작업이 https://management.azure.com로 전송되지 않기 때문에 데이터 전송이 허용됩니다.Data transactions are permitted because those operations are not sent to https://management.azure.com.

ReadOnly 를 적용하면 읽기 작업처럼 보이는 일부 작업에 실제로 추가 작업이 필요하기 때문에 예기치 않은 결과가 발생할 수 있습니다.Applying ReadOnly can lead to unexpected results because some operations that seem like read operations actually require additional actions. 예를 들어 저장소 계정에 ReadOnly 잠금을 설정하면 모든 사용자가 키를 나열하지 않도록 방지합니다.For example, placing a ReadOnly lock on a storage account prevents all users from listing the keys. 반환되는 키를 쓰기 작업에 사용할 수 있기 때문에 목록 키 작업은 POST 요청을 통해 처리됩니다.The list keys operation is handled through a POST request because the returned keys are available for write operations. 또 다른 예로 앱 서비스 리소스에 ReadOnly 잠금을 설정하면 해당 상호 작용이 쓰기 액세스를 필요로 하기 때문에 Visual Studio 서버 탐색기가 리소스에 대한 파일을 표시하지 않도록 방지합니다.For another example, placing a ReadOnly lock on an App Service resource prevents Visual Studio Server Explorer from displaying files for the resource because that interaction requires write access.

조직에서 잠금을 만들거나 삭제할 수 있는 사람Who can create or delete locks in your organization

관리 잠금을 만들거나 삭제하려면 Microsoft.Authorization/* 또는 Microsoft.Authorization/locks/* 작업에 대한 액세스 권한이 있어야 합니다.To create or delete management locks, you must have access to Microsoft.Authorization/* or Microsoft.Authorization/locks/* actions. 기본 제공 역할의 경우 소유자사용자 액세스 관리자에게만 이러한 작업의 권한이 부여됩니다.Of the built-in roles, only Owner and User Access Administrator are granted those actions.

포털Portal

  1. 잠그려는 리소스, 리소스 그룹 또는 구독에 대한 설정 블레이드에서 잠금을 선택합니다.In the Settings blade for the resource, resource group, or subscription that you wish to lock, select Locks.

    잠금 선택

  2. 잠금을 추가하려면 추가를 선택합니다.To add a lock, select Add. 부모 수준에서 잠금을 만들려면 부모를 선택합니다.If you want to create a lock at a parent level, select the parent. 현재 선택된 리소스는 부모에서 잠금을 상속합니다.The currently selected resource inherits the lock from the parent. 예를 들어 리소스 그룹을 잠궈 모든 리소스에 잠금을 적용할 수 있습니다.For example, you could lock the resource group to apply a lock to all its resources.

    잠금 추가

  3. 잠금에 이름과 잠금 수준을 지정합니다.Give the lock a name and lock level. 필요한 경우 잠금을 설명하는 참고 사항을 추가할 수 있습니다.Optionally, you can add notes that describe the lock.

    잠금 설정

  4. 잠금을 삭제하려면 사용 가능한 옵션에서 줄임표와 삭제 를 선택합니다.To delete the lock, select the ellipsis and Delete from the available options.

    잠금 삭제

템플릿Template

다음 예제에서는 저장소 계정에 대한 잠금을 만드는 템플릿을 보여 줍니다.The following example shows a template that creates a lock on a storage account. 잠금을 적용할 저장소 계정은 매개 변수로 제공됩니다.The storage account on which to apply the lock is provided as a parameter. 잠금 이름은 리소스 이름을 /Microsoft.Authorization/과 연결하여 만들어집니다. 이 예제의 경우 잠금 이름은 myLock입니다.The name of the lock is created by concatenating the resource name with /Microsoft.Authorization/ and the name of the lock, in this case myLock.

제공된 형식은 리소스 형식에 따라 다릅니다.The type provided is specific to the resource type. 저장소의 경우 형식을 "Microsoft.Storage/storageaccounts/providers/locks"로 설정합니다.For storage, set the type to "Microsoft.Storage/storageaccounts/providers/locks".

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "lockedResource": {
      "type": "string"
    }
  },
  "resources": [
    {
      "name": "[concat(parameters('lockedResource'), '/Microsoft.Authorization/myLock')]",
      "type": "Microsoft.Storage/storageAccounts/providers/locks",
      "apiVersion": "2015-01-01",
      "properties": {
        "level": "CannotDelete"
      }
    }
  ]
}

PowerShellPowerShell

New-AzureRmResourceLock 명령을 사용하여 Azure PowerShell을 통해 배포된 리소스를 잠급니다.You lock deployed resources with Azure PowerShell by using the New-AzureRmResourceLock command.

리소스를 잠그려면 리소스 이름, 리소스 종류 및 해당 리소스 그룹 이름을 제공합니다.To lock a resource, provide the name of the resource, its resource type, and its resource group name.

New-AzureRmResourceLock -LockLevel CanNotDelete -LockName LockSite `
  -ResourceName examplesite -ResourceType Microsoft.Web/sites `
  -ResourceGroupName exampleresourcegroup

리소스 그룹을 잠그려면 해당 리소스 그룹의 이름을 제공합니다.To lock a resource group, provide the name of the resource group.

New-AzureRmResourceLock -LockName LockGroup -LockLevel CanNotDelete `
  -ResourceGroupName exampleresourcegroup

잠금에 대한 정보를 가져오려면 Get-AzureRmResourceLock를 사용합니다.To get information about a lock, use Get-AzureRmResourceLock. 구독의 모든 잠금을 가져오려면 다음을 사용합니다.To get all the locks in your subscription, use:

Get-AzureRmResourceLock

리소스에 대한 모든 잠금을 가져오려면 다음을 사용합니다.To get all locks for a resource, use:

Get-AzureRmResourceLock -ResourceName examplesite -ResourceType Microsoft.Web/sites `
  -ResourceGroupName exampleresourcegroup

리소스 그룹에 대한 모든 잠금을 가져오려면 다음을 사용합니다.To get all locks for a resource group, use:

Get-AzureRmResourceLock -ResourceGroupName exampleresourcegroup

Azure PowerShell은 Set-AzureRmResourceLock을 사용하여 잠금을 업데이트하고, Remove-AzureRmResourceLock을 사용하여 잠금을 삭제하는 등 잠금 작업을 위한 다른 명령을 제공합니다.Azure PowerShell provides other commands for working locks, such as Set-AzureRmResourceLock to update a lock, and Remove-AzureRmResourceLock to delete a lock.

Azure CLIAzure CLI

az lock create 명령을 사용하여 Azure CLI를 통해 배포된 리소스를 잠급니다.You lock deployed resources with Azure CLI by using the az lock create command.

리소스를 잠그려면 리소스 이름, 리소스 종류 및 해당 리소스 그룹 이름을 제공합니다.To lock a resource, provide the name of the resource, its resource type, and its resource group name.

az lock create --name LockSite --lock-type CanNotDelete \
  --resource-group exampleresourcegroup --resource-name examplesite \
  --resource-type Microsoft.Web/sites

리소스 그룹을 잠그려면 해당 리소스 그룹의 이름을 제공합니다.To lock a resource group, provide the name of the resource group.

az lock create --name LockGroup --lock-type CanNotDelete \
  --resource-group exampleresourcegroup

잠금에 대한 정보를 가져오려면 az lock list를 사용합니다.To get information about a lock, use az lock list. 구독의 모든 잠금을 가져오려면 다음을 사용합니다.To get all the locks in your subscription, use:

az lock list

리소스에 대한 모든 잠금을 가져오려면 다음을 사용합니다.To get all locks for a resource, use:

az lock list --resource-group exampleresourcegroup --resource-name examplesite \
  --namespace Microsoft.Web --resource-type sites --parent ""

리소스 그룹에 대한 모든 잠금을 가져오려면 다음을 사용합니다.To get all locks for a resource group, use:

az lock list --resource-group exampleresourcegroup

Azure CLI는 az lock update를 사용하여 잠금을 업데이트하고, az lock delete를 사용하여 잠금을 삭제하는 등 잠금 작업을 위한 다른 명령을 제공합니다.Azure CLI provides other commands for working locks, such as az lock update to update a lock, and az lock delete to delete a lock.

REST APIREST API

관리 잠금을 위한 REST API를 사용하여 배포된 리소스를 잠글 수 있습니다.You can lock deployed resources with the REST API for management locks. REST API를 사용하여 잠금을 만들고, 삭제하고, 기존 잠금에 대한 정보를 검색할 수 있습니다.The REST API enables you to create and delete locks, and retrieve information about existing locks.

잠금을 만들려면 다음을 실행합니다.To create a lock, run:

PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/locks/{lock-name}?api-version={api-version}

범위는 구독, 리소스 그룹 또는 리소스일 수 있습니다.The scope could be a subscription, resource group, or resource. lock-name은 원하는 잠금 이름입니다.The lock-name is whatever you want to call the lock. api-version에는 2015-01-01을 사용합니다.For api-version, use 2015-01-01.

요청에서 잠금에 대한 속성을 지정하는 JSON 개체를 포함합니다.In the request, include a JSON object that specifies the properties for the lock.

{
  "properties": {
    "level": "CanNotDelete",
    "notes": "Optional text notes."
  }
} 

다음 단계Next steps