Konfigurowanie kontroli dostępu opartej na rolach za pomocą usługi Microsoft Entra ID dla konta usługi Azure Cosmos DB

DOTYCZY: NoSQL

Uwaga

Ten artykuł dotyczy kontroli dostępu opartej na rolach dla operacji płaszczyzny danych w usłudze Azure Cosmos DB. Jeśli używasz operacji płaszczyzny zarządzania, zobacz artykuł Kontrola dostępu oparta na rolach zastosowana do operacji płaszczyzny zarządzania.

Usługa Azure Cosmos DB uwidacznia wbudowany system kontroli dostępu opartej na rolach, który umożliwia:

  • Uwierzytelnianie żądań danych za pomocą tożsamości firmy Microsoft Entra.
  • Autoryzowanie żądań danych za pomocą szczegółowego, opartego na rolach modelu uprawnień.

Pojęcia

Kontrola dostępu oparta na rolach płaszczyzny danych usługi Azure Cosmos DB jest oparta na pojęciach, które są często spotykane w innych systemach kontroli dostępu opartej na rolach, takich jak kontrola dostępu oparta na rolach platformy Azure:

  • Model uprawnień składa się z zestawu akcji. Każda z tych akcji jest mapowana na jedną lub wiele operacji bazy danych. Niektóre przykłady akcji obejmują odczytywanie elementu, pisanie elementu lub wykonywanie zapytania.
  • Użytkownicy usługi Azure Cosmos DB tworzą definicje ról zawierające listę dozwolonych akcji.
  • Definicje ról są przypisywane do określonych tożsamości firmy Microsoft entra za pomocą przypisań ról. Przypisanie roli definiuje również zakres, do którego ma zastosowanie definicja roli; obecnie istnieją trzy zakresy:
    • Konto usługi Azure Cosmos DB
    • Baza danych usługi Azure Cosmos DB,
    • Kontener usługi Azure Cosmos DB.

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

Model uprawnień

Ważne

Ten model uprawnień obejmuje tylko operacje bazy danych, które obejmują odczytywanie i zapisywanie danych. Nie obejmuje żadnych operacji zarządzania w zasobach zarządzania, w tym:

  • Tworzenie/zastępowanie/usuwanie bazy danych
  • Tworzenie/zastępowanie/usuwanie kontenera
  • Odczyt/zamień przepływność kontenera
  • Tworzenie/zastępowanie/usuwanie/odczytywanie procedur składowanych
  • Tworzenie/zastępowanie/usuwanie/odczytywanie wyzwalaczy
  • Tworzenie/zastępowanie/usuwanie/odczytywanie funkcji zdefiniowanych przez użytkownika

Do uwierzytelniania operacji zarządzania przy użyciu tożsamości firmy Microsoft Entra nie można użyć żadnego zestawu SDK płaszczyzny danych usługi Azure Cosmos DB. Zamiast tego należy użyć kontroli dostępu opartej na rolach platformy Azure za pomocą jednej z następujących opcji:

Odczyt bazy danych i kontener odczytu są traktowane jako żądania metadanych. Dostęp do tych operacji można udzielić zgodnie z opisem w poniższej sekcji.

W tej tabeli wymieniono wszystkie akcje uwidocznione przez model uprawnień.

Nazwisko Odpowiednie operacje bazy danych
Microsoft.DocumentDB/databaseAccounts/readMetadata Odczytywanie metadanych konta. Aby uzyskać szczegółowe informacje, zobacz Żądania metadanych.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/create Utwórz nowy element.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read Odczytaj pojedynczy element według jego identyfikatora i klucza partycji (punkt-odczyt).
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/replace Zamień istniejący element.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/upsert Element "Upsert". Ta operacja tworzy element, jeśli jeszcze nie istnieje, lub zastąpić element, jeśli istnieje.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/delete Usuń element.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery Wykonaj zapytanie SQL.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed Odczyt z zestawienia zmian kontenera. Wykonywanie zapytań SQL przy użyciu zestawów SDK.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeStoredProcedure Wykonaj procedurę składowaną.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/manageConflicts Zarządzanie konfliktami dla kont regionów z wieloma zapisami (czyli wyświetlanie listy i usuwanie elementów ze źródła danych konfliktów).

Uwaga

Podczas wykonywania zapytań za pośrednictwem zestawów SDK wymagane są zarówno uprawnienia, jak Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery i Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed .

Symbole wieloznaczne są obsługiwane zarówno na poziomie kontenerów, jak i elementów :

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

