Azure Cosmos DB의 Azure 역할 기반 액세스 제어

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

참고 항목

이 문서에서는 Azure Cosmos DB의 관리 평면 작업을 위한 역할 기반 액세스 제어에 대해 설명합니다. 데이터 평면 작업을 사용하는 경우 데이터는 기본 키, 리소스 토큰 또는 Azure Cosmos DB RBAC를 사용하여 보호됩니다.

API for NoSQL의 데이터 평면 작업에 적용되는 역할 기반 액세스 제어에 대해 자세히 알아보려면 데이터에 대한 보안 액세스Azure Cosmos DB RBAC 문서를 참조하세요. Azure Cosmos DB API for MongoDB는 API for MongoDB의 데이터 평면 RBAC를 참조하세요.

Azure Cosmos DB는 Azure Cosmos DB의 일반적인 관리 시나리오에 대한 Azure RBAC(Azure 역할 기반 액세스 제어)를 기본적으로 제공합니다. Microsoft Entra ID에 프로필이 있는 개인은 이러한 Azure 역할을 사용자, 그룹, 서비스 주체 또는 관리 ID에 할당하여 Azure Cosmos DB 리소스에 대한 리소스 및 작업에 대한 액세스 권한을 부여하거나 거부할 수 있습니다. 역할 할당은 컨트롤 플레인 액세스 전용으로 범위가 지정됩니다. 여기에는 Azure Cosmos DB 계정, 데이터베이스, 컨테이너 및 제품(처리량)에 대한 액세스가 포함됩니다.

기본 제공 역할

Azure Cosmos DB에서 지원하는 기본 제공 역할은 다음과 같습니다.

기본 제공 역할 설명
DocumentDB 계정 기여자 Azure Cosmos DB 계정을 관리할 수 있습니다.
Cosmos DB 계정 읽기 권한자 역할 Azure Cosmos DB 계정 데이터를 읽을 수 있음.
CosmosBackupOperator Azure Portal에서 정기적 백업 사용 데이터베이스 또는 컨테이너에 대한 복원 요청을 제출할 수 있습니다. Azure Portal의 백업 간격 및 보존을 수정할 수 있습니다. 데이터에 액세스하거나 데이터 탐색기를 사용할 수 없습니다.
CosmosRestoreOperator 지속적인 백업 모드를 사용하여 Azure Cosmos DB 계정에 대해 복원 작업을 수행할 수 있습니다.
Cosmos DB 운영자 Azure Cosmos DB 계정, 데이터베이스 및 컨테이너를 프로비저닝할 수 있습니다. 데이터에 액세스하거나 데이터 탐색기를 사용할 수 없습니다.

IAM(ID 및 액세스 관리)

Azure Portal의 액세스 제어(IAM) 창은 Azure Cosmos DB 리소스에 대한 Azure 역할 기반 액세스 제어를 구성하는 데 사용됩니다. 이러한 역할은 Active Directory의 사용자, 그룹, 서비스 사용자 및 관리 ID에 적용됩니다. 개인 및 그룹에 대해 기본 제공 역할 또는 사용자 지정 역할을 사용할 수 있습니다. 다음 스크린샷은 Azure Portal에서 액세스 제어(IAM)를 사용하는 Active Directory 통합(Azure RBAC)을 보여 줍니다.

Access control (IAM) in the Azure portal - demonstrating database security.

사용자 지정 역할

사용자는 기본 제공 역할 외에도 Azure에서 사용자 지정 역할을 만들고 해당 Active Directory 테넌트 내의 모든 구독에서 서비스 주체에 이러한 역할을 적용할 수 있습니다. 사용자 지정 역할은 사용자가 리소스 공급자 작업의 사용자 지정 집합을 사용하여 Azure 역할 정의를 만드는 방법을 제공합니다. Azure Cosmos DB에 대한 사용자 지정 역할을 빌드하는 데 사용할 수 있는 작업에 대한 자세한 내용은 Azure Cosmos DB 리소스 공급자 작업을 참조하세요.

