Azure Cosmos DB 계정에 대해 Microsoft Entra ID를 사용하여 역할 기반 액세스 제어 구성

적용 대상: NoSQL

참고 항목

이 문서에서는 Azure Cosmos DB의 데이터 평면 작업에 대한 역할 기반 액세스 제어에 대해 설명합니다. 관리 평면 작업을 사용하는 경우 관리 평면 작업 문서에 적용된 역할 기반 액세스 제어를 참조하세요.

Azure Cosmos DB는 다음을 수행할 수 있는 기본 제공 역할 기반 액세스 제어 시스템을 노출합니다.

  • Microsoft Entra ID를 사용하여 데이터 요청을 인증합니다.
  • 세분화된 역할 기반 권한 모델을 사용하여 데이터 요청에 권한을 부여합니다.

개념

Azure Cosmos DB 데이터 평면 역할 기반 액세스 제어는 Azure 역할 기반 액세스 제어와 같은 다른 역할 기반 액세스 제어 시스템에서 일반적으로 발견되는 개념을 기반으로 합니다.

  • 권한 모델은 일련의 작업으로 구성됩니다. 이러한 각 작업은 하나 이상의 데이터베이스 작업에 매핑됩니다. 작업의 몇 가지 예로는 항목 읽기, 항목 작성 또는 쿼리 실행 등이 있습니다.
  • Azure Cosmos DB 사용자는 허용되는 작업 목록을 포함하는 역할 정의를 만듭니다.
  • 역할 정의는 역할 할당을 통해 특정 Microsoft Entra ID에 할당됩니다. 역할 할당은 역할 정의가 적용되는 범위도 정의합니다. 현재 세 가지 범위는 현재 다음과 같습니다.
    • Azure Cosmos DB 계정,
    • Azure Cosmos DB 데이터베이스,
    • Azure Cosmos DB 컨테이너입니다.

Diagram of common role-based access control concepts including role definitions, role assignments, and principals.

권한 모델

Important

이 권한 모델은 데이터 읽기 및 쓰기와 관련된 데이터베이스 작업만 다룹니다. 다음과 같은 관리 리소스에 대한 모든 종류의 관리 작업은 다루지 않습니다.

  • 데이터베이스 만들기/바꾸기/삭제
  • 컨테이너 만들기/바꾸기/삭제
  • 컨테이너 처리량 읽기/바꾸기
  • 저장 프로시저 만들기/바꾸기/삭제/읽기
  • 트리거 만들기/바꾸기/삭제/읽기
  • 사용자 정의 함수 만들기/바꾸기/삭제/읽기

Azure Cosmos DB 데이터 평면 SDK를 사용하여 Microsoft Entra ID를 사용하여 관리 작업을 인증할 수 없습니다. 대신 다음 옵션 중 하나를 통해 Azure 역할 기반 액세스 제어를 사용해야 합니다.

데이터베이스 읽기 및 컨테이너 읽기는 메타데이터 요청으로 간주됩니다. 다음 섹션에 명시된 대로 이러한 작업에 대한 액세스 권한을 부여할 수 있습니다.

이 표에는 사용 권한 모델에서 노출하는 모든 작업이 나열되어 있습니다.

이름 해당 데이터베이스 작업
Microsoft.DocumentDB/databaseAccounts/readMetadata 계정 메타데이터를 읽습니다. 자세한 내용은 메타데이터 요청을 참조하세요.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/create 새 항목을 만듭니다.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read 해당 ID 및 파티션 키로 개별 항목을 읽습니다(지점 읽기).
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/replace 기존 항목을 바꿉니다.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/upsert 항목을 "Upsert"합니다. 이 작업은 항목이 아직 없는 경우 항목을 만들거나 항목이 있는 경우 대체합니다.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/delete 항목을 삭제합니다.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery SQL 쿼리실행합니다.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed 컨테이너의 변경 피드에서 읽습니다. SDK를 사용하여 SQL 쿼리를 실행합니다.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeStoredProcedure 저장 프로시저실행합니다.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/manageConflicts 다중 쓰기 지역 계정에 대한 충돌을 관리합니다. 즉, 항목을 나열하고 충돌 피드에서 삭제합니다.

참고 항목

SDK를 통해 쿼리를 실행할 때는 사용 권한과 Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed 권한이 모두 Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery 필요합니다.

Wild카드는 컨테이너 및 항목 수준 모두에서 지원됩니다.

  • Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*
  • Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*

메타데이터 요청

