Azure Cosmos DB의 데이터베이스 보안 개요

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

이 문서에서는 데이터베이스 보안 모범 사례 및 데이터베이스 위반을 차단, 검색 및 대응하기 위해 Azure Cosmos DB에서 제공하는 주요 기능에 대해 설명합니다.

Azure Cosmos DB 보안의 새로운 기능은 무엇인가요?

이제 휴지 상태의 암호화를 모든 Azure 지역에서 Azure Cosmos DB에 저장된 문서 및 백업에 대해 사용할 수 있습니다. 이러한 영역의 신규 및 기존 고객에 대해 미사용 데이터의 암호화가 자동으로 적용됩니다. 아무것도 구성할 필요가 없습니다. 이전과 동일한 대기 시간, 처리량, 가용성, 기능과 함께 미사용 데이터를 암호화해 안전하게 보호하는 이점을 얻을 수 있습니다. Azure Cosmos 계정에 저장된 데이터는 서비스 관리형 키를 사용하여 Microsoft에서 관리하는 키로 자동으로 원활하게 암호화됩니다. 선택적으로 고객 관리형 키 또는 CMK를 사용하여 관리하는 키로 두 번째 암호화 계층을 추가하도록 선택할 수 있습니다.

내 데이터베이스를 보호하려면 어떻게 하나요?

데이터 보안은 사용자, 고객 그리고 데이터베이스 공급자 간의 공동 책임입니다. 선택한 데이터베이스 공급자에 따라 담당하는 책임의 양이 달라질 수 있습니다. 온-프레미스 솔루션을 선택한 경우 끝점 보호부터 하드웨어의 물리적 보안까지 모든 항목을 제공해야 하며 이것은 쉬운 작업이 아닙니다. Azure Cosmos DB와 같은 PaaS(Platform as a Service) 클라우드 데이터베이스 공급자를 선택할 경우 관여해야 하는 부분이 상당히 줄어듭니다. 다음 그림은 Microsoft의 클라우드 컴퓨팅에 대한 공유 책임 백서를 인용한 것으로 Azure Cosmos DB와 같은 PaaS 공급자를 사용할 경우 사용자가 작업할 부분이 어떻게 줄어드는지를 보여 줍니다.

Screenshot that shows customer and database provider responsibilities.

이전 다이어그램은 대략적인 클라우드 보안 구성 요소를 보여주지만 데이터베이스 솔루션에 대해 특히 고려해야 하는 항목은 무엇일까요? 솔루션을 서로 어떻게 비교해볼 수 있나요?

데이터베이스 시스템을 비교하는 데 다음 요구 사항 검사 목록을 사용하는 것이 좋습니다.

  • 네트워크 보안 및 방화벽 설정
  • 사용자 인증 및 세분화된 사용자 제어
  • 지역별 오류에 대해 전역으로 데이터를 복제하는 기능
  • 데이터 센터 간의 장애 조치(failover) 기능
  • 데이터 센터 내에서 로컬 데이터 복제
  • 자동 데이터 백업
  • 백업에서 삭제된 데이터 복원
  • 중요한 데이터 보호 및 격리
  • 공격 모니터링
  • 공격에 대응
  • 지오-펜스 데이터가 데이터 관리 제한을 준수하는 기능
  • 보호된 데이터 센터에서 서버의 물리적 보호
  • 인증

당연해 보일지 모르지만, 최근의 대규모 데이터베이스 침해는 다음과 같은 요구 사항의 간단하지만 민감한 중요성을 상기시켜 줍니다.

  • 최신 상태로 유지되는 패치된 서버
  • HTTPS(기본값)/TLS 암호화
  • 강력한 암호를 사용하는 관리 계정

Azure Cosmos DB는 내 데이터베이스를 어떻게 보호하나요?

앞의 목록을 다시 살펴보겠습니다. Azure Cosmos DB에서 제공하는 보안 요구 사항은 몇 개입니까? 하나씩 모두 살펴봅니다.

각 항목을 자세히 살펴보겠습니다.

보안 요구 사항 Azure Cosmos DB의 보안 접근 방식
네트워크 보안 IP 방화벽을 사용하는 것이 데이터베이스를 보호하기 위한 첫 번째 보호 계층입니다. Azure Cosmos DB는 인바운드 방화벽 지원을 위해 정책 중심 IP 기반 액세스 제어를 지원합니다. IP 기반 액세스 제어는 기존 데이터베이스 시스템에서 사용하는 방화벽 규칙과 유사합니다. 단, 승인된 컴퓨터 또는 클라우드 서비스 집합에서만 Azure Cosmos DB 데이터베이스 계정에 액세스할 수 있도록 확장되었습니다. 자세한 내용은 Azure Cosmos DB 방화벽 지원을 참조하세요.

