Azure Cosmos DB hesabınız için rol tabanlı erişim denetimini Microsoft Entra Kimliği ile yapılandırma

UYGULANANLAR: NoSQL

Not

Bu makale, Azure Cosmos DB'deki veri düzlemi işlemleri için rol tabanlı erişim denetimi hakkındadır. Yönetim düzlemi işlemlerini kullanıyorsanız, yönetim düzlemi işlemlerinize uygulanan rol tabanlı erişim denetimi makalesine bakın.

Azure Cosmos DB, şunları yapmanızı sağlayan yerleşik bir rol tabanlı erişim denetimi sistemi sunar:

  • Microsoft Entra kimliğiyle veri isteklerinizin kimliğini doğrular.
  • Ayrıntılı, rol tabanlı bir izin modeliyle veri isteklerinizi yetkilendinin.

Kavramlar

Azure Cosmos DB veri düzlemi rol tabanlı erişim denetimi, Azure rol tabanlı erişim denetimi gibi diğer rol tabanlı erişim denetimi sistemlerinde yaygın olarak bulunan kavramlar üzerine kurulmuştur:

  • İzin modeli bir dizi eylemden oluşur; bu eylemlerin her biri bir veya birden çok veritabanı işlemiyle eşler. Bazı eylemlere örnek olarak öğe okuma, öğe yazma veya sorgu yürütme verilebilir.
  • Azure Cosmos DB kullanıcıları, izin verilen eylemlerin listesini içeren rol tanımları oluşturur.
  • Rol tanımları, rol atamaları aracılığıyla belirli Microsoft Entra kimliklerine atanır. Rol ataması, rol tanımının uygulandığı kapsamı da tanımlar; şu anda üç kapsam vardır:
    • Bir Azure Cosmos DB hesabı,
    • Bir Azure Cosmos DB veritabanı,
    • Azure Cosmos DB kapsayıcısı.

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

İzin modeli

Önemli

Bu izin modeli yalnızca veri okuma ve yazma işlemlerini kapsar. Yönetim kaynakları üzerinde aşağıdakiler dahil olmak üzere herhangi bir yönetim işlemi türünü kapsamaz :

  • Veritabanı Oluşturma/Değiştirme/Silme
  • Kapsayıcı Oluşturma/Değiştirme/Silme
  • Kapsayıcı Aktarım Hızını Okuma/Değiştirme
  • Saklı Yordamları Oluşturma/Değiştirme/Silme/Okuma
  • Tetikleyici oluşturma/değiştirme/silme/okuma
  • Kullanıcı Tanımlı İşlevleri Oluşturma/Değiştirme/Silme/Okuma

Microsoft Entra kimliğiyle yönetim işlemlerinin kimliğini doğrulamak için herhangi bir Azure Cosmos DB veri düzlemi SDK'sını kullanamazsınız. Bunun yerine, aşağıdaki seçeneklerden biri aracılığıyla Azure rol tabanlı erişim denetimini kullanmanız gerekir:

Okuma Veritabanı ve Okuma Kapsayıcısı meta veri istekleri olarak kabul edilir. Bu işlemlere erişim, aşağıdaki bölümde belirtildiği gibi verilebilir.

Bu tabloda, izin modeli tarafından kullanıma sunulan tüm eylemler listelenir.

Veri Akışı Adı İlgili veritabanı işlemleri
Microsoft.DocumentDB/databaseAccounts/readMetadata Hesap meta verilerini okuyun. Ayrıntılar için bkz . Meta veri istekleri .
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/create Yeni öğe oluştur.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read Tek bir öğeyi kimliğine ve bölüm anahtarına göre (nokta okuma) okuyun.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/replace Var olan bir öğeyi değiştirin.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/upsert Bir öğeyi "Upsert" olarak ayarlayın. Bu işlem, henüz yoksa bir öğe oluşturur veya varsa öğeyi değiştirmek için.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/delete Öğeyi silme.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery SQL sorgusu yürütür.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed Kapsayıcının değişiklik akışından okuyun. SDK'ları kullanarak SQL sorguları yürütür.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeStoredProcedure Saklı yordamı yürütür.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/manageConflicts Çoklu yazma bölgesi hesapları için çakışmaları yönetme (çakışma akışındaki öğeleri listeleme ve silme).