Żądania metadanych

Zestawy SDK usługi Azure Cosmos DB wysyłają żądania metadanych tylko do odczytu podczas inicjowania i obsługują określone żądania danych. Te żądania pobierają różne szczegóły konfiguracji, takie jak:

  • Globalna konfiguracja konta, która obejmuje regiony platformy Azure, w których konto jest dostępne.
  • Klucz partycji kontenerów lub ich zasad indeksowania.
  • Lista partycji fizycznych, które tworzą kontener i ich adresy.

Nie pobierają żadnych danych przechowywanych na Twoim koncie.

Aby zapewnić najlepszą przejrzystość naszego modelu uprawnień, te żądania metadanych są jawnie objęte akcją Microsoft.DocumentDB/databaseAccounts/readMetadata . Ta akcja powinna być dozwolona w każdej sytuacji, w której twoje konto usługi Azure Cosmos DB jest dostępne za pośrednictwem jednego z zestawów SDK usługi Azure Cosmos DB. Można go przypisać (za pomocą przypisania roli) na dowolnym poziomie w hierarchii usługi Azure Cosmos DB (czyli konta, bazy danych lub kontenera).

Rzeczywiste żądania metadanych dozwolone przez Microsoft.DocumentDB/databaseAccounts/readMetadata akcję zależą od zakresu przypisanego do akcji:

Scope Żądania dozwolone przez akcję
Klient • Wyświetlanie listy baz danych na koncie
• Dla każdej bazy danych na koncie dozwolone akcje w zakresie bazy danych
baza danych • Odczytywanie metadanych bazy danych
• Wyświetlanie listy kontenerów w bazie danych
• Dla każdego kontenera w bazie danych dozwolone akcje w zakresie kontenera
Kontener • Odczytywanie metadanych kontenera
• Wyświetlanie listy partycji fizycznych w kontenerze
• Rozpoznawanie adresu każdej partycji fizycznej

Ważne

Przepływność nie jest uwzględniana w metadanych tej akcji.

Wbudowane definicje ról

Usługa Azure Cosmos DB uwidacznia dwie wbudowane definicje ról:

Ważne

Tutaj termin definicje ról odnoszą się do definicji ról specyficznych dla usługi Azure Cosmos DB. Różnią się one od definicji ról kontroli dostępu na platformie Azure.

IDENTYFIKATOR Nazwisko Uwzględnione akcje
00000000-0000-0000-0000-000000000001 Wbudowany czytnik danych usługi 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 Współautor danych wbudowanych w usłudze Cosmos DB Microsoft.DocumentDB/databaseAccounts/readMetadata
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*

Tworzenie niestandardowych definicji ról

Podczas tworzenia niestandardowej definicji roli należy podać następujące elementy:

  • Nazwa konta usługi Azure Cosmos DB.
  • Grupa zasobów zawierająca konto.
  • Typ definicji roli: CustomRole.
  • Nazwa definicji roli.
  • Lista akcji , które mają być dozwolone przez rolę.
  • Co najmniej jeden zakres, do którego można przypisać definicję roli; obsługiwane zakresy to:
    • / (poziom konta),
    • /dbs/<database-name> (poziom bazy danych),
    • /dbs/<database-name>/colls/<container-name> (poziom kontenera).

Uwaga

Opisane operacje są dostępne w następujących opisano:

Korzystanie z programu Azure PowerShell

Utwórz rolę o nazwie MyReadOnlyRole zawierającą tylko akcje odczytu:

$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 "/"

Utwórz rolę o nazwie MyReadWriteRole zawierającą wszystkie akcje:

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 "/"

Wyświetl listę utworzonych definicji ról w celu pobrania ich identyfikatorów:

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>}

Przy użyciu interfejsu wiersza polecenia platformy Azure

Utwórz rolę o nazwie MyReadOnlyRole zawierającą tylko akcje odczytu w pliku o nazwie role-definition-ro.json:

{
    "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

Utwórz rolę o nazwie MyReadWriteRole zawierającą wszystkie akcje w pliku o nazwie role-definition-rw.json:

{
    "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

Wyświetl listę utworzonych definicji ról w celu pobrania ich identyfikatorów:

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"
  }
]

Korzystanie z szablonów usługi Azure Resource Manager

Aby zapoznać się z dokumentacją i przykładami użycia szablonów usługi Azure Resource Manager do tworzenia definicji ról, zobacz Microsoft.DocumentDB databaseAccounts/sqlRoleDefinitions.

