다음을 통해 공유


Azure Cosmos DB for Table에 대한 보안 용어집

배포 가이드 시퀀스의 현재 위치('개념')를 다이어그램으로 표시합니다.

개요, 개념, 준비, 역할 기반 액세스 제어 및 참조 순서대로 이러한 위치를 포함하는 배포 가이드 시퀀스의 다이어그램. '개념' 위치가 현재 강조 표시되어 있습니다.

이 문서에는 테이블용 Azure Cosmos DB에 대한 이 보안 가이드에 사용되는 일반적인 용어집이 포함되어 있습니다.

역할 기반 액세스 제어

역할 기반 액세스 제어는 Azure의 리소스에 대한 액세스를 관리하는 방법을 말합니다. 이 메서드는 하나 이상의 리소스에 대한 액세스 수준을 관리하는 역할이 할당되는 특정 ID를 기반으로 합니다. 역할 기반 액세스 제어는 ID가 작업을 수행하는 데 필요한 최소 권한 수준의 액세스만 갖도록 보장하는 유연한 액세스 관리의 유연한 시스템을 제공합니다.

자세한 내용은 역할 기반 액세스 제어 개요를 참조하세요.

ID/보안 주체

ID는 시스템에 대한 일정 수준의 액세스가 필요할 수 있는 일부 엔터티를 나타내는 Microsoft Entra 내의 개체를 나타냅니다. Azure 및 Microsoft Entra의 컨텍스트에서 ID는 다음 유형의 엔터티 중 하나를 참조할 수 있습니다.

설명
워크로드 ID 워크로드 ID는 다른 서비스 또는 리소스에 액세스해야 하는 소프트웨어 워크로드를 나타냅니다.
인간 ID 인간 ID는 테넌트에 기본으로 존재하거나 게스트로 추가된 사용자를 나타냅니다.
관리 ID 관리 ID는 Azure 서비스의 ID를 나타내는 Azure의 고유 리소스입니다.
서비스 주체 서비스 주체는 유연한 수의 인증 시나리오에서 사용할 수 있는 서비스 계정입니다.
디바이스 ID 디바이스 ID는 디바이스에 매핑되는 Microsoft Entra의 개체입니다.
Groups 그룹은 하나 이상의 ID에 대한 액세스를 단일 작업으로 관리하는 데 사용되는 개체입니다.

자세한 내용은 ID 기본 사항을 참조하세요.

역할

역할은 액세스 및 권한을 적용하는 기본 단위입니다. ID에 역할을 할당하고 역할 정의는 해당 ID가 가질 수 있는 액세스 수준을 결정합니다. 할당 범위는 ID에 대한 액세스 권한이 정확히 무엇인지를 결정합니다.

Azure에는 다양한 리소스에 대한 액세스 권한을 부여하는 데 사용할 수 있는 많은 기본 제공 역할 집합이 있습니다. 다음 예제를 고려해 보세요.

역할 CosmosBackupOperator
정의 Microsoft.DocumentDB/databaseAccounts/backup/action & Microsoft.DocumentDB/databaseAccounts/restore/action
범위 리소스 그룹

이 예제에서는 특정 리소스 그룹에 대한 CosmosBackupOperator 역할이 할당됩니다. 이 할당을 사용하면 해당 리소스 그룹 내의 Azure Cosmos DB 계정에서 backup 또는 restore 작업을 수행할 수 있는 액세스 권한이 부여됩니다.

Important

Azure Cosmos DB와 같은 일부 Azure 서비스에는 다양한 Azure Resource Manager 속성, Azure CLI 명령 및 Azure PowerShell cmdLet을 사용하는 고유한 네이티브 역할 기반 액세스 제어 구현이 있습니다. 일반적으로 역할 기반 액세스 제어를 관리하는 데 사용하는 명령은 Azure Cosmos DB 데이터 평면 액세스에서 작동하지 않습니다. Azure 역할 기반 액세스 제어에 대한 명령 중 일부는 Azure Cosmos DB 컨트롤 플레인 액세스에서 작동할 수 있습니다.