Azure Cosmos DB를 통해 특정 IP 주소(168.61.48.0), IP 범위(168.61.48.0/8), IP와 범위 조합을 사용하도록 할 수 있습니다.

Azure Cosmos DB는 이 허용된 목록 외부의 컴퓨터에서 발생하는 모든 요청을 차단합니다. 승인된 컴퓨터 및 클라우드 서비스에서 보내는 요청은 리소스에 대한 액세스 제어를 부여 받기 위해 인증 과정을 완료해야 합니다.

가상 네트워크 서비스 태그를 사용하여 네트워크 격리를 수행하고 일반 인터넷에서 Azure Cosmos DB 리소스를 보호할 수 있습니다. 보안 규칙을 만들 때 특정 IP 주소 대신 서비스 태그를 사용합니다. 서비스 태그 이름(예: AzureCosmosDB)을 규칙의 적절한 원본 또는 대상 필드에 지정하면 해당 서비스에 대한 트래픽을 허용하거나 거부할 수 있습니다.
Authorization Azure Cosmos DB는 권한 부여를 위해 HMAC(해시 기반 메시지 인증 코드)를 사용합니다.

각 요청은 비밀 계정 키를 사용하여 해시되고, Azure Cosmos DB를 호출할 때마다 base-64로 인코딩된 후속 해시가 전송됩니다. 요청의 유효성을 검사하기 위해 Azure Cosmos DB는 올바른 비밀 키와 속성을 사용하여 해시를 생성한 후 요청에 있는 값과 비교합니다. 두 값이 일치하면 작업에 권한 부여가 성공하고 요청이 처리됩니다. 일치하지 않으면 권한 부여가 실패하고 요청이 거부됩니다.

문서와 같은 리소스에 세분화된 액세스를 허용하는 기본 키 또는 리소스 토큰을 사용할 수 있습니다.

자세한 내용은 Azure Cosmos DB 리소스에 대한 보안 액세스를 참조하세요.
사용자 및 권한 계정에 대한 기본 키를 사용하여 데이터베이스별로 사용자 리소스와 권한 리소스를 만들 수 있습니다. 리소스 토큰은 데이터베이스에 있는 권한과 연결되며 사용자가 데이터베이스에 있는 애플리케이션 리소스에 대한 액세스 권한(읽기-쓰기, 읽기 전용 또는 액세스 권한 없음)을 보유하는지 확인합니다. 애플리케이션 리소스에는 컨테이너, 문서, 첨부 파일, 저장 프로시저, 트리거 및 UDF가 포함됩니다. 그리고 인증 중에는 리소스 토큰이 사용되어 리소스에 대한 액세스를 제공 또는 거부합니다.

자세한 내용은 Azure Cosmos DB 리소스에 대한 보안 액세스를 참조하세요.
Active Directory 통합(Azure 역할 기반 액세스 제어) Azure Portal에서 액세스 제어(IAM)를 사용하여 Azure Cosmos DB 계정, 데이터베이스, 컨테이너 및 제안(처리량)에 대한 액세스 권한을 제공하거나 제한할 수도 있습니다. IAM은 역할 기반 액세스 제어를 제공하며 Active Directory와 통합됩니다. 개인 및 그룹에 대해 기본 제공 역할 또는 사용자 지정 역할을 사용할 수 있습니다. 자세한 내용은 Active Directory 통합을 참조하세요.
글로벌 복제 Azure Cosmos DB는 턴키 방식으로 Azure 전 세계 데이터 센터 중 어디로나 데이터를 복제할 수 있는 턴키 글로벌 배포 기능을 제공합니다. 글로벌 복제를 통해 전역적으로 크기를 조정하고 전 세계 데이터에 짧은 대기 시간으로 액세스할 수 있습니다.

보안 컨텍스트에서 글로벌 복제는 지역별 오류에 대해 데이터 보호를 보장해줍니다.

자세한 내용은 전역적으로 데이터 배포를 참조하세요.
지역별 장애 조치 데이터를 둘 이상의 데이터 센터에 복제한 경우 지역 데이터 센터가 오프라인으로 전환되면 Azure Cosmos DB가 사용자 작업을 자동으로 롤오버합니다. 데이터가 복제된 지역을 사용하여 장애 조치 지역의 우선 순위가 지정된 목록을 만들 수 있습니다.