Azure Cosmos DB SDK는 초기화 중에 읽기 전용 메타데이터 요청을 실행하고 특정 데이터 요청을 처리합니다. 이러한 요청은 다음과 같은 다양한 구성 세부 정보를 가져옵니다.

  • 계정을 사용할 수 있는 Azure 지역을 포함하는 계정의 전역 구성입니다.
  • 컨테이너 또는 해당 인덱싱 정책의 파티션 키입니다.
  • 컨테이너 및 해당 주소를 구성하는 물리적 파티션 목록.

이것들은 계정에 저장된 데이터를 페치하지 않습니다.

사용 권한 모델의 최상의 투명성을 보장하기 위해 이러한 메타데이터 요청은 작업에 명시적으로 적용 Microsoft.DocumentDB/databaseAccounts/readMetadata 됩니다. 이 작업은 Azure Cosmos DB 계정 중 하나를 통해 Azure Cosmos DB 계정에 액세스하는 모든 상황에서 허용되어야 합니다. Azure Cosmos DB 계층 구조(즉, 계정, 데이터베이스 또는 컨테이너)의 모든 수준에서 역할 할당을 통해 할당할 수 있습니다.

작업에서 Microsoft.DocumentDB/databaseAccounts/readMetadata 허용하는 실제 메타데이터 요청은 작업이 할당된 범위에 따라 달라집니다.

범위 계정에서 허용되는 요청
계정 • 계정 아래에 데이터베이스 나열
• 계정 아래의 각 데이터베이스에 대해 데이터베이스 범위에서 허용되는 작업
데이터베이스 • 데이터베이스 메타데이터 읽기
• 데이터베이스 아래에 컨테이너 나열
• 데이터베이스 아래의 각 컨테이너에 대해 컨테이너 범위에서 허용되는 작업
컨테이너 • 컨테이너 메타데이터 읽기
• 컨테이너 아래에 실제 파티션 나열
• 각 실제 파티션의 주소 확인

Important

처리량은 이 작업의 메타데이터에 포함되지 않습니다.

기본 제공 역할 정의

Azure Cosmos DB는 두 가지 기본 제공 역할 정의를 노출합니다.

Important

여기서 역할 정의라는 용어 Azure Cosmos DB 특정 역할 정의를 참조합니다. 이는 Azure 역할 기반 액세스 제어 역할 정의와 다릅니다.

ID 이름 포함된 작업
00000000-0000-0000-0000-000000000001 Cosmos DB 기본 제공 데이터 판독기 Microsoft.DocumentDB/databaseAccounts/readMetadata
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed
00000000-0000-0000-0000-000000000002 Cosmos DB 기본 제공 데이터 기여자 Microsoft.DocumentDB/databaseAccounts/readMetadata
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*

사용자 지정 역할 정의 만들기

사용자 지정 역할 정의를 만들 때는 다음을 제공해야 합니다.

  • Azure Cosmos DB 계정의 이름.
  • 계정이 포함된 리소스 그룹.
  • 역할 정의의 유형: CustomRole.
  • 역할 정의의 이름.
  • 역할에 허용할 작업 목록.
  • 역할 정의를 할당할 수 있는 하나 이상의 범위이며, 지원되는 범위는 다음과 같습니다.
    • /(계정 수준),
    • /dbs/<database-name>(데이터베이스 수준),
    • /dbs/<database-name>/colls/<container-name>(컨테이너 수준).

참고 항목

설명된 작업은 다음에서 사용할 수 있습니다.

Azure PowerShell 사용

읽기 작업만 포함하는 MyReadOnlyRole라는 역할 만들기:

$resourceGroupName = "<myResourceGroup>"
$accountName = "<myCosmosAccount>"
New-AzCosmosDBSqlRoleDefinition -AccountName $accountName `
    -ResourceGroupName $resourceGroupName `
    -Type CustomRole -RoleName MyReadOnlyRole `
    -DataAction @( `
        'Microsoft.DocumentDB/databaseAccounts/readMetadata',
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read', `
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery', `
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed') `
    -AssignableScope "/"

모든 작업을 포함하는 MyReadWriteRole이라는 역할을 만듭니다.

New-AzCosmosDBSqlRoleDefinition -AccountName $accountName `
    -ResourceGroupName $resourceGroupName `
    -Type CustomRole -RoleName MyReadWriteRole `
    -DataAction @( `
        'Microsoft.DocumentDB/databaseAccounts/readMetadata',
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*', `
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*') `
    -AssignableScope "/"

ID를 페치하기 위해 만든 역할 정의 나열:

Get-AzCosmosDBSqlRoleDefinition -AccountName $accountName `
    -ResourceGroupName $resourceGroupName
RoleName         : MyReadWriteRole
Id               : /subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAcc
                   ounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>
Type             : CustomRole
Permissions      : {Microsoft.Azure.Management.CosmosDB.Models.Permission}
AssignableScopes : {/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAc
                   counts/<myCosmosAccount>}

RoleName         : MyReadOnlyRole
Id               : /subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAcc
                   ounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>
Type             : CustomRole
Permissions      : {Microsoft.Azure.Management.CosmosDB.Models.Permission}
AssignableScopes : {/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAc
                   counts/<myCosmosAccount>}

Azure CLI 사용

role-definition-ro.json 파일에 읽기 작업만 포함하는 MyReadOnlyRole 이라는 역할을 만듭니다.

{
    "RoleName": "MyReadOnlyRole",
    "Type": "CustomRole",
    "AssignableScopes": ["/"],
    "Permissions": [{
        "DataActions": [
            "Microsoft.DocumentDB/databaseAccounts/readMetadata",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed"
        ]
    }]
}
resourceGroupName='<myResourceGroup>'
accountName='<myCosmosAccount>'
az cosmosdb sql role definition create --account-name $accountName --resource-group $resourceGroupName --body @role-definition-ro.json

role-definition-rw.json 파일 의 모든 작업을 포함하는 MyReadWriteRole 이라는 역할을 만듭니다.

{
    "RoleName": "MyReadWriteRole",
    "Type": "CustomRole",
    "AssignableScopes": ["/"],
    "Permissions": [{
        "DataActions": [
            "Microsoft.DocumentDB/databaseAccounts/readMetadata",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*"
        ]
    }]
}
az cosmosdb sql role definition create --account-name $accountName --resource-group $resourceGroupName --body @role-definition-rw.json

ID를 페치하기 위해 만든 역할 정의 나열:

az cosmosdb sql role definition list --account-name $accountName --resource-group $resourceGroupName
[
  {
    "assignableScopes": [
      "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>"
    ],
    "id": "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>",
    "name": "<roleDefinitionId>",
    "permissions": [
      {
        "dataActions": [
          "Microsoft.DocumentDB/databaseAccounts/readMetadata",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*"
        ],
        "notDataActions": []
      }
    ],
    "resourceGroup": "<myResourceGroup>",
    "roleName": "MyReadWriteRole",
    "sqlRoleDefinitionGetResultsType": "CustomRole",
    "type": "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions"
  },
  {
    "assignableScopes": [
      "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>"
    ],
    "id": "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>",
    "name": "<roleDefinitionId>",
    "permissions": [
      {
        "dataActions": [
          "Microsoft.DocumentDB/databaseAccounts/readMetadata",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed"
        ],
        "notDataActions": []
      }
    ],
    "resourceGroup": "<myResourceGroup>",
    "roleName": "MyReadOnlyRole",
    "sqlRoleDefinitionGetResultsType": "CustomRole",
    "type": "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions"
  }
]

Azure Resource Manager 템플릿 사용

Azure Resource Manager 템플릿을 사용하여 역할 정의를 만드는 참조 및 예제는 Microsoft.DocumentDB databaseAccounts/sqlRoleDefinitions를 참조하세요.

역할 할당 만들기

기본 제공 또는 사용자 지정 역할 정의를 Microsoft Entra ID와 연결할 수 있습니다. 역할 할당을 만들 때 다음을 제공해야 합니다.

  • Azure Cosmos DB 계정의 이름.

  • 계정이 포함된 리소스 그룹.

  • 할당할 역할 정의의 ID입니다.

  • 역할 정의를 할당할 ID의 보안 주체 ID입니다.

  • 역할 할당의 범위입니다. 지원되는 범위:

    • /(계정 수준)
    • /dbs/<database-name>(데이터베이스 수준)
    • /dbs/<database-name>/colls/<container-name>(컨테이너 수준)

    범위는 역할 정의의 할당 가능한 범위 중 하나의 하위 범위이거나 이와 일치해야 합니다.

참고 항목

서비스 주체에 대한 역할 할당을 만들려면 Microsoft Entra ID 포털 블레이드의 엔터프라이즈 애플리케이션 섹션에 있는 개체 ID사용해야 합니다.

참고 항목

설명된 작업은 다음에서 사용할 수 있습니다.

Azure PowerShell 사용

ID에 역할을 할당합니다.

$resourceGroupName = "<myResourceGroup>"
$accountName = "<myCosmosAccount>"
$readOnlyRoleDefinitionId = "<roleDefinitionId>" # as fetched above
# For Service Principals make sure to use the Object ID as found in the Enterprise applications section of the Azure Active Directory portal blade.
$principalId = "<aadPrincipalId>"
New-AzCosmosDBSqlRoleAssignment -AccountName $accountName `
    -ResourceGroupName $resourceGroupName `
    -RoleDefinitionId $readOnlyRoleDefinitionId `
    -Scope "/" `
    -PrincipalId $principalId

Azure CLI 사용

ID에 역할을 할당합니다.

resourceGroupName='<myResourceGroup>'
accountName='<myCosmosAccount>'
readOnlyRoleDefinitionId='<roleDefinitionId>' # as fetched above
# For Service Principals make sure to use the Object ID as found in the Enterprise applications section of the Azure Active Directory portal blade.
principalId='<aadPrincipalId>'
az cosmosdb sql role assignment create --account-name $accountName --resource-group $resourceGroupName --scope "/" --principal-id $principalId --role-definition-id $readOnlyRoleDefinitionId

Bicep/Azure Resource Manager 템플릿 사용

Bicep 템플릿을 사용하는 기본 제공 할당의 경우:

resource sqlRoleAssignment 'Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments@2023-04-15' = {
  name: guid(<roleDefinitionId>, <aadPrincipalId>, <databaseAccountResourceId>)
  parent: databaseAccount
  properties:{
    principalId: <aadPrincipalId>
    roleDefinitionId: '/${subscription().id}/resourceGroups/<databaseAccountResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>'
    scope: <databaseAccountResourceId>
  }
}

Azure Resource Manager 템플릿을 사용하여 역할 할당을 만드는 참조 및 예제는 Microsoft.DocumentDB databaseAccounts/sqlRoleAssignments를 참조하세요.

Microsoft Entra ID를 사용하여 SDK 초기화

애플리케이션에서 Azure Cosmos DB 역할 기반 액세스 제어를 사용하려면 Azure Cosmos DB SDK를 초기화하는 방법을 업데이트해야 합니다. 계정의 기본 키를 전달하는 대신 클래스의 TokenCredential 인스턴스를 전달해야 합니다. 이 인스턴스는 사용하려는 ID를 대신하여 Microsoft Entra 토큰을 가져오는 데 필요한 컨텍스트를 Azure Cosmos DB SDK에 제공합니다.

TokenCredential 인스턴스를 만드는 방법은 이 문서의 범위를 벗어납니다. 사용하려는 Microsoft Entra ID 유형(사용자 계정, 서비스 주체, 그룹 등)에 따라 이러한 인스턴스를 만드는 방법에는 여러 가지가 있습니다. 가장 중요한 것은 TokenCredential 인스턴스가 역할을 할당한 ID(보안 주체 ID)로 확인되어야 한다는 것입니다. 다음 위치에서 TokenCredential 클래스 만들기 예시를 찾아볼 수 있습니다.

다음 예제에서는 인스턴스와 함께 서비스 주체를 ClientSecretCredential 사용합니다.

.NET

Azure Cosmos DB 역할 기반 액세스 제어는 현재 .NET SDK V3에서 지원됩니다.

TokenCredential servicePrincipal = new ClientSecretCredential(
    "<azure-ad-tenant-id>",
    "<client-application-id>",
    "<client-application-secret>");
CosmosClient client = new CosmosClient("<account-endpoint>", servicePrincipal);

Java

Azure Cosmos DB 역할 기반 액세스 제어는 현재 Java SDK V4에서 지원됩니다.

TokenCredential ServicePrincipal = new ClientSecretCredentialBuilder()
    .authorityHost("https://login.microsoftonline.com")
    .tenantId("<azure-ad-tenant-id>")
    .clientId("<client-application-id>")
    .clientSecret("<client-application-secret>")
    .build();
CosmosAsyncClient Client = new CosmosClientBuilder()
    .endpoint("<account-endpoint>")
    .credential(ServicePrincipal)
    .build();

JavaScript에서

Azure Cosmos DB 역할 기반 액세스 제어는 현재 JavaScript SDK V3에서 지원됩니다.

const servicePrincipal = new ClientSecretCredential(
    "<azure-ad-tenant-id>",
    "<client-application-id>",
    "<client-application-secret>");
const client = new CosmosClient({
    endpoint: "<account-endpoint>",
    aadCredentials: servicePrincipal
});

Python에서

Azure Cosmos DB 역할 기반 액세스 제어는 Python SDK 버전 4.3.0b4 이상에서 지원됩니다.

aad_credentials = ClientSecretCredential(
    tenant_id="<azure-ad-tenant-id>",
    client_id="<client-application-id>",
    client_secret="<client-application-secret>")
client = CosmosClient("<account-endpoint>", aad_credentials)

REST API에서 요청 인증

REST API 권한 부여 헤더를 생성할 때 다음 예제와 같이 형식 매개 변수를 Microsoft Entra ID로 설정하고 해시 서명(sig)을 OAuth 토큰으로 설정합니다.

type=aad&ver=1.0&sig=<token-from-oauth>

데이터 탐색기 사용

참고 항목

Azure Portal에 노출된 데이터 탐색기는 Azure Cosmos DB 역할 기반 액세스 제어를 아직 지원하지 않습니다. 데이터를 탐색할 때 Microsoft Entra ID를 사용하려면 Azure Cosmos DB Explorer를 사용해야 합니다.

특정 ?feature.enableAadDataPlane=true 쿼리 매개 변수를 사용하여 Azure Cosmos DB Explorer에 액세스하고 로그인하면 다음 논리가 데이터에 액세스하는 데 사용됩니다.

  1. 로그인한 ID를 대신하여 계정의 기본 키를 가져오는 요청이 시도됩니다. 이 요청이 성공하면 기본 키가 계정의 데이터에 액세스하는 데 사용됩니다.
  2. 로그인한 ID가 계정의 기본 키를 가져올 수 없는 경우 이 ID는 데이터 액세스를 인증하는 데 직접 사용됩니다. 이 모드에서는 데이터 액세스를 보장하기 위해 적절한 역할 정의와 함께 ID를 할당해야 합니다.

데이터 요청 감사

진단 로그는 Azure Cosmos DB 역할 기반 액세스 제어를 사용할 때 각 데이터 작업에 대한 ID 및 권한 부여 정보로 보강됩니다. 이 확대를 통해 자세한 감사를 수행하고 Azure Cosmos DB 계정으로 전송된 모든 데이터 요청에 사용되는 Microsoft Entra ID를 검색할 수 있습니다.

이 추가 정보는 DataPlaneRequests 로그 범주에 들어가며, 두 가지 추가 열로 구성됩니다.

유일한 인증 방법으로 역할 기반 액세스 제어 적용

클라이언트가 역할 기반 액세스 제어를 통해 Azure Cosmos DB에만 연결하도록 강제하려는 경우 계정의 기본/보조 키를 사용하지 않도록 설정할 수 있습니다. 이렇게 하면 기본/보조 키 또는 리소스 토큰을 사용하는 들어오는 요청이 적극적으로 거부됩니다.

Azure 리소스 관리자 템플릿 사용

Azure Resource Manager 템플릿을 사용하여 Azure Cosmos DB 계정을 만들거나 업데이트할 때 속성을 다음으로 true설정합니다disableLocalAuth.

"resources": [
    {
        "type": " Microsoft.DocumentDB/databaseAccounts",
        "properties": {
            "disableLocalAuth": true,
            // ...
        },
        // ...
    },
    // ...
 ]

제한

  • Azure Cosmos DB 계정당 최대 100개의 역할 정의와 2,000개의 역할 할당을 만들 수 있습니다.
  • Azure Cosmos DB 계정과 동일한 Microsoft Entra 테넌트에 속하는 Microsoft Entra ID에만 역할 정의를 할당할 수 있습니다.
  • Microsoft Entra 그룹 확인은 현재 200개 이상의 그룹에 속한 ID에 대해 지원되지 않습니다.
  • Microsoft Entra 토큰은 현재 Azure Cosmos DB 서비스로 전송된 각 개별 요청과 함께 헤더로 전달되어 전체 페이로드 크기를 늘립니다.

자주 묻는 질문

이 섹션에는 역할 기반 액세스 제어 및 Azure Cosmos DB에 대한 질문과 대답이 포함되어 있습니다.

데이터 평면 역할 기반 액세스 제어를 지원하는 Azure Cosmos DB API는 무엇입니까?

현재 NoSQL API만 지원됩니다.

Azure Portal에서 역할 정의 및 역할 할당을 관리할 수 있나요?

역할 관리에 대한 Azure Portal 지원은 아직 사용할 수 없습니다.

NoSQL용 Azure Cosmos DB API의 SDK는 역할 기반 액세스 제어를 지원합니까?

.NET V3, Java V4, JavaScript V3Python V4.3+ SDK는 현재 지원됩니다.

Microsoft Entra 토큰이 만료되면 Azure Cosmos DB SDK에 의해 자동으로 토큰이 갱신되나요?

예.

역할 기반 액세스 제어를 사용할 때 계정 기본/보조 키의 사용을 사용하지 않도록 설정할 수 있나요?

예, 유일한 인증 방법으로 역할 기반 액세스 제어 적용을 참조 하세요.

다음 단계