Not

SDK'lar aracılığıyla sorgu yürütürken hem hem de Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQueryMicrosoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed izinler gereklidir.

Joker karakterler hem kapsayıcılarda hem de öğe düzeylerinde desteklenir:

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

Meta veri istekleri

Azure Cosmos DB SDK'ları, başlatma sırasında ve belirli veri isteklerine hizmet vermek için salt okunur meta veri istekleri oluşturur. Bu istekler aşağıdakiler gibi çeşitli yapılandırma ayrıntılarını getirir:

  • Hesabınızın, hesabın kullanılabildiği Azure bölgelerini içeren genel yapılandırması.
  • Kapsayıcılarınızın bölüm anahtarı veya dizin oluşturma ilkesi.
  • Kapsayıcıyı ve bunların adreslerini oluşturan fiziksel bölümlerin listesi.

Hesabınızda depoladığınız verilerin hiçbirini getirmez.

İzin modelimizin en iyi saydamlığını sağlamak için bu meta veri istekleri açıkça eylem kapsamındadır Microsoft.DocumentDB/databaseAccounts/readMetadata . Azure Cosmos DB hesabınıza Azure Cosmos DB SDK'larından biri aracılığıyla erişildiği her durumda bu eyleme izin verilmelidir. Azure Cosmos DB hiyerarşisinde (hesap, veritabanı veya kapsayıcı) herhangi bir düzeyde atanabilir (rol ataması aracılığıyla).

Eylem tarafından Microsoft.DocumentDB/databaseAccounts/readMetadata izin verilen gerçek meta veri istekleri, eylemin atandığı kapsama bağlıdır:

Kapsam Eylem tarafından izin verilen istekler
Firma • Hesap altındaki veritabanlarını listeleme
• Hesabın altındaki her veritabanı için veritabanı kapsamında izin verilen eylemler
Veritabanı • Veritabanı meta verilerini okuma
• Veritabanının altındaki kapsayıcıları listeleme
• Veritabanı altındaki her kapsayıcı için kapsayıcı kapsamında izin verilen eylemler
Kapsayıcı • Kapsayıcı meta verilerini okuma
• Kapsayıcının altındaki fiziksel bölümleri listeleme
• Her fiziksel bölümün adresini çözümleme

Önemli

Aktarım hızı bu eylemin meta verilerine dahil değildir.

Yerleşik rol tanımları

Azure Cosmos DB iki yerleşik rol tanımını kullanıma sunar:

Önemli

Buradaki rol tanımları terimi Azure Cosmos DB'ye özgü rol tanımlarına başvurur. Bunlar Azure rol tabanlı erişim denetimi rol tanımlarından farklıdır.

Kimlik Veri Akışı Adı Dahil edilen eylemler
00000000-0000-0000-0000-000000000001 Cosmos DB Yerleşik Veri Okuyucusu 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 Yerleşik Veri Katkıda Bulunanı Microsoft.DocumentDB/databaseAccounts/readMetadata
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*

Özel rol tanımları oluşturma

Özel rol tanımı oluştururken şunları sağlamanız gerekir:

  • Azure Cosmos DB hesabınızın adı.
  • Hesabınızı içeren kaynak grubu.
  • Rol tanımının türü: CustomRole.
  • Rol tanımının adı.
  • Rolün izin vermesini istediğiniz eylemlerin listesi.
  • Rol tanımının atanabileceği bir veya birden çok kapsam; desteklenen kapsamlar şunlardır:
    • / (hesap düzeyi),
    • /dbs/<database-name> (veritabanı düzeyi),
    • /dbs/<database-name>/colls/<container-name> (kapsayıcı düzeyi).

Not

Açıklanan işlemler şunlarda kullanılabilir:

Azure PowerShell’i kullanma

Yalnızca okuma eylemleri içeren MyReadOnlyRole adlı bir rol oluşturun:

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

Tüm eylemleri içeren MyReadWriteRole adlı bir rol oluşturun:

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

Kimliklerini getirmek için oluşturduğunuz rol tanımlarını listeleyin:

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'yı kullanma

role-definition-ro.json adlı bir dosyada yalnızca okuma eylemleri içeren MyReadOnlyRole adlı bir rol oluşturun:

