Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure DocumentDB, yerel DocumentDB kimlik doğrulamasının yanı sıra Microsoft Entra Kimliğini de destekler. Her küme yerel kimlik doğrulaması etkin ve yerleşik bir yönetici kullanıcı ile oluşturulur.
Rol tabanlı erişim denetimi, Microsoft Entra Id aracılığıyla izinleri atamak ve zorunlu kılmak için merkezi bir mekanizma sağlar ve kümelerinizde yalnızca yetkili kimliklerin işlem gerçekleştirebildiğinden emin olur. Bu yaklaşım idareyi basitleştirir, en düşük ayrıcalık ilkelerini destekler ve denetimi basitleştirir; kuruluşların dağıtımlar büyüdükçe operasyonel bütünlüğü ve uyumluluğu sürdürmelerine yardımcı olur. Azure DocumentDB'de erişimi yönetmek iki ayrı düzey içerir:
- Kümeyi azure kaynağı olarak yönetmek için Azure rol tabanlı erişim (meta verileri okuma, güvenlik duvarı kurallarını yönetme ve özel uç noktaları yapılandırma gibi)
- Kümedeki veritabanları ve koleksiyonlar içindeki verileri okumak ve yazmak için DocumentDB erişimi.
Microsoft Entra Kimliklerini etkinleştirerek Microsoft Entra sorumlularının (kullanıcılar, hizmet sorumluları veya yönetilen kimlikler) kümede kimlik doğrulaması yapmasına izin verin. Microsoft Entra ID kimlik doğrulaması OpenID Connect (OIDC) kullanılarak uygulanır. İstemciler MongoDB sürücüsüne Entra tarafından verilen bir OIDC erişim belirteci sunar. Kümede yerel kimlik doğrulaması etkinleştirilmelidir; desteklenen yapılandırmalar yalnızca yerel veya Yalnızca Microsoft Entra Id kimlik doğrulaması veya yerel ve Microsoft Entra Id kimlik doğrulamasıdır.
Note
Sağlamadan sonra istediğiniz zaman bir kümede kimlik doğrulama yöntemlerini etkinleştirebilir veya değiştirebilirsiniz. Kimlik doğrulama yöntemlerinin değiştirilmesi kümenin yeniden başlatılmasını gerektirmez ve kesintisiz bir işlemdir. Bir küme oluşturulduğunda yerel DocumentDB kimlik doğrulaması etkinleştirilmelidir. Küme sağlama tamamlandıktan sonra yerel kimlik doğrulamasını devre dışı bırakabilirsiniz.
Kimlik doğrulaması için Microsoft Entra Id kullanmanın avantajları şunlardır:
- Azure hizmetlerinde tekdüzen kimlik ve oturum açma.
- Kimlik bilgilerinin, parola ilkelerinin ve yenilemenin merkezi yönetimi.
- Microsoft Entra ID'den parolasız ve çok faktörlü kimlik doğrulama yöntemleri için destek.
- Uygulamalar için belirteç tabanlı kimlik doğrulaması, depolanan parolaları ortadan kaldırır.
Microsoft Entra Id kimlik doğrulaması etkinleştirildiğinde, bir veya daha fazla Microsoft Entra sorumlusunu kümede yönetici veya yönetici olmayan kullanıcılar olarak kaydedebilirsiniz. Kayıtlı prensipaller, Microsoft.DocumentDB/mongoClusters/users altında Azure kaynakları olur ve veritabanına kopyalanır; bu prensipalleri MongoDB veritabanı rolleriyle eşleştirmek, ilgili veritabanı ayrıcalıklarını atar. Bu kimlik doğrulama biçimi, insan kullanıcılar, hizmet ilkeleri (uygulamalar), kullanıcı tarafından atanan ve sistem tarafından atanan yönetilen kimlikler olmak üzere birden fazla ana türünü destekler.
Note
Birden çok Microsoft Entra Id kimliklerini ve kimlik türlerini aynı anda bir kümenin yöneticisi olarak yapılandırabilirsiniz. Microsoft Entra Id kimlik türleri şunları içerir ancak bunlarla sınırlı değildir:
- İnsan kimlikleri
- Kullanıcı tarafından atanan yönetilen kimlikler
- Sistem tarafından atanan yönetilen kimlikler
- İş yükü kimlikleri
Tüm kimlik türleri aynı anda yönetici olabilir.
Yönetici kullanıcılar kümeyi ve verilerini yönetmek için tam ayrıcalıklara sahiptir. Yönetici ayrıcalıkları gerektirmeyen devam eden üretim görevleri için yönetici olmayan kullanıcılar eklenebilir. Yönetici olmayan kullanıcılar genellikle belirli veritabanlarına salt okunur veya okuma-yazma erişimi gibi kısıtlanmış rollere sahiptir, ancak küme genelinde yönetim eylemleri gerçekleştirme yeteneğine sahip değildir.
Bu özelliği kullanmadan önce aşağıdaki noktaları gözden geçirin:
- Birincil kümede ve çoğaltma kümesinde kimlik doğrulama yöntemleri bağımsız olarak yönetilir.
- Microsoft Entra ilkeleri küme meta verisi içerisinde kalıcıdır. Bir sorumlu Microsoft Entra Kimliği'nden silinirse, ilgili küme kullanıcısı kalır ancak artık yeni belirteçleri edinemez. Mevcut belirteçler süresi dolana kadar geçerli kalır (genellikle belirtecin verilmesinden itibaren 90 dakikaya kadar).
- Erişimi hemen iptal etmek için sorumluyu kümeden kaldırın (kaynağı silin
users/<principal-id>) ve ilişkili veritabanı rollerini bırakın; veritabanı yöneticileri, silinen sorumlular için sahiplik aktarımını veya temizlemeyi işlemelidir.
Important
Erişim Belirteci Geçerliliği ve GüvenlikLe İlgili Dikkat Edilmesi Gerekenler:
Microsoft Entra Id tarafından verilen erişim belirtecinin ömrü, belirtecin gizliliği ihlal edilirse olası en yüksek saldırı penceresini temsil eder. Kötü amaçlı bir aktör geçerli bir erişim belirteci alır ve bağlantı kurarsa, ilişkili yenileme belirteci iptal edilmiş veya kullanıcı hesabı devre dışı bırakılmış olsa bile sistem, süresi dolana kadar bu belirteci kullanan istekleri kabul etmeye devam edebilir.
Entra içinde erişim belirtecini iptal etme açıklandığı gibi yönergeleri izlemenizi öneririz
Prerequisites
Azure aboneliği
- Azure aboneliğiniz yoksa ücretsiz bir hesap oluşturun
Mevcut bir Azure DocumentDB kümesi
- Kümeniz yoksa yeni bir küme oluşturun
- Microsoft Entra Id'de bir veya daha fazla mevcut kimlik.
Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz. Azure Cloud Shell'i kullanmaya başlama.
CLI referans komutlarını yerel olarak çalıştırmayı tercih ediyorsanız, Azure CLI'yi yükleyin. Windows veya macOS üzerinde çalışıyorsanız, Azure CLI'yi bir Docker konteynerinde çalıştırmayı düşünün. Daha fazla bilgi için Azure CLI'nin bir Docker konteynerında nasıl çalıştırılacağını inceleyin.
Yerel bir kurulum kullanıyorsanız, az login komutunu kullanarak Azure CLI'ye giriş yapın. Kimlik doğrulama işlemini tamamlamak için, terminalinizde görüntülenen adımları takip edin. Diğer oturum açma seçenekleri için bkz. Azure CLI kullanarak Azure'da kimlik doğrulaması.
İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma ve yönetme.
Yüklü olan sürümü ve bağımlı kütüphaneleri bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.
- Terraform 1.2.0 veya üzeri.
Azure rol tabanlı erişim denetimini yönetme
Azure rol tabanlı erişim denetimi, verileri yönetmeden Bir Azure hizmetinin kaynaklarını yönetme özelliğini ifade eder. Örneğin, Azure DocumentDB kümeleri için rol tabanlı erişim şunları içerebilir:
- Tüm hesap ve kaynak meta verilerini okuma
- Bağlantı dizelerini okuma ve yeniden oluşturma
- Veritabanlarını ve koleksiyonları yönetme
- Hesap özelliklerini değiştirme
Azure DocumentDB, kaynak türü için mongoCluster Azure rol tabanlı erişim denetimini destekler. Kaynak türü için aşağıdaki mongoCluster, bireysel atamalar ve özel rol tabanlı erişim denetimi rol oluşturma için Azure rol tabanlı erişim denetiminde kullanılabilir:
| Description | |
|---|---|
Microsoft.DocumentDB/mongoClusters/read |
Bir mongoCluster kaynağı okur veya tüm mongoCluster kaynakları listeler. |
Microsoft.DocumentDB/mongoClusters/write |
Belirtilen mongoCluster kaynağın özelliklerini veya etiketlerini oluşturun veya güncelleştirin. |
Microsoft.DocumentDB/mongoClusters/delete |
Belirtilen mongoCluster kaynağı siler. |
Microsoft.DocumentDB/mongoClusters/PrivateEndpointConnectionsApproval/action |
Kaynağın mongoCluster özel uç nokta bağlantısını yönetme |
Microsoft.DocumentDB/mongoClusters/listConnectionStrings/action |
Belirli mongoCluster bir kaynak için bağlantı dizelerini listeleme |
Microsoft.DocumentDB/mongoClusters/firewallRules/read |
Bir güvenlik duvarı kuralını okur veya belirtilen mongoCluster kaynak için tüm güvenlik duvarı kurallarını listeler. |
Microsoft.DocumentDB/mongoClusters/firewallRules/write |
Belirtilen mongoCluster kaynakta güvenlik duvarı kuralı oluşturun veya güncelleştirin. |
Microsoft.DocumentDB/mongoClusters/firewallRules/delete |
Belirtilen mongoCluster kaynak için var olan bir güvenlik duvarı kuralını siler. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnectionProxies/read |
Belirtilen mongoCluster kaynak için özel uç nokta bağlantı ara sunucusunu okur. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnectionProxies/write |
Belirtilen mongoCluster bir kaynakta özel uç nokta bağlantı ara sunucusu oluşturun veya güncelleştirin. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnectionProxies/delete |
Belirtilen mongoCluster kaynak için var olan bir özel uç nokta bağlantı proxy'sini siler. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnectionProxies/validate/action |
Belirtilen mongoCluster kaynak için özel uç nokta bağlantı ara sunucusunu doğrular. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnections/read |
Özel uç nokta bağlantısını okur veya belirtilen mongoCluster kaynak için tüm özel uç nokta bağlantısını listeler. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnections/write |
Belirtilen mongoCluster bir kaynakta özel uç nokta bağlantısı oluşturun veya güncelleştirin. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnections/delete |
Belirtilen mongoCluster kaynak için var olan bir özel uç nokta bağlantısını siler. |
Microsoft.DocumentDB/mongoClusters/privateLinkResources/read |
Özel bağlantı kaynağını okur veya belirtilen mongoCluster kaynak için tüm özel bağlantı kaynaklarını listeler. |
Microsoft.DocumentDB/mongoClusters/users/read |
Bir kullanıcıyı okur veya belirtilen mongoCluster kaynak için tüm kullanıcıları listeler. |
Microsoft.DocumentDB/mongoClusters/users/write |
Belirtilen mongoCluster kaynakta kullanıcı oluşturun veya güncelleştirin. |
Microsoft.DocumentDB/mongoClusters/users/delete |
Belirtilen mongoCluster kaynak için var olan bir kullanıcıyı siler. |
Yeni bir terminal açın.
Azure CLI'da oturum açın.
Geçerli kaynak grubunuzun meta verilerini almak için kullanın
az group show.az group show \ --name "<name-of-existing-resource-group>"Önceki komutun çıkışını gözlemleyin. Bu kaynak grubu için
idözelliğinin değerini kaydedin, çünkü bu değer bir sonraki adımda kullanılacaktır.{ "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example", "location": "westus", "name": "msdocs-identity-example", "type": "Microsoft.Resources/resourceGroups" }Note
Bu örnekte
iddeğeri olacaktır/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example. Bu örnekte kurgusal veriler kullanılır ve tanımlayıcınız bu örnekten farklı olabilir. Bu dizgi, çıkış verisinin kesilmiş bir örneğidir.role-definition.jsonadlı yeni bir JSON dosyası oluşturun. dosyasında, burada listelenen değerleri belirterek bu kaynak tanımını oluşturun.
AssignableScopesListe için, önceki adımda kaydedilen kaynak grubunun özelliğini ekleyinid.{ "Name": "Azure DocumentDB RBAC Owner", "IsCustom": true, "Description": "Can perform all Azure role-based access control actions for Azure DocumentDB clusters.", "Actions": [ "Microsoft.DocumentDb/mongoClusters/*" ], "AssignableScopes": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example" ] }Note
Bu örnek,
/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-exampleönceki adımda kaydedilen değeri kullanır. Gerçek kaynak tanımlayıcınız farklı olabilir.kullanarak
az role definition createyeni bir rol tanımı oluşturun. dosyasını--role-definitionolarak kullanın.az role definition create \ --role-definition role-definition.jsonTanım oluşturma komutundan çıktıyı gözden geçirin. Çıkış,
idözelliğinde rol tanımının benzersiz tanımlayıcısını içerir. Bu değeri, bu kılavuzun devamında yer alan atama adımında kullanılması gerektiği şekilde kaydedin.{ "assignableScopes": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example" ], "description": "Can perform all Azure role-based access control actions for Azure DocumentDB clusters.", "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1", "name": "e4e4e4e4-ffff-aaaa-bbbb-c5c5c5c5c5c5", "permissions": [ { "actions": [ "Microsoft.DocumentDb/*" ] } ], "roleName": "Azure DocumentDB RBAC Owner", "roleType": "CustomRole" }Note
Bu örnekte
iddeğeri olacaktır/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1. Bu örnekte kurgusal veriler kullanılır ve tanımlayıcınız bu örnekten farklı olabilir. Bu örnek, netlik için dağıtımdan alınan tipik JSON alt kümesidir.
Yeni bir terminal açın.
Azure CLI'da oturum açın.
Rol tanımınızı tanımlamak için yeni bir Bicep dosyası oluşturun. Dosyaya control-plane-role-definition.bicep adını verin. Bunları
actionstanıma ekleyin:Description Microsoft.DocumentDb/mongoClusters/*Tüm olası eylemleri etkinleştirir. metadata description = 'Create RBAC definition for Azure role-based access control access to Azure DocumentDB.' @description('Name of the role definition.') param roleDefinitionName string = 'Azure DocumentDB RBAC Owner' @description('Description of the role definition.') param roleDefinitionDescription string = 'Can perform all Azure role-based access control actions for Azure DocumentDB clusters.' resource definition 'Microsoft.Authorization/roleDefinitions@2022-04-01' = { name: guid(subscription().id, resourceGroup().id, roleDefinitionName) scope: resourceGroup() properties: { roleName: roleDefinitionName description: roleDefinitionDescription type: 'CustomRole' permissions: [ { actions: [ 'Microsoft.DocumentDb/mongoClusters/*' ] } ] assignableScopes: [ resourceGroup().id ] } } output definitionId string = definition.idaz deployment group createkullanarak Bicep şablonunu dağıtın. Bicep şablonunun ve Azure kaynak grubunun adını belirtin.az deployment group create \ --resource-group "<name-of-existing-resource-group>" \ --template-file control-plane-role-definition.bicepDağıtım çıktısını gözden geçirin. Çıkış,
properties.outputs.definitionId.valueözelliğinde rol tanımının benzersiz tanımlayıcısını içerir. Bu değeri, bu kılavuzun devamında yer alan atama adımında kullanılması gerektiği şekilde kaydedin.{ "properties": { "outputs": { "definitionId": { "type": "String", "value": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1" } } } }Note
Bu örnekte
iddeğeri olacaktır/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1. Bu örnekte kurgusal veriler kullanılır ve tanımlayıcınız bu örnekten farklı olabilir. Bu örnek, netlik için dağıtımdan alınan tipik JSON alt kümesidir.Rol atamanızı tanımlamak için yeni bir Bicep dosyası oluşturun. Dosyaya control-plane-role-assignment.bicep adını verin.
metadata description = 'Assign RBAC role for Azure role-based access control access to Azure DocumentDB.' @description('Id of the role definition to assign to the targeted principal in the context of the cluster.') param roleDefinitionId string @description('Id of the identity/principal to assign this role in the context of the cluster.') param identityId string resource assignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = { name: guid(subscription().id, resourceGroup().id, roleDefinitionId, identityId) scope: resourceGroup() properties: { roleDefinitionId: roleDefinitionId principalId: identityId } }control-plane-role-assignment adlı yeni bir Bicep parametre dosyası oluşturun .
bicepparam. Bu parametreler dosyasında; parametresine önceden kaydedilmiş rol tanımı tanımlayıcılarınıroleDefinitionIdve parametreye kimliğinizin benzersiz tanımlayıcısını atayınidentityId.using './control-plane-role-assignment.bicep' param roleDefinitionId = '<id-of-new-role-definition>' param identityId = '<id-of-existing-identity>'Bu Bicep şablonunu
az deployment group createkullanarak dağıtın.az deployment group create \ --resource-group "<name-of-existing-resource-group>" \ --parameters control-plane-role-assignment.bicepparam \ --template-file control-plane-role-assignment.bicep
Azure portalında (https://portal.azure.com) oturum açın.
Genel arama çubuğuna Kaynak grubu girin.
Hizmetler'deKaynak grupları'ı seçin.
Kaynak grupları bölmesinde mevcut kaynak grubunuzu seçin.
Kaynak grubunun bölmesinde, hizmet menüsünde Erişim denetimi (IAM) öğesini seçin.
Erişim denetimi (IAM) bölmesinde Ekle'yi seçin. Ardından Özel rol ekle'yi seçin.
Temel bilgiler bölmesinde aşağıdaki seçenekleri yapılandırın ve İleri'yi seçin:
Value Özel rol adı Azure DocumentDB RBAC OwnerTanım Can perform all Azure role-based access control actions for Azure DocumentDB clusters.Temel izinler Sıfırdan başlayın İzinler bölmesinde İzinekle'yi seçin. Ardından, izinler iletişim kutusunda öğesini
DocumentDBarayın. Son olarak Microsoft.DocumentDB/mongoClusters seçeneğini belirleyin.İzinler iletişim kutusunda için tüm
Microsoft.DocumentDB/mongoClustersseçin. Ardından Ekle'yi seçerek *İzinler bölmesine dönün.İzinler bölmesine dönüp izin listesini inceleyin. Ardından Gözden Geçir ve oluştur'u seçin.
Gözden Geçir + oluştur bölmesinde, yeni rol tanımı için belirtilen seçenekleri gözden geçirin. Son olarak Oluştur'u seçin.
Portalın rol tanımını oluşturmayı tamamlanmasını bekleyin.
Erişim denetimi (IAM) bölmesinde Ekle'yi ve ardından Rol ataması ekle'yi seçin.
Rol bölmesinde, bu kılavuzun önceki bölümlerinde oluşturulan
Azure DocumentDBrolünü arayın ve seçin. Ardından İleri'yi seçin.Tip
İsteğe bağlı olarak rol listesini yalnızca özel rolleri içerecek şekilde filtreleyebilirsiniz.
Üyeler bölmesinde Üyeleri seç seçeneğini belirleyin. Üyeler iletişim kutusunda, Azure DocumentDB kümeleriniz için bu erişim düzeyini vermek istediğiniz kimliği seçin ve seçiminizi onaylamak için Seç seçeneğini kullanın.
Üyeler bölmesine geri dönün, seçili üyeyi[s] gözden geçirin ve Gözden Geçir + Ata'yı seçin.
Gözden Geçir ve ata bölmesinde, yeni rol ataması için belirtilen seçenekleri gözden geçirin. Son olarak Gözden geçir + ata seçin.
Portalın rol atamasını oluşturmayı tamamlanmasını bekleyin.
Yeni bir terminal açın.
Azure CLI'da oturum açın.
Hedef Azure aboneliğinizi denetleyin.
az account showRol tanımınızı tanımlamak için yeni bir Terraform dosyası oluşturun. Dosyaya control-plane-role-definition adını verin.
tf. Bunlarıactionstanıma ekleyin:Description Microsoft.DocumentDb/mongoClusters/*Tüm olası eylemleri etkinleştirir. variable "role_definition_name" { type = string description = "Name of the role definition." default = "Azure DocumentDB RBAC Owner" } variable "role_definition_description" { type = string description = "Description of the role definition." default = "Can perform all Azure role-based access control actions for Azure DocumentDB clusters." } terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} } data "azurerm_client_config" "current" {} data "azurerm_resource_group" "existing" { name = "<name-of-existing-resource-group>" } resource "azurerm_role_definition" "control_plane" { name = var.role_definition_name scope = data.azurerm_resource_group.existing.id description = var.role_definition_description permissions { actions = [ "Microsoft.DocumentDb/mongoClusters/*" ] } assignable_scopes = [ data.azurerm_resource_group.existing.id ] } output "definition_id" { value = azurerm_role_definition.control_plane.id }Terraform dağıtımını başlatın.
terraform init --upgradeRol tanımı için bir yürütme planı oluşturun ve bunu role-definition.tfplan adlı bir dosyaya kaydedin.
ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform plan --out "role-definition.tfplan"Rol tanımını Azure'a dağıtmak için yürütme planını uygulayın.
ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform apply "role-definition.tfplan"Dağıtım çıktısını gözden geçirin. Çıkış,
definition_idözelliğinde rol tanımının benzersiz tanımlayıcısını içerir. Bu değeri, bu kılavuzun devamında yer alan atama adımında kullanılması gerektiği şekilde kaydedin.Rol atamanızı tanımlamak için yeni bir Terraform dosyası oluşturun. Dosyaya control-plane-role-assignment adını verin.
tf.variable "role_definition_id" { type = string description = "Id of the role definition to assign to the targeted principal in the context of the cluster." } variable "identity_id" { type = string description = "Id of the identity/principal to assign this role in the context of the cluster." } terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} } data "azurerm_resource_group" "existing" { name = "<name-of-existing-resource-group>" } resource "azurerm_role_assignment" "control_plane" { scope = data.azurerm_resource_group.existing.id role_definition_id = var.role_definition_id principal_id = var.identity_id }control-plane-role-assignment.tfvars adlı yeni bir Terraform değişkenleri dosyası oluşturun. Bu değişkenler dosyasında; değişkenine daha önce kaydedilmiş rol tanımı tanımlayıcılarını
role_definition_idve değişkenine kimliğinizin benzersiz tanımlayıcısını atayınidentity_id.role_definition_id = "<id-of-new-role-definition>" identity_id = "<id-of-existing-identity>"Bu Terraform yapılandırmasını başlatın ve uygulayın.
terraform init --upgradeARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform plan --var-file="control-plane-role-assignment.tfvars" --out "role-assignment.tfplan"ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform apply "role-assignment.tfplan"
Microsoft Entra ID kimlik doğrulamasını etkinleştirme
Azure DocumentDB kümesi oluşturduğunuzda, küme varsayılan olarak yalnızca yerel kimlik doğrulamasını kullanacak şekilde yapılandırılır. Microsoft Entra Id kullanarak kimlik doğrulamasını etkinleştirmek için Microsoft Entra ID kimlik doğrulama yöntemini açın ve kümeye Microsoft Entra ID kimlikleri ekleyin.
kullanarak
az ad signed-in-useroturum açmış durumdaki hesabın ayrıntılarını alın.az ad signed-in-user showkomutu, çeşitli alanları içeren bir JSON yanıtı oluşturur.
{ "@odata.context": "<https://graph.microsoft.com/v1.0/$metadata#users/$entity>", "businessPhones": [], "displayName": "Kai Carter", "givenName": "Kai", "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "jobTitle": "Senior Sales Representative", "mail": "<kai@adventure-works.com>", "mobilePhone": null, "officeLocation": "Redmond", "preferredLanguage": null, "surname": "Carter", "userPrincipalName": "<kai@adventure-works.com>" }Tip
idalanının değerini kaydedin. Bu örnekte bu değer olacaktıraaaaaaaa-0000-1111-2222-bbbbbbbbbbbb. Bu değer daha sonra, hesabınızın şu anki Azure kaynaklarına rol tabanlı erişim denetimi izinleri vermek için farklı betiklerde kullanılabilir. Yönetilen kimlik yerine bir kimlik kullanıyorsanız, o yönetilen kimlik içinidalmak üzereaz identity showkomutunu kullanabilirsiniz.Microsoft Entra ID kimlik doğrulamasını kümede etkinleştirin: Küme kaynağını
MicrosoftEntraIDkodunuauthConfig.allowedModesdizisine ekleyerek güncelleyin.az resource patch \ --resource-group "<resource-group>" \ --name "<cluster-name>" \ --resource-type "Microsoft.DocumentDB/mongoClusters" \ --properties '{"authConfig":{"allowedModes":["MicrosoftEntraID","NativeAuth"]}}' \ --latest-include-previewNote
Değerlerinizi
<resource-group>ve<cluster-name>ile değiştirin.kullanarak
authConfigkümedekiaz resource showözelliğini okuyarak değişikliğin uygulandığını doğrulayın.az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>" \ --resource-type "Microsoft.DocumentDB/mongoClusters" \ --query "properties.authConfig" \ --latest-include-previewNote
Çıkış,
allowedModeslistesini içermelidir. Microsoft Entra Kimliği başarıyla etkinleştirildiyse, dizi hemNativeAuthhem deMicrosoftEntraIDiçerir.
(İsteğe bağlı) Kümeye kaydetmeyi planladığınız Microsoft Entra sorumlusunun benzersiz tanımlayıcısını alın. Aşağıdaki komutlardan birini kullanarak Azure CLI ile edinebilirsiniz:
Geçerli oturum açma kimliği
az ad signed-in-user showKolay anlaşılır ad kullanan başka bir insan kimliği
az ad user show \ --id "<user-alias-and-domain>"Uygulama tanımlayıcısı kullanan hizmet sorumlusu
az ad sp show \ --id "<application-id>"Kaynak grubu ve adı kullanarak yönetilen kimlik
az identity show \ --resource-group "<resource-group>" \ --name "<managed-identity-name>"
Kümeyi
authConfigMicrosoft Entra ID içerecek şekilde güncelleştiren basit bir Bicep şablonu oluşturun (farklıenable-entra-id.bicepkaydet):param clusterName string param location string = resourceGroup().location resource cluster 'Microsoft.DocumentDB/mongoClusters@2025-09-01' = { name: clusterName location: location properties: { authConfig: { allowedModes: [ 'MicrosoftEntraID' 'NativeAuth' ] } } }Kümeyi güncelleştirmek için şablonu dağıtın:
az deployment group create \ --resource-group "<resource-group>" \ --template-file enable-entra-id.bicep \ --parameters clusterName="<cluster-name>"authConfigkullanarakaz resource showkümedeki özelliğini doğrulayın.az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>" \ --resource-type "Microsoft.DocumentDB/mongoClusters" \ --query "properties.authConfig" \ --latest-include-previewNote
Çıkış,
allowedModeslistesini içermelidir. Microsoft Entra Kimliği başarıyla etkinleştirildiyse, dizi hemNativeAuthhem deMicrosoftEntraIDiçerir.
Azure portalının Giriş bölmesinde Microsoft Entra Id seçeneğini bulun ve seçin.
Tip
Bu seçenek listelenmiyorsa Diğer hizmetler'i seçin ve ardından "Entra" arama terimini kullanarak Microsoft Entra Id araması yapın.
Microsoft Entra Id kiracısının Genel Bakış bölmesinde, hizmet menüsünün Yönet bölümünde Kullanıcılar'ı seçin.
Kullanıcı listesinde, hakkında daha fazla ayrıntı almak istediğiniz kimliği (kullanıcı) seçin.
Note
Bu ekran görüntüsü, " Kai Carter" adlı örnek bir kullanıcıyı ve bir yönetici
kai@adventure-works.comile göstermektedir.Belirli bir kullanıcının ayrıntılar bölmesinde Nesne Kimliği özelliğinin değerini gözlemleyin.
Tip
Nesne Kimliği özelliğinin değerini kaydedin. Bu örnekte bu değer olacaktır
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb. Bu değer daha sonra, hesabınızın şu anki Azure kaynaklarına rol tabanlı erişim denetimi izinleri vermek için farklı betiklerde kullanılabilir. Yönetilen kimlik kullanıyorsanız adımlar benzerdir.Mevcut Azure DocumentDB küme kaynağına gidin.
Küme menüsünde, Ayarlar'ın altında Kimlik Doğrulaması'nı seçin.
Kimlik doğrulama yöntemleri bölümünde Yerel DocumentDB ve Microsoft Entra Id'yi seçerek yerel kimlik doğrulamasının yanı sıra Microsoft Entra ID kimlik doğrulamasını etkinleştirin.
Değişikliği kalıcı hale getirmek için Kaydet'i seçin.
Kimlik doğrulama yöntemleri bölümünde artık hem NativeAuth hem de MicrosoftEntraID etkin yöntemler olarak listelenmelidir.
(İsteğe bağlı) Kümeye kaydetmeyi planladığınız Microsoft Entra sorumlusunun benzersiz tanımlayıcısını alın. Aşağıdaki komutlardan birini kullanarak Azure CLI ile edinebilirsiniz:
Geçerli oturum açma kimliği
az ad signed-in-user showKolay anlaşılır ad kullanan başka bir insan kimliği
az ad user show \ --id "<user-alias-and-domain>"Uygulama tanımlayıcısı kullanan hizmet sorumlusu
az ad sp show \ --id "<application-id>"Kaynak grubu ve adı kullanarak yönetilen kimlik
az identity show \ --resource-group "<resource-group>" \ --name "<managed-identity-name>"
Mevcut kümenizde Microsoft Entra Id kimlik doğrulamasını etkinleştirmek için bir Terraform yapılandırma dosyası oluşturun. Dosyayı enable-entra-id olarak kaydedin.
tf:variable "cluster_name" { type = string description = "Name of the existing cluster" } variable "resource_group_name" { type = string description = "Name of the existing resource group" } terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} } data "azurerm_resource_group" "existing" { name = var.resource_group_name } data "azurerm_mongo_cluster" "existing" { name = var.cluster_name resource_group_name = data.azurerm_resource_group.existing.name } resource "azurerm_mongo_cluster" "enable_entra" { name = data.azurerm_mongo_cluster.existing.name resource_group_name = data.azurerm_resource_group.existing.name location = data.azurerm_mongo_cluster.existing.location administrator_username = data.azurerm_mongo_cluster.existing.administrator_username administrator_password = data.azurerm_mongo_cluster.existing.administrator_password shard_count = data.azurerm_mongo_cluster.existing.shard_count compute_tier = data.azurerm_mongo_cluster.existing.compute_tier high_availability_mode = data.azurerm_mongo_cluster.existing.high_availability_mode storage_size_in_gb = data.azurerm_mongo_cluster.existing.storage_size_in_gb version = data.azurerm_mongo_cluster.existing.version # Enable both Microsoft Entra ID and Native authentication authentication_enabled = true }Tip
Kaynağı kullanma
azurerm_mongo_clusterseçenekleri hakkında daha fazla bilgi için Terraform Registry'deki sağlayıcı belgelerine bakınazurerm.Küme ayrıntılarınızla enable-entra-id.tfvars adlı bir değişken dosyası oluşturun:
cluster_name = "<cluster-name>" resource_group_name = "<resource-group>"Microsoft Entra ID kimlik doğrulamasını etkinleştirmek için Terraform yapılandırmasını başlatın ve uygulayın:
terraform init --upgradeARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform plan --var-file="enable-entra-id.tfvars" --out "enable-entra.tfplan"ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform apply "enable-entra.tfplan"authConfigkullanarakaz resource showkümedeki özelliğini doğrulayın.az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>" \ --resource-type "Microsoft.DocumentDB/mongoClusters" \ --query "properties.authConfig" \ --latest-include-previewNote
Çıkış,
allowedModeslistesini içermelidir. Microsoft Entra Kimliği başarıyla etkinleştirildiyse, dizi hemNativeAuthhem deMicrosoftEntraIDiçerir.
DocumentDB'nin Microsoft Entra ID kimliklerini ve yerel kullanıcılarını yönetme
Azure DocumentDB kümesinde Microsoft Entra Id kimlik doğrulaması etkinleştirildiğinde, bir veya daha fazla Microsoft Entra ID sorumlusunu bu kümeye yönetici kullanıcı olarak ekleyebilirsiniz. Microsoft Entra ID yöneticisi bir Microsoft Entra ID kullanıcısı, hizmet sorumlusu veya yönetilen kimlik olabilir. İstediğiniz zaman birden çok Microsoft Entra Id yöneticisi yapılandırılabilir.
Yönetim Entra ID kullanıcıları, Microsoft.DocumentDB/mongoClusters/users altında Azure varlıkları olarak atanır ve veritabanına çoğaltılır.
Ayrıca, Microsoft Entra Id kimlik doğrulaması etkinleştirildikten sonra herhangi bir zamanda bir veya daha fazla yönetici olmayan Microsoft Entra ID kullanıcısı kümeye eklenebilir. Yönetici olmayan kullanıcılar genellikle yönetim ayrıcalıkları gerektirmeyen devam eden üretim görevleri için kullanılır.
Azure DocumentDB için bu erişim, Microsoft Entra sorumlularının kümeye kaydedilip MongoDB veritabanı rolleriyle (örneğin, bir veritabanında readWrite veya root veritabanında admin gibi) eşleştirilmesiyle verilir. Kayıtlı ilkeler, Microsoft.DocumentDB/mongoClusters/users biçiminde adları olan <cluster-name>/users/<principal-id> türünden Azure kaynakları olarak oluşturulur.
Yönetici kullanıcılar, tam kullanıcı yönetimi özellikleri de dahil olmak üzere kümeyi ve verilerini yönetmek için tam ayrıcalıklara sahiptir. Yönetici olmayan kullanıcılara, belirli MongoDB veritabanı rolleri aracılığıyla küme üzerinde okuma-yazma veya salt okunur izinler verilebilir. readWriteAnyDatabase ve clusterAdmin rolleri, veritabanı yönetimi ve veritabanı işlemleri ayrıcalıkları dahil olmak üzere küme üzerinde tam okuma-yazma izinleri verir. readAnyDatabase rolü, küme üzerinde salt okunur izinler vermek için kullanılır. readWriteAnyDatabase ve clusterAdmin rollerini ayrı ayrı atayamazsınız; tam okuma-yazma erişimi için birlikte verilmelidir.
Aşağıdaki tabloda açıklandığı gibi, yönetici olmayan (ikincil) kullanıcılara ve güvenlik sorumlularına kümede sınırlı kullanıcı yönetimi izinleri verilir:
| Güvenlik sağlayıcısı | Rol | Kullanıcı Oluştur | Kullanıcıyı Sil | KullanıcıyıGüncelle | ListUser |
|---|---|---|---|---|---|
| Microsoft Entra Kimliği | Okuma-yazma (readWriteAnyDatabase, clusterAdmin) | ❌ | ❌ | ❌ | ✔️ |
| Microsoft Entra Kimliği | Salt okunur (readAnyDatabase) | ❌ | ❌ | ❌ | ✔️ |
| Doğal DocumentDB | Okuma-yazma (readWriteAnyDatabase, clusterAdmin) | ❌ | ❌ | Yalnızca kendi parolasını değiştirebilir. | ✔️ |
| Doğal DocumentDB | Salt okunur (readAnyDatabase) | ❌ | ❌ | Yalnızca kendi parolasını değiştirebilir. | ✔️ |
Aşağıdaki komutlardan birini kullanarak erişim vermek istediğiniz Microsoft Entra sorumlusunun benzersiz tanımlayıcısını (nesne kimliği) alın:
Geçerli oturum açma kimliği
az ad signed-in-user showKolay anlaşılır ad kullanan başka bir insan kimliği
az ad user show \ --id "<user-alias-and-domain>"Uygulama tanımlayıcısı kullanan hizmet sorumlusu
az ad sp show \ --id "<application-id>"Kaynak grubu ve adı kullanarak yönetilen kimlik
az identity show \ --resource-group "<resource-group>" \ --name "<managed-identity-name>"
Sorumluyu kümeye kaydedin ve MongoDB veritabanı rolleriyle eşleyin. Aşağıdaki örnek,
readWritekullanıcısınısalesveritabanında ana kullanıcı olarak kaydeder.az resource create \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --location "<cluster-region>" \ --properties '{"identityProvider":{"type":"MicrosoftEntraID","properties":{"principalType":"User"}},"roles":[{"db":"sales","role":"readWrite"}]}' \ --latest-include-preview-
principalTypeyerine; uygulama/hizmet sorumluları içinservicePrincipalveya yönetilen kimlikler içinManagedIdentitykullanın. - Yönetim ayrıcalıkları vermek için dizide
{"db":"admin","role":"root"}kullanınroles.
-
Tüm kayıtlı sorumluları ve eşlenen rolleri listeleyin (küme düzeyi görünümü):
az rest \ --method "GET" \ --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.DocumentDB/mongoClusters/<cluster-name>/users?api-version=2025-09-01"- Yanıt, her biri meta veri içeren
identityProviderbir kullanıcı kaynakları dizisi ve eşlenmiş veritabanı rollerini gösteren birrolesdizi içerir.
- Yanıt, her biri meta veri içeren
Belirli bir kayıtlı yöneticiyle ilgili ayrıntıları alın (yerine
<principal-id>koyun):az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-previewKayıtlı bir yetkiliyi kaldırma (veri düzlemi erişimini geri çekme):
az resource delete \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-preview
Sorumluyu kaydetmek ve veritabanı rollerini eşlemek için bir Bicep dosyası (örneğin
register-principal.bicep) oluşturun:param clusterName string param principalId string param location string = resourceGroup().location param principalType string = 'User' param roles array = [ { db: 'sales' role: 'readWrite' } ] resource user 'Microsoft.DocumentDB/mongoClusters/users@2025-09-01' = { name: '${clusterName}/users/${principalId}' location: location properties: { identityProvider: { type: 'Microsoft.EntraID' properties: { principalType: principalType } } roles: roles } }Sorumluyu kaydetmek için Bicep şablonunu dağıtın:
az deployment group create \ --resource-group "<resource-group>" \ --template-file register-principal.bicep \ --parameters clusterName="<cluster-name>" principalId="<principal-id>"REST API kullanarak küme için tüm kayıtlı sorumluları listeleyin (Bicep dağıtımından sonra kullanışlıdır):
az rest \ --method GET \ --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.DocumentDB/mongoClusters/<cluster-name>/users?api-version=2025-09-01"Bicep tarafından oluşturulan belirli bir kayıtlı sorumluyla ilgili ayrıntıları alın (yerine
<principal-id>):az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-previewKaynağı silerek (veya kullanıcı kaynağı olmadan bir şablon dağıtarak) sorumluyu kaldırın:
az resource delete \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-preview
Hedef Azure DocumentDB kümesini Azure portalında açın.
Ayarlar'ın altında Kimlik Doğrulama'yı seçin.
Microsoft Entra Id kimlik doğrulaması bölümünde portal, nesne kimliğine göre kayıtlı Microsoft Entra sorumlularını listeler. Bu görünümü kullanarak:
- Beklenen nesne tanımlayıcıları için listeyi tarayın.
- Listelenen bir girdiyi seçerek (veya portalın arama özelliğini kullanarak) tek bir sorumlunun ayrıntılarını inceleyin.
- Bu sorumlunun veri düzlemi erişimini hemen iptal etmek için girişin yanındaki Kaldır eylemini kullanın.
Portal listesinde gösterilen nesne tanımlayıcılarının kolay adlarını almak için Microsoft Entra Id bölümündeki Kullanıcılar sayfasını kullanın. Ardından nesne kimliğine veya anlamlı ada göre arama yapın.
Aşağıdaki komutlardan birini kullanarak erişim vermek istediğiniz Microsoft Entra sorumlusunun benzersiz tanımlayıcısını (nesne kimliği) alın:
Geçerli oturum açma kimliği
az ad signed-in-user showKolay anlaşılır ad kullanan başka bir insan kimliği
az ad user show \ --id "<user-alias-and-domain>"Uygulama tanımlayıcısı kullanan hizmet sorumlusu
az ad sp show \ --id "<application-id>"Kaynak grubu ve adı kullanarak yönetilen kimlik
az identity show \ --resource-group "<resource-group>" \ --name "<managed-identity-name>"
AzAPI sağlayıcısını kullanarak sorumluyu kaydetmek ve veritabanı rollerini eşlemek için bir Terraform dosyası (örneğin
register-principal.tf) oluşturun:variable "cluster_name" { type = string description = "Name of the existing cluster" } variable "resource_group_name" { type = string description = "Name of the existing resource group" } variable "principal_id" { type = string description = "Object ID of the Microsoft Entra principal" } variable "principal_type" { type = string description = "Type of principal: User, ServicePrincipal, or ManagedIdentity" default = "User" } variable "roles" { type = list(object({ db = string role = string })) description = "Database roles to assign" default = [ { db = "sales" role = "readWrite" } ] } terraform { required_providers { azapi = { source = "azure/azapi" version = "~> 2.0" } azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} } provider "azapi" {} data "azurerm_resource_group" "existing" { name = var.resource_group_name } data "azurerm_mongo_cluster" "existing" { name = var.cluster_name resource_group_name = var.resource_group_name } resource "azapi_resource" "mongo_cluster_user" { type = "Microsoft.DocumentDB/mongoClusters/users@2025-09-01" name = var.principal_id parent_id = data.azurerm_mongo_cluster.existing.id location = data.azurerm_resource_group.existing.location body = { properties = { identityProvider = { type = "MicrosoftEntraID" properties = { principalType = var.principal_type } } roles = var.roles } } }Tip
AzAPI sağlayıcısı hakkında daha fazla bilgi için bkz. Azure AzAPI Sağlayıcısı belgeleri.
-
principalTypeyerine; uygulama/hizmet sorumluları içinservicePrincipalveya yönetilen kimlikler içinManagedIdentitykullanın. - Yönetim ayrıcalıkları vermek için dizide
{"db":"admin","role":"root"}kullanınroles.
-
adlı
register-principal.tfvarsbir değişken dosyası oluşturun:cluster_name = "<cluster-name>" resource_group_name = "<resource-group>" principal_id = "<principal-id>" principal_type = "User" roles = [ { db = "sales" role = "readWrite" } ]İlkeyi kaydetmek için Terraform yapılandırmasını başlatın ve uygulayın.
terraform init --upgradeARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform plan --var-file="register-principal.tfvars" --out "register-principal.tfplan"ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform apply "register-principal.tfplan"REST API kullanarak küme için tüm kayıtlı sorumluları listeleyin (Terraform dağıtımından sonra kullanışlıdır):
az rest \ --method GET \ --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.DocumentDB/mongoClusters/<cluster-name>/users?api-version=2025-09-01"Terraform ile oluşturulmuş belirli bir kayıtlı sorumlunun ayrıntılarını alın (yerine
<principal-id>koyun):az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-previewTerraform kaynağını yok ederek sorumluyu kaldırın:
ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform destroy --var-file="register-principal.tfvars"
Note
Bir Azure DocumentDB kümesi, yerleşik bir yönetici yerel DocumentDB kullanıcısıyla oluşturulur. Küme sağlama tamamlandıktan sonra daha fazla yerel yönetici DocumentDB kullanıcısı ekleyebilirsiniz . Kümeye eklenen Microsoft Entra ID yönetici kullanıcıları, aynı kümede tanımlanan yerel yönetici DocumentDB kullanıcılarına ek olarak olacaktır. Tüm yönetim Microsoft Entra ID kimlikleri veritabanına çoğaltılır.
Veritabanında yönetici olmayan Microsoft Entra Id kimlikleri oluşturulur. Veritabanında yönetici olmayan kullanıcıları listelediğinizde, liste tüm yönetim ve yönetici olmayan Microsoft Entra Kimliği kimliklerini ve tüm ikincil (yönetici olmayan) yerel DocumentDB kullanıcılarını içerir.
Küme kimlik bilgilerini alma
Tercih ettiğiniz dil için sürücüden bir bağlantı URI'si veya özel ayarlar nesnesi kullanarak kümeye bağlanabilirsiniz. Her iki seçenekte de kümeye bağlanmak için şemamongodb+srv olarak ayarlanmalıdır.
Sunucu, *.global.mongocluster.cosmos.azure.com veya *.mongocluster.cosmos.azure.com etki alanında, geçerli kümeyi mi yoksa genel okuma-yazma uç noktasını mı kullandığınıza bağlı olarak bulunur. Şema +srv ve *.global.* ana bilgisayar, bölge değiştirme işlemi gerçekleşse bile istemcinizin çoklu küme yapılandırmasında uygun yazılabilen kümeye dinamik olarak bağlanmasını sağlar. Tek kümeli bir yapılandırmada, herhangi bir bağlantı dizesini ayrımsız olarak kullanabilirsiniz.
Ayarın tls da etkinleştirilmesi gerekir. Önerilen diğer ayarlar en iyi yöntem yapılandırma ayarlarıdır.
| Option | Value |
|---|---|
scheme |
mongodb+srv |
host |
<cluster-name>.global.mongocluster.cosmos.azure.com veya <cluster-name>.mongocluster.cosmos.azure.com |
tls |
true |
authMechanism |
MONGODB-OIDC |
retrywrites |
false |
maxIdleTimeMS |
120000 |
Important
Bağlantı dizesini almak için Azure portalını kullanın.
Azure DocumentDB kümesine gidin.
Bağlantı dizeleri gezinti menüsü seçeneğini belirleyin.
Değeri Bağlantı dizesi alanından kopyalayın veya kaydedin.
Tip
Microsoft Entra Id bağlantı dizeleri Microsoft Entra Id bölümündedir.
Visual Studio Code'da Microsoft Entra Id kullanarak bağlanma
Microsoft Entra ID kimliği kullanarak Azure DocumentDB kümenize bağlanmak için Visual Studio Code'u DocumentDB uzantısıyla kullanın.
Important
DocumentDB uzantısıyla Visual Studio Code'da Microsoft Entra ID kullanarak bir Azure DocumentDB kümesinde kimlik doğrulaması yaptığınızda bu işlevsellik shell tarafından desteklenmez. MongoDB kabuğunu Microsoft Entra ID kimlik doğrulamasıyla kullanmanız gerekiyorsa mongoDB Kabuğu'yu doğrudan bir istemci makinesinde kullanın.
Visual Studio Code'u açın.
Yan çubukta DocumentDB uzantısına gidin.
Bağlantılar bölümünde + Yeni Bağlantı... öğesini seçin.
Bağlantı türü iletişim kutusunda Bağlantı Dizesi'ni seçin.
Aşağıdaki bağlantı dizesini kullanın:
mongodb+srv://<client-id>@<cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=MONGODB-OIDC&retrywrites=false&maxIdleTimeMS=120000Microsoft Entra Id kimlik doğrulamasını kullanmak için otomatik istem bekleyin. Kimlik türünüz için uygun kimlik bilgilerini girin.
Note
Örneğin, kendi kimliğinizi (bir insan kimliği) kullanarak oturum açıyorsanız parolasız kimlik doğrulama deneyimini kullanın.
Bağlantının sonuçlanmasını bekleyin. Ardından kümenin Bağlantılar bölümüne yeni bir DocumentDB girdisi eklenir.
Microsoft Entra ID kullanarak MongoDB Compass veya MongoDB Kabuğu'nda bağlanın
MongoDB Compass uygulamasıyla doğrudan bir Microsoft Entra ID kimliği kullanarak Azure DocumentDB kümenize bağlanın.
Azure Sanal Makinesi gibi bir Azure işlem kaynağı oluşturarak Azure DocumentDB kümesine bağlanmak için bir yürütme ortamı ayarlayın.
Sistem tarafından atanan bir yönetilen kimlik veya kullanıcı tarafından atanan yönetilen kimlik oluşturun ve bunu sanal makineyle ilişkilendirin.
Yönetilen kimliği Azure DocumentDB Kümesine kaydedin.
Terminalde MongoDB Compass uygulamasını veya Mongo kabuğunu başlatın.
MongoDB Compass içinde, yeni bir bağlantı eklemek için Bağlantılar menüsünde + öğesini seçin. Kabuğu kullanırken Azure DocumentDB kümenizin adını ve hedef kimliğin istemci kimliğini elde edin.
URI giriş kutusuna aşağıdaki kimlik bilgilerini girin.
mongodb+srv://<client-id>@<cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=MONGODB-OIDC&retrywrites=false&maxIdleTimeMS=120000&authMechanismProperties=ENVIRONMENT:azure,TOKEN_RESOURCE:https://ossrdbms-aad.database.windows.netGelişmiş Bağlantı Seçenekleri iletişim kutusunu açın.
Genel bölümünde
mongodb+srvseçin.Kimlik Doğrulaması bölümüne gidin ve OIDC seçeneğinin belirlendiğinden emin olun.
OIDC Seçenekleri bölümüne gidin ve Hedef Uç Noktayı Güvenilir Olarak Düşün seçeneğinin de seçili olduğundan emin olun.
Kaydet ve Bağlan'ı seçin.
DocumentDB ikincil (yönetici olmayan) Microsoft Entra Id kimliklerini yönetme
Yönetici olmayan Microsoft Entra Id kimlikleri için yönetim işlemleri gerçekleştirmek üzere bir yönetici Microsoft Entra Id kimliğiyle kümede oturum açın.
Note
Yönetici olmayan kullanıcılara yönelik tüm yönetim komutları securityPrincipal ve user asıl türleri için desteklenir.
Yönetici olmayan kullanıcılar Azure portalına kaydedilmez.
Microsoft Entra ID kimliği ile yönetici olarak ve MongoDB Kabuğu gibi bir araç kullanarak kümeye giriş yapın.
komutunu kullanarak kümede
createUserizinlerine sahip yönetici olmayan bir Microsoft Entra Id kimliği ekleyin:db.runCommand( { createUser: "<entra-id-unique-identifier>", roles: [ { role: "clusterAdmin", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" } ], customData: { "IdentityProvider": { "type": "MicrosoftEntraID", "properties": { "principalType": "user" } } } } )Kümede salt okunur izinlere ve farklı rollere sahip
createUseryönetici olmayan bir Microsoft Entra ID kimliği ekleyin.db.runCommand( { createUser: "<entra-id-unique-identifier>", roles: [ { role: "readAnyDatabase", db: "admin" } ], customData: { "IdentityProvider": { "type": "MicrosoftEntraID", "properties": { "principalType": "user" } } } } )komutuyla
dropUser, yönetici olmayan bir Microsoft Entra Id kimliğini kümeden kaldırın.db.runCommand( { dropUser: "<entra-id-unique-identifier>" } )Kümedeki tüm Microsoft Entra ID ve yerel DocumentDB kullanıcılarını
userInfokullanarak listeleyin.db.runCommand( { usersInfo: 1 } )Note
Tüm Microsoft Entra Kimliği ID ve yerel DocumentDB yönetici kullanıcıları veritabanına kopyalanır. Bu çoğaltma nedeniyle, kullanıcıların listesi kümedeki tüm yönetici ve yönetici olmayan Microsoft Entra Kimliğini ve yerel DocumentDB kullanıcılarını içerir.
Kod içinde Microsoft Entra ID kullanarak bağlanın
Tercih ettiğiniz dil için uygulama kodunu ve uygun istemci kitaplığını kullanarak doğru erişim verdiğini doğrulayın.
class AzureIdentityTokenCallback(OIDCCallback):
def __init__(self, credential):
self.credential = credential
def fetch(self, context: OIDCCallbackContext) -> OIDCCallbackResult:
token = self.credential.get_token(
"https://ossrdbms-aad.database.windows.net/.default").token
return OIDCCallbackResult(access_token=token)
clusterName = "<cluster-name>"
credential = DefaultAzureCredential()
authProperties = {"OIDC_CALLBACK": AzureIdentityTokenCallback(credential)}
client = MongoClient(
f"mongodb+srv://{clusterName}.global.mongocluster.cosmos.azure.com/",
connectTimeoutMS=120000,
tls=True,
retryWrites=True,
authMechanism="MONGODB-OIDC",
authMechanismProperties=authProperties
)
const AzureIdentityTokenCallback = async (params: OIDCCallbackParams, credential: TokenCredential): Promise<OIDCResponse> => {
const tokenResponse: AccessToken | null = await credential.getToken(['https://ossrdbms-aad.database.windows.net/.default']);
return {
accessToken: tokenResponse?.token || '',
expiresInSeconds: (tokenResponse?.expiresOnTimestamp || 0) - Math.floor(Date.now() / 1000)
};
};
const clusterName: string = '<cluster-name>';
const credential: TokenCredential = new DefaultAzureCredential();
const client = new MongoClient(
`mongodb+srv://${clusterName}.global.mongocluster.cosmos.azure.com/`, {
connectTimeoutMS: 120000,
tls: true,
retryWrites: true,
authMechanism: 'MONGODB-OIDC',
authMechanismProperties: {
OIDC_CALLBACK: (params: OIDCCallbackParams) => AzureIdentityTokenCallback(params, credential),
ALLOWED_HOSTS: ['*.azure.com']
}
}
);
string tenantId = "<microsoft-entra-tenant-id>";
string clusterName = "<cluster-name>";
DefaultAzureCredential credential = new();
AzureIdentityTokenHandler tokenHandler = new(credential, tenantId);
MongoUrl url = MongoUrl.Create($"mongodb+srv://{clusterName}.global.mongocluster.cosmos.azure.com/");
MongoClientSettings settings = MongoClientSettings.FromUrl(url);
settings.UseTls = true;
settings.RetryWrites = false;
settings.MaxConnectionIdleTime = TimeSpan.FromMinutes(2);
settings.Credential = MongoCredential.CreateOidcCredential(tokenHandler);
settings.Freeze();
MongoClient client = new(settings);
internal sealed class AzureIdentityTokenHandler(
TokenCredential credential,
string tenantId
) : IOidcCallback
{
private readonly string[] scopes = ["https://ossrdbms-aad.database.windows.net/.default"];
public OidcAccessToken GetOidcAccessToken(OidcCallbackParameters parameters, CancellationToken cancellationToken)
{
AccessToken token = credential.GetToken(
new TokenRequestContext(scopes, tenantId: tenantId),
cancellationToken
);
return new OidcAccessToken(token.Token, token.ExpiresOn - DateTimeOffset.UtcNow);
}
public async Task<OidcAccessToken> GetOidcAccessTokenAsync(OidcCallbackParameters parameters, CancellationToken cancellationToken)
{
AccessToken token = await credential.GetTokenAsync(
new TokenRequestContext(scopes, parentRequestId: null, tenantId: tenantId),
cancellationToken
);
return new OidcAccessToken(token.Token, token.ExpiresOn - DateTimeOffset.UtcNow);
}
}