자세한 정보는 Azure 기본 제공 역할을 참조하세요.

역할 정의

역할 정의는 허용된 컨트롤 플레인데이터 평면 작업 목록과 허용되지 않은 컨트롤 플레인 및 데이터 평면 작업 목록을 포함하는 JSON 개체입니다. CosmosRestoreOperator 기본 제공 역할에서 잘린 이 예제를 살펴보겠습니다.

{
  "roleName": "CosmosRestoreOperator",
  "type": "Microsoft.Authorization/roleDefinitions",
  ...
  "permissions": [
    {
      "actions": [
        "Microsoft.DocumentDB/locations/restorableDatabaseAccounts/restore/action",
        "Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read",
        "Microsoft.DocumentDB/locations/restorableDatabaseAccounts/read"
      ],
      "notActions": [],
      "dataActions": [],
      "notDataActions": []
    }
  ],
  ...
}

이 정의에서 이 역할이 할당된 ID는 restore 작업을 수행할 수 있습니다. 복원 작업이 완료되면 ID는 다양한 리소스를 읽고 복원이 성공했는지 확인할 수 있습니다. *에 대한 read(와일드카드) 연산자를 통해 이러한 리소스를 읽을 수 있다는 것을 확인할 수 있습니다.

자세한 내용은 역할 정의 개념을 참조하세요.

역할 할당

역할 할당은 특정 Azure 리소스에 대한 ID 액세스 권한을 부여합니다. 역할 할당은 다음 구성 요소로 구성됩니다.

설명
주 서버 이 역할이 할당된 ID
역할 ID에 할당된 역할
범위 대상 Azure 리소스 또는 할당 그룹
이름/설명 대규모 할당을 보다 쉽게 관리할 수 있는 메타데이터

역할 기반 액세스 제어에서 상호 사용되는 용어 ID보안 주체를 볼 수 있습니다.

자세한 내용은 역할 할당 개념을 참조하세요.

actions

작업은 역할이 대상 리소스에 대해 갖는 특정 권한을 정의합니다. 작업은 일반적으로 리소스 종류와 작업이 부여하는 권한을 자세히 설명하는 이름을 포함하는 문자열입니다. 몇 가지 일반적인 예는 다음과 같습니다.

설명 평면
Microsoft.DocumentDB/databaseAccounts/listKeys/action 계정 키만 읽기 제어 평면
Microsoft.DocumentDB/databaseAccounts/backup/action 백업 수행 제어 평면
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/replace 기존 항목 완전히 바꾸기 데이터 평면
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery NoSQL 쿼리 실행 데이터 평면

작업에는 *(와일드카드) 문자가 포함될 수도 있으므로 모든 특정 하위 작업을 수동으로 자세히 설명할 필요가 없습니다. 와일드카드가 있는 작업의 몇 가지 예는 다음과 같습니다.

설명
Microsoft.DocumentDb/databaseAccounts/* Azure Cosmos DB 계정 만들기 및 관리
Microsoft.DocumentDB/*/read 컨테이너 또는 데이터베이스 읽기

작업은 컨트롤 플레인데이터 평면으로 구분됩니다. 컨트롤 플레인 리소스 및 데이터에 영향을 줄 수 있는 작업에 대한 작업을 별도로 정의해야 합니다. 역할 정의에서 컨트롤 플레인 작업은 actions 속성을 사용하고 데이터 평면 작업은 dataActions 속성 내에 있습니다. 또한 각각의 notActions 속성과 notDataActions 속성을 사용하여 ID가 수행할 수 없는 작업을 정의할 수도 있습니다.

참고 항목

동작을 컨트롤 플레인과 데이터 평면으로 분리하는 것은 레거시 역할 정의의 와일드카드 작업이 데이터에 제한되지 않고 의도치 않게 액세스하는 것을 방지하는 보안 조치입니다.

자세한 정보는 컨트롤 및 데이터 작업을 참조하세요.

최소 권한