Azure Cosmos DB의 지역별 장애 조치(Failover)에서 자세히 알아보세요.
로컬 복제 단일 데이터 센터 내에서도 Azure Cosmos DB는 고가용성을 위해 데이터를 자동으로 복제하여 일관성 수준을 선택할 수 있도록 합니다. 이 복제는 모든 단일 지역 계정과 완화된 일관성 수준의 모든 다중 지역 계정에 대해 99.99%의 가용성 SLA, 모든 다중 지역 데이터베이스 계정에 대해 99.999%의 읽기 가용성을 보장합니다.
자동 온라인 백업 Azure Cosmos DB 데이터베이스는 정기적으로 백업되며 지역 중복 저장소에 저장됩니다.

Azure Cosmos DB로 자동 온라인 백업 및 복원에서 자세히 알아보세요.
삭제된 데이터 복원 자동 온라인 백업을 사용하여 실수로 삭제한 데이터를 이벤트 후 최대 30일 이내에 복구할 수 있습니다.

Azure Cosmos DB로 자동 온라인 백업 및 복원에서 자세히 알아보세요.
중요한 데이터 보호 및 격리 이제 새로운 기능에 나열된 지역의 모든 데이터가 미사용 상태에서 암호화됩니다.

개인 데이터 및 기타 기밀 데이터를 특정 컨테이너 및 읽기-쓰기로 격리할 수 있으며 읽기 전용 액세스를 특정 사용자로 제한할 수 있습니다.
공격 모니터 감사 로깅 및 활동 로그를 사용하여 계정에서 정상 및 비정상적인 활동을 모니터링할 수 있습니다. 리소스에 대해 수행된 작업을 볼 수 있습니다. 이 데이터에는 작업을 시작한 사람, 작업이 발생한 시기, 작업 상태 등이 포함됩니다.
공격에 대응 잠재적인 공격을 보고하기 위해 Azure 지원에 연락한 이후 5단계 인시던트 대응 프로세스가 시작됩니다. 목표는 정상적인 서비스 보안 및 작업을 복원하는 것입니다. 프로세스는 문제가 검색되어 조사가 시작된 후 가능한 한 빨리 서비스를 복원합니다.

클라우드에서 Microsoft Azure의 보안 대응에서 자세히 알아보세요.
지오-펜싱 Azure Cosmos DB는 독립적인 지역(예: 독일, 중국, 미국 정부)에 대해 데이터 거버넌스를 보장합니다.
보호된 기능 Azure Cosmos DB의 데이터는 Azure의 보호된 데이터 센터의 반도체 드라이브에 저장됩니다.

Microsoft 글로벌 데이터 센터에서 자세히 알아보세요.
HTTPS/SSL/TLS 암호화 Azure Cosmos DB에 대한 모든 연결은 HTTPS를 지원합니다. Azure Cosmos DB는 TLS 수준을 최대 1.2(포함)까지 지원합니다.
서버 측에서 최소 TLS 수준을 적용할 수 있습니다. 이렇게 하려면 셀프 서비스 가이드인 Azure Cosmos DB의 셀프 서비스 최소 TLS 버전 적용을 참조하세요.
미사용 데이터 암호화 Azure Cosmos DB에 저장된 모든 데이터는 미사용 암호화됩니다. 자세한 내용은 Azure Cosmos DB 미사용 암호화를 참조하세요.
패치된 서버 관리되는 데이터베이스인 Azure Cosmos DB를 사용하면 직접 서버를 관리하고 패치를 적용하지 않아도 자동으로 처리됩니다.
강력한 암호를 사용하는 관리 계정 Azure Cosmos DB에는 암호가 없는 관리 계정이 있을 수 없습니다.

TLS 및 HMAC 암호 기반 인증을 통한 보안이 기본적으로 반영됩니다.
보안 및 데이터 보호 인증서 최신 인증 목록을 보려면 Azure 규정 준수와 Azure Cosmos DB를 비롯한 모든 Azure 인증에 대한 최신 Azure 규정 준수 문서를 참조하세요.

다음 스크린샷은 감사 로깅 및 활동 로그를 사용하여 계정을 어떻게 모니터링할 수 있는지 보여줍니다. Screenshot that shows activity logs for Azure Cosmos DB.

기본/보조 키

