Share via


잠금을 사용하여 Azure Cosmos DB 리소스 보호

적용 대상: NoSQL MongoDB Cassandra Gremlin 테이블

관리자는 Azure Cosmos DB 계정, 데이터베이스 또는 컨테이너를 잠가야 할 수 있습니다. 잠금은 조직의 다른 사용자가 실수로 중요한 리소스를 삭제하거나 수정하는 것을 방지합니다. 잠금 수준을 CanNotDelete 또는 ReadOnly로 설정할 수 있습니다.

수준 설명
CanNotDelete 승인된 사용자는 여전히 리소스를 읽고 수정할 수 있지만 리소스를 삭제할 수는 없습니다.
ReadOnly 승인된 사용자는 리소스를 읽을 수 있지만 리소스를 삭제하거나 업데이트할 수는 없습니다. 이 잠금을 적용하는 것은 권한 있는 모든 사용자에게 판독기 역할에서 부여한 권한을 제한하는 것과 유사합니다.

필수 조건

잠금을 적용하는 방법

부모 범위에서 잠금을 적용하면 해당 범위 내 모든 리소스가 동일한 잠금을 상속합니다. 나중에 추가하는 리소스도 부모의 잠금을 상속합니다. 상속의 가장 제한적인 잠금이 우선 적용됩니다.

Azure 역할 기반 액세스 제어와 달리 관리 잠금을 사용하여 모든 사용자 및 역할에 제한을 적용합니다. Azure Cosmos DB의 역할 기반 액세스 제어에 대해 알아보려면 Azure Cosmos DB의 Azure 역할 기반 액세스 제어를 참조하세요.

Resource Manager 잠금은 https://management.azure.com에 전송된 작업으로 구성된 관리 평면에서 수행되는 작업에만 적용됩니다. 리소스가 해당 기능을 수행하는 방법은 잠금을 통해 제한되지 않습니다. 리소스 변경은 제한되지만 리소스 작업은 제한되지 않습니다. 예를 들어 Azure Cosmos DB 컨테이너에 대한 ReadOnly 잠금을 통해 컨테이너를 삭제하거나 수정할 수 없습니다. 컨테이너에서 데이터를 생성, 업데이트 또는 삭제하는 것을 방지하지 않습니다. 이러한 작업은 https://management.azure.com으로 전송되지 않으므로 데이터 트랜잭션이 허용됩니다.

잠금 관리

Azure Cosmos DB 계정이 먼저 disableKeyBasedMetadataWriteAccess 속성을 사용하도록 설정하여 잠기지 않는 한 계정 키를 사용하여 Azure Cosmos DB에 액세스하는 사용자가 변경한 사항에 대해 리소스 잠금이 작동하지 않습니다. 이 속성이 SDK, Azure Portal 또는 타사 도구를 사용하여 리소스를 변경하는 기존 애플리케이션을 중단하지 않는지 확인합니다. 이 속성을 사용하도록 설정하면 계정 키를 통해 연결하여 리소스를 수정하는 애플리케이션이 중단됩니다. 이러한 수정에는 처리량 변경, 인덱스 정책 업데이트 등이 포함될 수 있습니다. 애플리케이션이 계속 작동하는지 자세히 알아보고 검사 목록을 검토하려면 Azure Cosmos DB SDK의 변경 방지를 참조하세요.

$RESOURCE_GROUP_NAME = "<resource-group>"
$ACCOUNT_NAME = "<account-name>"
$LOCK_NAME = "$ACCOUNT_NAME-lock"

먼저 계정 키를 통해 연결된 모든 항목에 의한 변경을 방지하도록 계정을 업데이트합니다.

$parameters = @{
    Name = $ACCOUNT_NAME
    ResourceGroupName = $RESOURCE_GROUP_NAME
    DisableKeyBasedMetadataWriteAccess = true
}
Update-AzCosmosDBAccount @parameters

Azure Cosmos DB 계정 리소스 및 모든 자식 리소스에 대한 삭제 잠금을 만듭니다.

$parameters = @{
    ResourceGroupName = $RESOURCE_GROUP_NAME
    ResourceName = $ACCOUNT_NAME
    LockName = $LOCK_NAME
    ApiVersion = "2020-04-01"
    ResourceType = "Microsoft.DocumentDB/databaseAccounts"
    LockLevel = "CanNotDelete"
}
New-AzResourceLock @parameters

템플릿

Azure Cosmos DB 리소스에 잠금을 적용할 때 Microsoft.Authorization/locks ARM(Azure Resource Manager) 리소스를 사용합니다.

{
  "type": "Microsoft.Authorization/locks",
  "apiVersion": "2017-04-01",
  "name": "cosmoslock",
  "dependsOn": [
    "[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('accountName'))]"
  ],
  "properties": {
    "level": "CanNotDelete",
    "notes": "Do not delete Azure Cosmos DB account."
  },
  "scope": "[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('accountName'))]"
}

샘플

Azure Cosmos DB에 대한 리소스 잠금 관리:

다음 단계