"최소 권한"이라는 개념은 모든 사용자가 작업 또는 직무를 수행하는 데 필요한 최소한의 액세스 수준만 갖도록 하는 운영 모범 사례를 의미합니다. 예를 들어 데이터베이스에서 데이터를 읽는 애플리케이션은 데이터 저장소에 대한 읽기 권한만 있으면 됩니다. 해당 애플리케이션에 데이터 저장소에 대한 읽기 및 쓰기 액세스 권한이 있는 경우 다음을 포함하지만 이에 국한되지 않는 몇 가지 상황이 발생할 수 있습니다.

  • 애플리케이션이 실수로 데이터를 파괴할 수 있음
  • 권한이 없는 사용자는 애플리케이션의 자격 증명에 액세스하고 데이터를 수정할 수 있습니다.

최소 권한의 사례에 따라 잠재적인 데이터 침해의 범위가 제한됩니다. 이러한 사례는 운영 보안을 극대화하는 동시에 사용자가 계속 효과적으로 작업할 수 있도록 합니다.

자세한 내용은 작업별로 권장되는 최소 권한 역할을 참조하세요.

제어 평면

컨트롤 플레인 액세스는 데이터를 관리하지 않고 Azure 서비스에 대한 리소스를 관리하는 기능을 나타냅니다. 예를 들어 Azure Cosmos DB 컨트롤 플레인 액세스에는 다음 기능이 포함될 수 있습니다.

  • 모든 계정 및 리소스 메타데이터 읽기
  • 계정 키와 연결 문자열 읽기 및 다시 생성
  • 계정 백업 및 복원 수행
  • 데이터 전송 작업 시작 및 추적
  • 데이터베이스 및 컨테이너 관리
  • 계정 속성 수정

Important

Azure Cosmos DB에서는 네이티브 데이터 평면 역할 기반 액세스 제어 정의 및 할당을 관리하기 위해 컨트롤 플레인 액세스가 필요합니다. Azure Cosmos DB의 데이터 평면 역할 기반 액세스 제어 메커니즘은 기본 제공되므로 정의 및 할당을 만들고 Azure Cosmos DB 계정 내에 리소스로 저장하려면 컨트롤 플레인 액세스가 필요합니다.

데이터 평면

데이터 평면 액세스는 계정의 리소스를 관리할 수 없는 상태에서 Azure 서비스 내에서 데이터를 읽고 쓰는 기능을 의미합니다. 예제의 경우 Azure Cosmos DB 데이터 평면 액세스에는 다음 기능이 포함될 수 있습니다.

  • 일부 계정 및 리소스 메타데이터 읽기
  • 항목 만들기, 읽기, 업데이트, 패치 및 삭제
  • NoSQL 쿼리 실행
  • 컨테이너의 변경 피드에서 읽기
  • 저장 프로시저 실행
  • 충돌 피드에서 충돌 관리

이식 가능한 인증

개발 시 로컬 개발 인스턴스와 프로덕션 인스턴스에 대한 두 세트의 별도 인증 논리를 작성하는 것이 일반적입니다. Azure SDK를 사용하면 단일 기술을 사용하여 논리를 작성하고 인증 코드가 개발 및 프로덕션 환경에서 원활하게 작동할 것으로 기대할 수 있습니다.

Azure ID 클라이언트 라이브러리는 Azure SDK의 일부로 여러 프로그래밍 언어로 사용할 수 있습니다. 이 라이브러리를 사용하면 사용자 환경에 따라 올바른 자격 증명을 찾기 위해 여러 옵션을 지능적으로 안내하는 DefaultAzureCredential 개체를 만들 수 있습니다. 이러한 인증 옵션에는 순서대로 다음이 포함됩니다.

  1. 환경 변수로 저장된 클라이언트 암호 또는 인증서
  2. Microsoft Entra 워크로드 ID
  3. 사용자가 할당한 관리 ID 또는 시스템이 할당한 관리 ID
  4. Visual Studio의 설정에서 파생된 Azure 자격 증명
  5. Visual Studio Code의 Azure 계정 확장에 사용되는 자격 증명
  6. Azure CLI의 현재 자격 증명
  7. Azure PowerShell의 현재 자격 증명
  8. Azure Developer CLI의 현재 자격 증명
  9. 로그인을 위해 시스템의 브라우저를 시작하는 대화형 세션