Tworzenie przypisań roli

Wbudowane lub niestandardowe definicje ról można skojarzyć z tożsamościami firmy Microsoft Entra. Podczas tworzenia przypisania roli należy podać następujące elementy:

  • Nazwa konta usługi Azure Cosmos DB.

  • Grupa zasobów zawierająca konto.

  • Identyfikator definicji roli do przypisania.

  • Identyfikator podmiotu zabezpieczeń tożsamości, do której powinna zostać przypisana definicja roli.

  • Zakres przypisania roli; obsługiwane zakresy to:

    • / (poziom konta)
    • /dbs/<database-name> (poziom bazy danych)
    • /dbs/<database-name>/colls/<container-name> (poziom kontenera)

    Zakres musi być zgodny lub być podzakresem jednej z zakresów możliwych do przypisania definicji roli.

Uwaga

Jeśli chcesz utworzyć przypisanie roli dla jednostki usługi, pamiętaj, aby użyć jego identyfikatora obiektu zgodnie z opisem w sekcji Aplikacje dla przedsiębiorstw w bloku portalu Microsoft Entra ID.

Uwaga

Opisane operacje są dostępne w następujących opisano:

Korzystanie z programu Azure PowerShell

Przypisywanie roli do tożsamości:

$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

Przy użyciu interfejsu wiersza polecenia platformy Azure

Przypisywanie roli do tożsamości:

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

Korzystanie z szablonów Bicep/Azure Resource Manager

W przypadku wbudowanego przypisania przy użyciu szablonu 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>
  }
}

Aby zapoznać się z dokumentacją i przykładami użycia szablonów usługi Azure Resource Manager do tworzenia przypisań ról, zobacz Microsoft.DocumentDB databaseAccounts/sqlRoleAssignments.

Inicjowanie zestawu SDK przy użyciu identyfikatora Entra firmy Microsoft

Aby użyć kontroli dostępu opartej na rolach usługi Azure Cosmos DB w aplikacji, musisz zaktualizować sposób inicjowania zestawu SDK usługi Azure Cosmos DB. Zamiast przekazywać klucz podstawowy konta, musisz przekazać wystąpienie TokenCredential klasy. To wystąpienie udostępnia zestaw SDK usługi Azure Cosmos DB z kontekstem wymaganym do pobrania tokenu microsoft Entra w imieniu tożsamości, której chcesz użyć.

Sposób tworzenia TokenCredential wystąpienia wykracza poza zakres tego artykułu. Istnieje wiele sposobów tworzenia takiego wystąpienia w zależności od typu tożsamości Entra firmy Microsoft, której chcesz użyć (jednostki użytkownika, jednostki usługi, grupy itp.). Co najważniejsze, wystąpienie TokenCredential musi rozpoznać tożsamość (identyfikator podmiotu zabezpieczeń), do którego przypisano role. Przykłady tworzenia TokenCredential klasy można znaleźć:

W poniższych przykładach użyto jednostki usługi z wystąpieniem ClientSecretCredential .

Na platformie .NET

Kontrola dostępu oparta na rolach usługi Azure Cosmos DB jest obecnie obsługiwana w zestawie SDK platformy .NET w wersji 3.

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

W języku Java

Kontrola dostępu oparta na rolach usługi Azure Cosmos DB jest obecnie obsługiwana w zestawie JAVA SDK w wersji 4.

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();

W języku JavaScript

Kontrola dostępu oparta na rolach usługi Azure Cosmos DB jest obecnie obsługiwana w zestawie SDK języka JavaScript w wersji 3.

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

W języku Python

Kontrola dostępu oparta na rolach usługi Azure Cosmos DB jest obsługiwana w zestawie SDK języka Python w wersji 4.3.0b4 i nowszej.

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)

Uwierzytelnianie żądań w interfejsie API REST

Podczas konstruowania nagłówka autoryzacji interfejsu API REST ustaw parametr typu na Microsoft Entra ID i sygnaturę skrótu (sig) na token OAuth, jak pokazano w poniższym przykładzie:

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

Korzystanie z eksploratora danych

Uwaga

Eksplorator danych uwidoczniony w witrynie Azure Portal nie obsługuje jeszcze kontroli dostępu opartej na rolach usługi Azure Cosmos DB. Aby użyć tożsamości entra firmy Microsoft podczas eksplorowania danych, musisz zamiast tego użyć Eksploratora usługi Azure Cosmos DB.