Azure Cosmos DB 내에 저장된 데이터에 액세스하거나 Azure Portal에서 데이터 탐색기를 사용해야 하는 사용자 지정 역할은 Microsoft.DocumentDB/databaseAccounts/listKeys/* 작업을 수행해야 합니다.

참고 항목

사용자 지정 역할 할당이 항상 Azure Portal에 표시되지는 않을 수 있습니다.

Warning

관리 RBAC가 변경된 후에는 계정 키가 자동으로 회전되거나 철회되지 않습니다. 이러한 키를 사용하면 데이터 평면 작업에 액세스할 수 있습니다. 사용자의 키에 대한 액세스 권한을 제거할 때 키도 회전하는 것이 좋습니다. RBAC 데이터 평면의 경우 Cosmos DB 백 엔드는 역할/클레임이 더 이상 일치하지 않으면 클레임을 거부합니다. 사용자가 데이터 평면 작업에 임시 액세스해야 하는 경우 Azure Cosmos DB RBAC 데이터 평면을 사용하는 것이 좋습니다.

Azure Cosmos DB SDK에서 변경 방지

계정 키를 사용하여 연결하는 클라이언트(즉, Azure Cosmos DB SDK를 통해 연결하는 애플리케이션)에서 리소스를 변경하는 것을 방지하기 위해 Azure Cosmos DB 리소스 공급자를 잠글 수 있습니다. 이 기능은 프로덕션 환경에 대해 더 높은 수준의 제어 및 거버넌스를 원하는 사용자에게 바람직할 수 있습니다. 또한 SDK를 변경하지 못하게 하면 컨트롤 플레인 작업에 대한 리소스 잠금 및 진단 로그와 같은 기능을 사용할 수 있습니다. Azure Cosmos DB SDK에서 연결하는 클라이언트는 Azure Cosmos DB 계정, 데이터베이스, 컨테이너 및 처리량에 대한 속성을 변경할 수 없습니다. Azure Cosmos DB 컨테이너 자체에 대한 데이터 읽기 및 쓰기와 관련된 작업은 영향을 받지 않습니다.

이 기능이 사용하도록 설정되면 올바른 Azure 역할과 관리되는 서비스 ID를 포함한 Microsoft Entra 자격 증명이 있는 사용자만 리소스를 변경할 수 있습니다.

Warning

이 기능을 사용하도록 설정하면 애플리케이션에 영향을 줄 수 있습니다. 사용하도록 설정하기 전에 영향을 이해해야 합니다.

활성화하기 전에 목록 확인

이 설정은 Azure Cosmos DB SDK, 계정 키를 통해 연결하는 모든 도구를 포함하여 계정 키를 사용하여 연결하는 모든 클라이언트에서 Azure Cosmos DB 리소스를 변경하는 것을 방지합니다. 이 기능을 사용하도록 설정한 후 애플리케이션의 문제 또는 오류를 방지하려면 이 기능을 사용하도록 설정하기 전에 애플리케이션이 다음 작업 중 하나를 수행하는지 확인합니다.

  • 데이터베이스 및 컨테이너와 같은 자식 리소스를 만들고 삭제. 여기에는 Cassandra, MongoDB, Gremlin 및 테이블 리소스와 같은 다른 API에 대한 리소스가 포함됩니다.

  • 데이터베이스 또는 컨테이너 수준 리소스에 대한 처리량 읽기 또는 업데이트.

  • 인덱스 정책, TTL 및 고유 키를 비롯한 컨테이너 속성 수정

  • 저장 프로시저, 트리거 또는 사용자 정의 함수 수정

애플리케이션(또는 Azure Portal을 통한 사용자)이 이러한 작업을 수행하는 경우 ARM 템플릿, PowerShell, Azure CLI, REST 또는 Azure Management Library를 통해 실행하도록 마이그레이션해야 합니다. Azure Management는 여러 언어로 제공됩니다.

ARM 템플릿을 통해 설정

ARM 템플릿을 사용하여 이 속성을 설정하려면 기존 템플릿을 업데이트하거나 현재 배포에 대한 새 템플릿을 내보낸 다음 databaseAccounts 리소스의 속성에 "disableKeyBasedMetadataWriteAccess": true를 포함합니다. 다음은 이 속성 설정을 사용하는 Azure Resource Manager 템플릿의 기본 예입니다.

{
    {
      "type": "Microsoft.DocumentDB/databaseAccounts",
      "name": "[variables('accountName')]",
      "apiVersion": "2020-04-01",
      "location": "[parameters('location')]",
      "kind": "GlobalDocumentDB",
      "properties": {
        "consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
        "locations": "[variables('locations')]",
        "databaseAccountOfferType": "Standard",
        "disableKeyBasedMetadataWriteAccess": true
        }
    }
}

Important

이 속성을 사용하여 재배포할 때 계정 및 자식 리소스에 대한 다른 속성을 포함해야 합니다. 이 템플릿을 그대로 배포하면 모든 계정 속성이 초기화됩니다.

Azure CLI를 통해 설정

Azure CLI를 사용하도록 설정하려면 아래 명령을 사용합니다.

az cosmosdb update  --name [CosmosDBAccountName] --resource-group [ResourceGroupName]  --disable-key-based-metadata-write-access true

PowerShell을 통해 설정

Azure PowerShell을 사용하도록 설정하려면 아래 명령을 사용합니다.

Update-AzCosmosDBAccount -ResourceGroupName [ResourceGroupName] -Name [CosmosDBAccountName] -DisableKeyBasedMetadataWriteAccess true

다음 단계