{
    "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 adlı bir dosyadaki tüm eylemleri içeren MyReadWriteRole adlı bir rol oluşturun:

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

Kimliklerini getirmek için oluşturduğunuz rol tanımlarını listeleyin:

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 şablonlarını kullanma

Rol tanımları oluşturmak için Azure Resource Manager şablonlarını kullanma başvurusu ve örnekleri için bkz Microsoft.DocumentDB databaseAccounts/sqlRoleDefinitions. .

Rol atamaları oluşturma

Yerleşik veya özel rol tanımlarını Microsoft Entra kimliklerinizle ilişkilendirebilirsiniz. Rol ataması oluştururken şunları sağlamanız gerekir:

  • Azure Cosmos DB hesabınızın adı.

  • Hesabınızı içeren kaynak grubu.

  • Atanacak rol tanımının kimliği.

  • Rol tanımının atanması gereken kimliğin asıl kimliği.

  • Rol atamasının kapsamı; desteklenen kapsamlar şunlardır:

    • / (hesap düzeyi)
    • /dbs/<database-name> (veritabanı düzeyi)
    • /dbs/<database-name>/colls/<container-name> (kapsayıcı düzeyi)

    Kapsam, rol tanımının atanabilir kapsamlarından birinin alt kapsamıyla eşleşmeli veya bu kapsam olmalıdır.

Not

Hizmet sorumlusu için rol ataması oluşturmak istiyorsanız, Microsoft Entra Id portalı dikey penceresinin Kurumsal uygulamalar bölümünde bulunan Nesne Kimliğini kullandığınızdan emin olun.

Not

Açıklanan işlemler şunlarda kullanılabilir:

Azure PowerShell’i kullanma

Kimliğe rol atama:

$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'yı kullanma

Kimliğe rol atama:

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 şablonlarını kullanma

Bicep şablonu kullanan yerleşik bir atama için:

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

Rol atamaları oluşturmak için Azure Resource Manager şablonlarını kullanma başvurusu ve örnekleri için bkz Microsoft.DocumentDB databaseAccounts/sqlRoleAssignments. .

SDK'yi Microsoft Entra Id ile başlatma

Uygulamanızda Azure Cosmos DB rol tabanlı erişim denetimini kullanmak için Azure Cosmos DB SDK'sını başlatma yönteminizi güncelleştirmeniz gerekir. Hesabınızın birincil anahtarını geçirmek yerine bir sınıfın örneğini TokenCredential geçirmeniz gerekir. Bu örnek, Azure Cosmos DB SDK'sına kullanmak istediğiniz kimlik adına bir Microsoft Entra belirteci getirmek için gereken bağlamı sağlar.

Örnek oluşturma TokenCredential yönteminiz bu makalenin kapsamının dışındadır. Kullanmak istediğiniz Microsoft Entra kimliği türüne (kullanıcı sorumlusu, hizmet sorumlusu, grup vb.) bağlı olarak böyle bir örnek oluşturmanın birçok yolu vardır. En önemlisi, örneğinizin TokenCredential rollerinizi atadığınız kimliğe (asıl kimlik) çözümlenmesi gerekir. Sınıf oluşturma TokenCredential örneklerini bulabilirsiniz:

Aşağıdaki örneklerde bir örnekle hizmet ClientSecretCredential sorumlusu kullanılır.

.NET'te

Azure Cosmos DB rol tabanlı erişim denetimi şu anda .NET SDK V3'te desteklenmektedir.

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

Java üzerinde

Azure Cosmos DB rol tabanlı erişim denetimi şu anda Java SDK V4'te desteklenmektedir.

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'te

Azure Cosmos DB rol tabanlı erişim denetimi şu anda JavaScript SDK V3'te desteklenmektedir.

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

Python'da

Azure Cosmos DB rol tabanlı erişim denetimi Python SDK 4.3.0b4 ve üzeri sürümlerinde desteklenir.

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'de isteklerin kimliğini doğrulama

REST API yetkilendirme üst bilgisini oluştururken, tür parametresini Microsoft Entra Id ve karma imzasını (sig)aşağıdaki örnekte gösterildiği gibi OAuth belirtecine ayarlayın:

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

Veri gezginini kullanma

Not

Azure portalında kullanıma sunulan veri gezgini henüz Azure Cosmos DB rol tabanlı erişim denetimini desteklememektedir. Verilerinizi keşfederken Microsoft Entra kimliğinizi kullanmak için bunun yerine Azure Cosmos DB Gezgini'ni kullanmanız gerekir.

Azure Cosmos DB Gezgini'ne belirli ?feature.enableAadDataPlane=true bir sorgu parametresiyle erişip oturum açtığınızda, verilerinize erişmek için aşağıdaki mantık kullanılır:

  1. Hesabın birincil anahtarını getirme isteği, oturum açan kimlik adına denendi. Bu istek başarılı olursa, birincil anahtar hesabın verilerine erişmek için kullanılır.
  2. Oturum açan kimliğin hesabın birincil anahtarını getirmesine izin verilmiyorsa, bu kimlik doğrudan veri erişiminin kimliğini doğrulamak için kullanılır. Bu modda, veri erişimini sağlamak için kimliğin uygun rol tanımlarıyla atanması gerekir.

Veri isteklerini denetleme

Tanılama günlükleri , Azure Cosmos DB rol tabanlı erişim denetimi kullanılırken her veri işlemi için kimlik ve yetkilendirme bilgileriyle genişletilir. Bu artırma, ayrıntılı denetim gerçekleştirmenize ve Azure Cosmos DB hesabınıza gönderilen her veri isteği için kullanılan Microsoft Entra kimliğini almanıza olanak tanır.

Bu ek bilgiler DataPlaneRequests günlük kategorisinde akar ve iki ek sütundan oluşur:

Rol tabanlı erişim denetimini tek kimlik doğrulama yöntemi olarak zorlama

İstemcileri yalnızca rol tabanlı erişim denetimi aracılığıyla Azure Cosmos DB'ye bağlanmaya zorlamak istediğiniz durumlarda, hesabın birincil/ikincil anahtarlarını devre dışı bırakabilirsiniz. Bunu yaparken, birincil/ikincil anahtar veya kaynak belirteci kullanan tüm gelen istekler etkin olarak reddedilir.

Azure Resource Manager şablonlarını kullanma

Azure Resource Manager şablonlarını kullanarak Azure Cosmos DB hesabınızı oluştururken veya güncelleştirirken özelliğini olarak trueayarlayındisableLocalAuth:

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

Sınırlar

  • Azure Cosmos DB hesabı başına en çok 100 rol tanımı ve 2.000 rol ataması oluşturabilirsiniz.
  • Rol tanımlarını yalnızca Azure Cosmos DB hesabınızla aynı Microsoft Entra kiracısına ait Microsoft Entra kimliklerine atayabilirsiniz.
  • Microsoft Entra grup çözümlemesi şu anda 200'den fazla gruba ait kimlikler için desteklenmiyor.
  • Microsoft Entra belirteci şu anda Azure Cosmos DB hizmetine gönderilen her istekte üst bilgi olarak geçirilerek genel yük boyutu artırılır.

Sık sorulan sorular

Bu bölüm rol tabanlı erişim denetimi ve Azure Cosmos DB hakkında sık sorulan soruları içerir.

Hangi Azure Cosmos DB API'leri veri düzlemi rol tabanlı erişim denetimini destekler?

Şu anda yalnızca NoSQL API'sini destekliyoruz.

Rol tanımları ve rol atamaları Azure portaldan yönetilebilir mi?

Rol yönetimi için Azure portalı desteği henüz kullanılamıyor.

NoSQL için Azure Cosmos DB API'sindeki hangi SDK'lar rol tabanlı erişim denetimini destekler?

.NET V3, Java V4, JavaScript V3 ve Python V4.3+ SDK'ları şu anda desteklenmektedir.

Süresi dolan Microsoft Entra belirteci Azure Cosmos DB SDK'ları tarafından otomatik olarak yenilenir mi?

Evet.

Rol tabanlı erişim denetimi kullanılırken birincil/ikincil hesap anahtarlarının kullanımını devre dışı bırakmak mümkün mü?

Evet, bkz . Rol tabanlı erişim denetimini tek kimlik doğrulama yöntemi olarak zorlama.

Sonraki adımlar