Gdy uzyskujesz dostęp do Eksploratora usługi Azure Cosmos DB przy użyciu określonego ?feature.enableAadDataPlane=true parametru zapytania i logujesz się, do uzyskiwania dostępu do danych służy następująca logika:

  1. Żądanie pobrania klucza podstawowego konta jest podejmowane w imieniu zalogowanej tożsamości. Jeśli to żądanie powiedzie się, klucz podstawowy jest używany do uzyskiwania dostępu do danych konta.
  2. Jeśli tożsamość zalogowana nie może pobrać klucza podstawowego konta, ta tożsamość jest używana bezpośrednio do uwierzytelniania dostępu do danych. W tym trybie tożsamość musi być przypisana z odpowiednimi definicjami ról, aby zapewnić dostęp do danych.

Inspekcja żądań danych

Dzienniki diagnostyczne są rozszerzane o informacje o tożsamości i autoryzacji dla każdej operacji danych podczas korzystania z kontroli dostępu opartej na rolach usługi Azure Cosmos DB. To rozszerzenie umożliwia przeprowadzenie szczegółowej inspekcji i pobranie tożsamości firmy Microsoft Entra używanej dla każdego żądania danych wysłanego do konta usługi Azure Cosmos DB.

Te dodatkowe informacje są przepływami w kategorii dziennika DataPlaneRequests i składają się z dwóch dodatkowych kolumn:

  • aadPrincipalId_g Wyświetla identyfikator podmiotu zabezpieczeń tożsamości firmy Microsoft, która została użyta do uwierzytelnienia żądania.
  • aadAppliedRoleAssignmentId_gPokazuje przypisanie roli, które zostało uznane podczas autoryzowania żądania.

Wymuszanie kontroli dostępu opartej na rolach jako jedynej metody uwierzytelniania

W sytuacjach, w których chcesz wymusić, aby klienci mogli łączyć się z usługą Azure Cosmos DB wyłącznie za pomocą kontroli dostępu opartej na rolach, możesz wyłączyć klucze podstawowe/pomocnicze konta. W tym przypadku każde żądanie przychodzące przy użyciu klucza podstawowego/pomocniczego lub token zasobu jest aktywnie odrzucane.

Korzystanie z szablonów usługi Azure Resource Manager

Podczas tworzenia lub aktualizowania konta usługi Azure Cosmos DB przy użyciu szablonów usługi Azure Resource Manager ustaw disableLocalAuth właściwość na :true

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

Limity

  • Możesz utworzyć maksymalnie 100 definicji ról i 2000 przypisań ról na konto usługi Azure Cosmos DB.
  • Definicje ról można przypisywać tylko do tożsamości entra firmy Microsoft należących do tej samej dzierżawy usługi Microsoft Entra co konto usługi Azure Cosmos DB.
  • Rozwiązanie grupy Entra firmy Microsoft nie jest obecnie obsługiwane w przypadku tożsamości należących do ponad 200 grup.
  • Token Entra firmy Microsoft jest obecnie przekazywany jako nagłówek z każdym pojedynczym żądaniem wysyłanym do usługi Azure Cosmos DB, zwiększając ogólny rozmiar ładunku.

Często zadawane pytania

Ta sekcja zawiera często zadawane pytania dotyczące kontroli dostępu opartej na rolach i usługi Azure Cosmos DB.

Które interfejsy API usługi Azure Cosmos DB obsługują kontrolę dostępu opartą na rolach płaszczyzny danych?

Od tej pory obsługiwany jest tylko interfejs API NoSQL.

Czy można zarządzać definicjami ról i przypisaniami ról z poziomu witryny Azure Portal?

Obsługa witryny Azure Portal na potrzeby zarządzania rolami nie jest jeszcze dostępna.

Które zestawy SDK w interfejsie API usługi Azure Cosmos DB dla bazy danych NoSQL obsługują kontrolę dostępu opartą na rolach?

Obecnie obsługiwane są zestawy SDK .NET V3, Java V4, JavaScript V3 i Python V4.3+.

Czy token usługi Microsoft Entra jest automatycznie odświeżany przez zestawy SDK usługi Azure Cosmos DB po jego wygaśnięciu?

Tak.

Czy można wyłączyć użycie kluczy podstawowych/pomocniczych konta podczas korzystania z kontroli dostępu opartej na rolach?

Tak, zobacz Wymuszanie kontroli dostępu opartej na rolach jako jedynej metody uwierzytelniania.

Następne kroki