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ı.
İ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:
- Azure Resource Manager şablonları (ARM şablonları)
- Azure PowerShell betikleri
- Azure CLI betikleri
- Azure yönetim kitaplıkları şunlarda kullanılabilir:
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/executeQuery
Microsoft.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: Az.CosmosDB sürüm 1.2.0 veya üzeri
- Azure CLI: sürüm 2.24.0 veya üzeri
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: Az.CosmosDB sürüm 1.2.0 veya üzeri
- Azure CLI: sürüm 2.24.0 veya üzeri
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:
- 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.
- 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:
aadPrincipalId_g
, isteğin kimliğini doğrulamak için kullanılan Microsoft Entra kimliğini gösterir.aadAppliedRoleAssignmentId_g
, isteği yetkilendirirken yerine getirilmesi gereken rol atamasını gösterir.
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 true
ayarlayı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
- Azure Cosmos DB'de verilere güvenli erişime genel bir bakış edinin.
- Azure Cosmos DB yönetimi için rol tabanlı erişim denetimi hakkında daha fazla bilgi edinin.