Aracılığıyla paylaş


Azure Cosmos DB kaynaklarını kilitlerle koruma

ŞUNLAR IÇIN GEÇERLIDIR: NoSQL MongoDB Cassandra Gremlin Masa

Yönetici olarak bir Azure Cosmos DB hesabını, veritabanını veya kapsayıcısını kilitlemeniz gerekebilir. Kilitler, kuruluşunuzdaki diğer kullanıcıların kritik kaynakları yanlışlıkla silmesini veya değiştirmesini önler. Kilit düzeyini CanNotDelete veya ReadOnly olarak ayarlayabilirsiniz.

Level Açıklama
CanNotDelete Yetkili kullanıcılar yine de bir kaynağı okuyabilir ve değiştirebilir, ancak kaynağı silemez.
ReadOnly Yetkili kullanıcılar bir kaynağı okuyabilir, ancak kaynağı silemez veya güncelleştiremez. Bu kilidi uygulamak, tüm yetkili kullanıcıları Okuyucu rolü tarafından verilen izinlerle kısıtlamaya benzer.

Önkoşullar

Kilitler nasıl uygulanır?

Bir üst kapsama kilit uyguladığınızda, bu kapsamdaki tüm kaynaklar aynı kilidi devralır. Daha sonra eklediğiniz kaynaklar bile kilidi üst öğeden devralır. Devralmadaki en kısıtlayıcı kilit önceliklidir.

Azure rol tabanlı erişim denetiminin aksine, tüm kullanıcılara ve rollere kısıtlama uygulamak için yönetim kilitlerini kullanırsınız.

Resource Manager kilitleri yalnızca yönetim düzleminde gerçekleşen ve https://management.azure.com adresine gönderilen işlemlere uygulanır. Kilitler kaynakların kendi işlevlerini gerçekleştirmesine bir kısıtlama getirmez. Kaynak değişiklikleri kısıtlanır ama kaynak işlemleri kısıtlanmaz. Örneğin, Azure Cosmos DB kapsayıcısı üzerindeki ReadOnly kilidi kapsayıcıyı silmenizi veya değiştirmenizi engeller. Kapsayıcıda veri oluşturmanızı, güncelleştirmenizi veya silmenizi engellemez. Bu işlemler https://management.azure.com hedefine gönderilmediğinden veri işlemlerine izin verilir.

Kilitleri yönetme

Azure Cosmos DB hesabı önce özelliği etkinleştirilerek disableKeyBasedMetadataWriteAccess kilitlenmediği sürece hesap anahtarlarını kullanarak Azure Cosmos DB'ye erişen kullanıcılar tarafından yapılan değişiklikler için kaynak kilitleri çalışmaz. Bu özelliğin herhangi bir SDK, Azure portalı veya üçüncü taraf araçlarını kullanarak kaynaklarda değişiklik yapacak mevcut uygulamaları bozmadığından emin olun. Bu özelliğin etkinleştirilmesi, kaynakları değiştirmek için hesap anahtarları aracılığıyla bağlanan uygulamaları bozar. Bu değişiklikler aktarım hızını değiştirme, dizin ilkelerini güncelleştirme vb. içerebilir.

$RESOURCE_GROUP_NAME = "<resource-group>"
$ACCOUNT_NAME = "<account-name>"
$LOCK_NAME = "$ACCOUNT_NAME-lock"

İlk olarak, hesap anahtarları aracılığıyla bağlanan herhangi bir şeyin değişiklik yapmasını önlemek için hesabı güncelleştirin.

$parameters = @{
    Name = $ACCOUNT_NAME
    ResourceGroupName = $RESOURCE_GROUP_NAME
    DisableKeyBasedMetadataWriteAccess = true
}
Update-AzCosmosDBAccount @parameters

Azure Cosmos DB hesap kaynağında ve tüm alt kaynaklarda Silme Kilidi oluşturun.

$parameters = @{
    ResourceGroupName = $RESOURCE_GROUP_NAME
    ResourceName = $ACCOUNT_NAME
    LockName = $LOCK_NAME
    ApiVersion = "2020-04-01"
    ResourceType = "Microsoft.DocumentDB/databaseAccounts"
    LockLevel = "CanNotDelete"
}
New-AzResourceLock @parameters

Template

Azure Cosmos DB kaynağına kilit uygularken Azure Resource Manager (ARM) kaynağını kullanın Microsoft.Authorization/locks .

{
  "type": "Microsoft.Authorization/locks",
  "apiVersion": "2017-04-01",
  "name": "cosmoslock",
  "dependsOn": [
    "[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('accountName'))]"
  ],
  "properties": {
    "level": "CanNotDelete",
    "notes": "Do not delete Azure Cosmos DB account."
  },
  "scope": "[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('accountName'))]"
}

Örnekler

Azure Cosmos DB için kaynak kilitlerini yönetme:

Sonraki adımlar