각 최신 Azure SDK 라이브러리는 DefaultAzureCredential 인스턴스 또는 해당 기본 형식을 허용하는 해당 클라이언트 개체 또는 클래스에 대한 생성자를 지원합니다.

프로덕션 코드를 더 쉽게 디버그하고 예측 가능하게 만들려면 개발 단계에서 DefaultAzureCredential을(를) 사용하도록 선택하고 애플리케이션이 배포되면 WorkloadIdentityCredential 또는 ManagedIdentityCredential와(과) 같이 보다 구체적인 자격 증명으로 전환할 수 있습니다. 이러한 모든 클래스는 많은 Azure SDK가 클라이언트 초기화 논리의 일부로 기대하는 TokenCredential 클래스를 기반으로 하므로 쉽게 앞뒤로 바꿀 수 있습니다.

고유 식별자

Microsoft Entra의 각 ID 에는 고유 식별자가 있습니다. 이 고유 식별자를 id, objectId 또는 principalId(이)라고 부르는 경우도 있습니다. 역할 할당을 만들 때 할당에 사용할 ID의 고유 식별자가 필요합니다.

범위

역할을 할당할 때 액세스 권한을 부여할 Azure 리소스 또는 그룹을 결정해야 합니다. 역할 할당의 범위는 할당이 이루어지는 수준을 정의합니다.

예시:

  • 단일 리소스 범위는 해당 단일 리소스에만 권한을 적용합니다.
  • 리소스 그룹 수준에서 설정된 범위는 그룹 내의 모든 관련 리소스에 대한 권한을 적용합니다.
  • 관리 그룹 또는 구독 수준의 범위는 모든 자식 그룹 및 리소스에 적용됩니다.

Azure 역할 기반 액세스 제어에서 역할을 할당하는 경우 워크로드에 필요한 만큼 적은 리소스를 포함하도록 해당 할당의 범위를 설정하는 것이 이상적입니다. 예를 들어 할당 범위를 리소스 그룹으로 설정할 수 있습니다. 해당 리소스 그룹 범위에는 리소스 그룹 내의 모든 Azure Cosmos DB 리소스가 포함됩니다.

/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>

또는 범위를 단일 Azure 리소스로 설정하고 권한 할당을 보다 세분화하고 좁게 만들 수 있습니다. 이 예제에서는 Azure Cosmos DB 리소스의 공급자 및 이름을 사용하여 범위를 좁힐 수 있습니다.

/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>

자세한 내용은 Azure 역할 기반 액세스 제어 범위를 참조하세요.

범위(Azure Cosmos DB 네이티브)

Azure Cosmos DB의 역할 기반 액세스 제어 네이티브 구현에서 범위는 사용 권한을 적용하려는 계정 내에서 리소스의 세분성을 나타냅니다.

가장 높은 수준에서 가장 큰 범위를 사용하여 데이터 평면 역할 기반 액세스 제어 할당의 범위를 전체 계정으로 지정할 수 있습니다. 이 범위에는 계정 내의 모든 데이터베이스 및 컨테이너가 포함됩니다.

/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/

또는 데이터 평면 역할 할당의 범위를 기본 데이터베이스로 지정할 수 있습니다.

/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/dbs/TablesDB

Important

기본 데이터베이스 TablesDB는 대/소문자를 구분합니다. 범위에서 잘못된 대/소문자를 사용하는 경우 범위가 허용되는 가장 큰 범위(계정 수준)로 잘립니다.

마지막으로 할당 범위를 가장 세분화된 단일 컨테이너(테이블)로 지정할 수 있습니다.

/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/dbs/TablesDB/colls/<container-name>

다음 단계