기본/보조 키는 데이터베이스 계정의 모든 관리 리소스에 대한 액세스 권한을 제공합니다. 기본/보조 키:

  • 계정, 데이터베이스, 사용자 및 사용 권한에 대한 액세스를 제공합니다.
  • 컨테이너 및 문서에 대한 세분화된 액세스를 제공하는 데 사용할 수 없습니다.
  • 계정 생성 중에 만들어집니다.
  • 언제든지 다시 생성할 수 있습니다.

각 계정은 두 개의 키(주 키와 보조 키)로 구성됩니다. 이중 키를 사용하는 목적은 키를 다시 생성하거나 롤링하여 계정 및 데이터에 지속적인 액세스를 제공하는 것입니다.

기본/보조 키는 읽기-쓰기 및 읽기 전용의 두 가지 버전으로 제공됩니다. 이러한 읽기 전용 키는 계정에 대한 읽기 작업만 허용합니다. 읽기 권한 리소스에 대한 액세스 권한을 제공하지 않습니다.

키 순환 및 다시 생성

키 순환 및 다시 생성 프로세스는 간단합니다. 먼저 애플리케이션이 기본 키 또는 보조 키를 일관되게 사용하여 Azure Cosmos DB 계정에 액세스하는지 확인합니다. 그런 다음, 다음 섹션의 단계를 수행합니다. 계정에서 키 업데이트 및 키 재생성을 모니터링하려면 메트릭 및 경고로 키 업데이트 모니터링을 참조하세요.

애플리케이션이 현재 기본 키를 사용 중인 경우

  1. Azure Portal에서 Azure Cosmos DB 계정으로 이동합니다.

  2. 왼쪽 메뉴에서 를 선택한 다음 보조 키 오른쪽에 있는 줄임표(...)에서 보조 키 다시 생성을 선택합니다.

    Screenshot showing how to regenerate the secondary key in the Azure portal when used with the NoSQL API.

  3. 새 보조 키가 Azure Cosmos DB 계정에 대해 일관되게 작동하는지 확인합니다. 키 다시 생성은 Azure Cosmos DB 계정의 크기에 따라 1분에서 몇 시간까지 걸릴 수 있습니다.

  4. 애플리케이션에서 기본 키를 보조 키로 바꿉니다.

  5. Azure Portal로 돌아가서 기본 키 다시 생성을 트리거합니다.

    Screenshot showing how to regenerate the primary key in the Azure portal when used with the NoSQL API.

애플리케이션이 현재 보조 키를 사용 중인 경우

  1. Azure Portal에서 Azure Cosmos DB 계정으로 이동합니다.

  2. 왼쪽 메뉴에서 를 선택한 다음 기본 키 오른쪽에 있는 줄임표(...)에서 기본 키 다시 생성을 선택합니다.

    Screenshot that shows how to regenerate the primary key in the Azure portal when used with the NoSQL API.

  3. 새 기본 키가 Azure Cosmos DB 계정에 대해 일관되게 작동하는지 확인합니다. 키 다시 생성은 Azure Cosmos DB 계정의 크기에 따라 1분에서 몇 시간까지 걸릴 수 있습니다.

  4. 애플리케이션에서 보조 키를 기본 키로 바꿉니다.

  5. Azure Portal로 돌아가서 보조 키 다시 생성을 트리거합니다.

    Screenshot that shows how to regenerate the secondary key in the Azure portal when used with the NoSQL API.

키 재생성 상태 추적

키를 바꾸거나 재생성한 후 활동 로그에서 상태를 추적할 수 있습니다. 상태를 추적하려면 다음 단계를 따르세요.

  1. Azure Portal에 로그인하고 Azure Cosmos DB 계정으로 이동합니다.

  2. 왼쪽 메뉴에서 를 선택합니다. 각 키 아래에 마지막 키 다시 생성 날짜가 표시됩니다.

    Screenshot that shows status of key regeneration from the activity log.

    키를 최소 60일마다 한 번씩 다시 생성하는 것이 좋습니다. 마지막 재생성이 60일이 지난 경우 경고 아이콘이 표시됩니다. 또한 키가 기록되지 않은 것을 볼 수 있습니다. 계정이 2022년 6월 18일 이전에 만들어졌으며 날짜가 등록되지 않은 경우입니다. 그러나 다시 생성하고 새 키에 대한 새 마지막 재생성 날짜를 볼 수 있어야 합니다.

  3. 상태, 작업이 실행된 시간, 키 재생성을 시작한 사용자의 세부 정보와 함께 키 재생성 이벤트가 표시되어야 합니다. 키 생성 작업은 수락됨 상태로 시작됩니다. 시작됨으로 변경된 다음 작업이 완료되면 성공으로 변경됩니다.

다음 단계