Azure Cosmos DB'de verilere erişimin güvenliğini sağlama

UYGULANANLAR: NoSQL

Bu makalede Azure Cosmos DB'deki veri erişim denetimine genel bir bakış sunulmaktadır.

Azure Cosmos DB, verilerinize erişimi denetlemenin üç yolunu sağlar.

Erişim denetim türü Özellikler
Birincil/ikincil anahtarlar Herhangi bir yönetim veya veri işlemine izin veren paylaşılan gizli dizi. Hem okuma-yazma hem de salt okunur değişkenlerde gelir.
Rol tabanlı erişim denetimi (RBAC) Kimlik doğrulaması için Microsoft Entra kimliklerini kullanan ayrıntılı, rol tabanlı izin modeli.
Kaynak belirteçleri Yerel Azure Cosmos DB kullanıcılarını ve izinlerini temel alan ayrıntılı izin modeli.

Birincil/ikincil anahtarlar

Birincil/ikincil anahtarlar, veritabanı hesabının tüm yönetim kaynaklarına erişim sağlar. Her hesap iki anahtardan oluşur: birincil anahtar ve ikincil anahtar. İkili anahtarların amacı, hesabınıza ve verilerinize sürekli erişim sağlayarak anahtarları yeniden oluşturmanıza veya dağıtmanıza olanak sağlamaktır. Birincil/ikincil anahtarlar hakkında daha fazla bilgi edinmek için bkz . Azure Cosmos DB'de veritabanı güvenliğine genel bakış.

Hesap anahtarlarınızı görmek için soldaki menüde Anahtarlar'ı seçin. Ardından, her bir anahtarın sağ tarafındaki Görünüm simgesini seçin. Seçili anahtarı kopyalamak için Kopyala düğmesini seçin. Daha sonra, simgeyi gizle düğmesi olarak güncelleştiren anahtar başına aynı simgeyi seçerek bunları gizleyebilirsiniz .

Screenshot of the View account key for Azure Cosmos DB.

Anahtar döndürme ve yeniden oluşturma

Dekont

Aşağıdaki bölümde, NoSQL için API anahtarlarını döndürme ve yeniden oluşturma adımları açıklanmaktadır. Farklı bir API kullanıyorsanız MongoDB API'sine, Cassandra API'sine, Gremlin api'sine veya Tablo için API bölümlerine bakın.

Hesabınızı önemli güncelleştirmeler ve anahtar yeniden oluşturma için izlemek için bkz . Azure Cosmos DB hesabınızı önemli güncelleştirmeler ve anahtar yeniden oluşturma için izleme.

Anahtar döndürme ve yeniden oluşturma işlemi basittir. İlk olarak, uygulamanızın Azure Cosmos DB hesabınıza erişmek için birincil anahtarı veya ikincil anahtarı tutarlı bir şekilde kullandığından emin olun. Ardından, sonraki bölümde yer alan adımları izleyin.

  1. Azure portalında Azure Cosmos DB hesabınıza gidin.

  2. Soldaki menüden Tuşlar'ı seçin ve ardından ikincil anahtarınızın sağındaki üç noktadan İkincil Anahtarı Yeniden Oluştur'u seçin.

    Screenshot that shows the Azure portal showing how to regenerate the secondary key.

  3. Yeni ikincil anahtarın Azure Cosmos DB hesabınızda tutarlı bir şekilde çalıştığını doğrulayın. Anahtar yeniden oluşturma işlemi, Azure Cosmos DB hesabının boyutuna bağlı olarak bir dakikadan birkaç saate kadar sürebilir.

  4. Birincil anahtarınızı uygulamanızdaki ikincil anahtarla değiştirin.

  5. Azure portalına geri dönün ve birincil anahtarın yeniden yenilenmesini tetikleyin.

    Screenshot that shows the Azure portal showing how to regenerate the primary key.

Birincil anahtar kullanmak için kod örneği

Aşağıdaki kod örneğinde, örneğini oluşturmak için Azure Cosmos DB hesap uç noktasının ve birincil anahtarın nasıl kullanılacağı gösterilmektedir CosmosClient:

// Read the Azure Cosmos DB endpointUrl and authorization keys from config.
// These values are available from the Azure portal on the Azure Cosmos DB account blade under "Keys".
// Keep these values in a safe and secure location. Together they provide Administrative access to your Azure Cosmos DB account.

private static readonly string endpointUrl = ConfigurationManager.AppSettings["EndPointUrl"];
private static readonly string authorizationKey = ConfigurationManager.AppSettings["AuthorizationKey"];

CosmosClient client = new CosmosClient(endpointUrl, authorizationKey);

Rol tabanlı erişim denetimi

Azure Cosmos DB, şunları yapmanızı sağlayan yerleşik bir RBAC sistemi sunar:

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

Azure Cosmos DB RBAC, aşağıdaki durumlarda ideal erişim denetimi yöntemidir:

  • Birincil anahtar gibi paylaşılan bir gizli dizi kullanmak ve belirteç tabanlı kimlik doğrulama mekanizmasını kullanmayı tercih etmek istemezsiniz.
  • İsteklerinizin kimliğini doğrulamak için Microsoft Entra kimliklerini kullanmak istiyorsunuz.
  • Kimliklerinizin gerçekleştirmesine izin verilen veritabanı işlemlerini sıkı bir şekilde kısıtlamak için ayrıntılı bir izin modeline ihtiyacınız vardır.
  • Erişim denetimi ilkelerinizi birden çok kimlik için atayabileceğiniz "roller" olarak uygulamak istiyorsunuz.

Azure Cosmos DB RBAC hakkında daha fazla bilgi edinmek için bkz . Azure Cosmos DB hesabınız için rol tabanlı erişim denetimini yapılandırma.

MongoDB için Azure Cosmos DB için RBAC'yi yapılandırmaya yönelik bilgi ve örnek kod için bkz . MongoDB için Azure Cosmos DB'niz için rol tabanlı erişim denetimini yapılandırma.

Kaynak belirteçleri

Kaynak belirteçleri, veritabanı içindeki uygulama kaynaklarına erişim sağlar. Kaynak belirteçleri:

  • Belirli kapsayıcılara, bölüm anahtarlarına, belgelere ve eklere erişim sağlayın.
  • Kullanıcıya belirli bir kaynak için izinler verildiğinde oluşturulur.
  • bir izin kaynağı post, GET veya PUT çağrısı tarafından işlem yapıldığında yeniden oluşturulur.
  • Kullanıcı, kaynak ve izin için özel olarak tasarlanmış bir karma kaynak belirteci kullanın.
  • Zaman, özelleştirilebilir bir geçerlilik süresiyle ilişkilidir. Varsayılan geçerli zaman aralığı bir saattir. Ancak belirteç ömrü, en fazla 24 saate kadar açıkça belirtilebilir.
  • Birincil anahtarı vermek için güvenli bir alternatif sağlayın.
  • İstemcilerin, kendilerine verilen izinlere göre Azure Cosmos DB hesabındaki kaynakları okumasına, yazmasına ve silmesine olanak tanıyın.

Azure Cosmos DB hesabınızdaki kaynaklara birincil anahtarla güvenilmeyecek bir istemciye erişim sağlamak istediğinizde bir kaynak belirteci (Azure Cosmos DB kullanıcıları ve izinleri oluşturarak) kullanabilirsiniz.

Azure Cosmos DB kaynak belirteçleri, istemcilerin size verilen izinlere göre ve birincil veya salt okunur anahtara gerek kalmadan Azure Cosmos DB hesabınızdaki kaynakları okumasına, yazmasına ve silmesine olanak tanıyan güvenli bir alternatif sağlar.

Kaynak belirteçlerinin istenebileceği, oluşturulabileceği ve istemcilere teslim edilebildiği tipik bir tasarım deseni aşağıda verilmiştir:

  1. Orta katman hizmeti, kullanıcı fotoğraflarını paylaşmak için bir mobil uygulama sunmak üzere ayarlanır.

  2. Orta katman hizmeti, Azure Cosmos DB hesabının birincil anahtarına sahiptir.

  3. Fotoğraf uygulaması, kullanıcı mobil cihazlarına yüklenir.

  4. Oturum açmada, fotoğraf uygulaması orta katman hizmetiyle kullanıcının kimliğini oluşturur. Bu kimlik oluşturma mekanizması tamamen uygulamaya bağlı.

  5. Kimlik oluşturulduktan sonra, orta katman hizmeti kimliğe göre izinler istemektedir.

  6. Orta katman hizmeti, telefon uygulamasına bir kaynak belirteci gönderir.

  7. Telefon uygulaması, kaynak belirteci tarafından tanımlanan izinlerle ve kaynak belirtecinin izin verdiği aralık için Azure Cosmos DB kaynaklarına doğrudan erişmek için kaynak belirtecini kullanmaya devam edebilir.

  8. Kaynak belirtecinin süresi dolduğunda, izleyen istekler 401 yetkisiz özel durumu alır. Bu noktada, telefon uygulaması kimliği yeniden kurar ve yeni bir kaynak belirteci istemektedir.

    Screenshot that shows an Azure Cosmos DB resource tokens workflow.

Kaynak belirteci oluşturma ve yönetimi yerel Azure Cosmos DB istemci kitaplıkları tarafından işlenir. Ancak REST kullanıyorsanız istek/kimlik doğrulama üst bilgilerini oluşturmanız gerekir. REST için kimlik doğrulama üst bilgileri oluşturma hakkında daha fazla bilgi için bkz. Azure Cosmos DB kaynaklarında erişim denetimi veya .NET SDK'mızın veya Node.js SDK'mızın kaynak kodu.

Kaynak belirteçleri oluşturmak veya aracılık etmek için kullanılan bir orta katman hizmeti örneği için bkz . ResourceTokenBroker uygulaması.

Kullanıcı

Azure Cosmos DB kullanıcıları bir Azure Cosmos DB veritabanıyla ilişkilendirilir. Her veritabanı sıfır veya daha fazla Azure Cosmos DB kullanıcısı içerebilir. Aşağıdaki kod örneği, Azure Cosmos DB .NET SDK v3 kullanarak Azure Cosmos DB kullanıcısının nasıl oluşturulacağını gösterir.

// Create a user.
Database database = client.GetDatabase("SalesDatabase");
User user = await database.CreateUserAsync("User 1");

Dekont

Her Azure Cosmos DB kullanıcısının, kullanıcıyla ilişkili izinlerin listesini almak için kullanabileceğiniz bir ReadAsync() yöntemi vardır.

Izin

İzin kaynağı bir kullanıcıyla ilişkilendirilir ve belirli bir kaynağa atanır. Her kullanıcı sıfır veya daha fazla izin içerebilir. İzin kaynağı, belirli bir kapsayıcıya veya belirli bir bölüm anahtarındaki verilere erişmeye çalışırken kullanıcının ihtiyaç duyduğu bir güvenlik belirtecine erişim sağlar. İzin kaynağı tarafından sağlanabilir iki erişim düzeyi vardır:

  • Tümü: Kullanıcının kaynak üzerinde tam izni vardır.
  • Okuma: Kullanıcı kaynağın içeriğini yalnızca okuyabilir ancak kaynak üzerinde yazma, güncelleştirme veya silme işlemleri gerçekleştiremez.

Dekont

Saklı yordamları çalıştırmak için, kullanıcının saklı yordamın çalıştırılacağı kapsayıcı üzerinde Tüm iznine sahip olması gerekir.

Veri düzlemi isteklerinde tanılama günlüklerini etkinleştirirseniz, izne karşılık gelen aşağıdaki iki özellik günlüğe kaydedilir:

  • resourceTokenPermissionId: Bu özellik, belirttiğiniz kaynak belirteci izin kimliğini gösterir.

  • resourceTokenPermissionMode: Bu özellik, kaynak belirtecini oluştururken ayarladığınız izin modunu gösterir. İzin modunun Tümü veya Okuma gibi değerleri olabilir.

İzin oluşturmak için kod örneği

Aşağıdaki kod örneğinde bir izin kaynağı oluşturma, izin kaynağının kaynak belirtecini okuma ve izinleri yeni oluşturduğunuz kullanıcıyla ilişkilendirme gösterilmektedir.

// Create a permission on a container and specific partition key value
Container container = client.GetContainer("SalesDatabase", "OrdersContainer");
await user.CreatePermissionAsync(
    new PermissionProperties(
        id: "permissionUser1Orders", 
        permissionMode: PermissionMode.All, 
        container: container,
        resourcePartitionKey: new PartitionKey("012345")));

Kullanıcı için okuma izni için kod örneği

Aşağıdaki kod parçacığında, oluşturduğunuz kullanıcıyla ilişkili iznin nasıl alınıp kullanıcı için kapsamı tek bir bölüm anahtarıyla belirlenmiş yeni CosmosClient bir örnek oluşturma gösterilmektedir.

// Read a permission, create user client session.
Permission permission = await user.GetPermission("permissionUser1Orders").ReadAsync();

CosmosClient client = new CosmosClient(accountEndpoint: "MyEndpoint", authKeyOrResourceToken: permission.Resource.Token);

RBAC ile kaynak belirteçleri arasındaki farklar

Konu RBAC Kaynak belirteçleri
Kimlik Doğrulaması Microsoft Entra Kimliği ile. Yerel Azure Cosmos DB kullanıcılarını temel alır.
Kaynak belirteçlerini Microsoft Entra ID ile tümleştirmek, Microsoft Entra kimlikleriyle Azure Cosmos DB kullanıcılarının arasında köprü kurabilmek için ek çalışma gerektirir.
Yetkilendirme Rol tabanlı: Rol tanımları izin verilen eylemleri eşler ve birden çok kimliğe atanabilir. İzin tabanlı: Her Azure Cosmos DB kullanıcısı için veri erişim izinleri atamanız gerekir.
Belirteç kapsamı Microsoft Entra belirteci, istek sahibinin kimliğini taşır. Bu kimlik, yetkilendirme gerçekleştirmek için atanan tüm rol tanımlarıyla eşleştirilir. Kaynak belirteci, belirli bir Azure Cosmos DB kaynağındaki belirli bir Azure Cosmos DB kullanıcısına verilen izni taşır. Farklı kaynaklardaki yetkilendirme istekleri farklı belirteçler gerektirebilir.
Belirteç yenileme Microsoft Entra belirteci süresi dolduğunda Azure Cosmos DB SDK'ları tarafından otomatik olarak yenilenir. Kaynak belirteci yenilemesi desteklenmez. Kaynak belirtecinin süresi dolduğunda yeni bir belirteç verilmesi gerekir.

Kullanıcı ekleme ve rol atama

Kullanıcı hesabınıza Azure Cosmos DB hesap okuyucu erişimi eklemek için bir abonelik sahibinin Azure portalında aşağıdaki adımları gerçekleştirmesini sağlayın.

  1. Azure portalını açın ve Azure Cosmos DB hesabınızı seçin.

  2. Erişim denetimi (IAM) öğesini seçin.

  3. Rol ataması ekle sayfasını açmak için Rol ataması ekle'yi> seçin.

  4. Aşağıdaki rolü atayın. Ayrıntılı adımlar için bkz . Azure portalını kullanarak Azure rolleri atama.

    Ayar Değer
    Rol Cosmos DB Hesap Okuyucusu.
    Şu kişiye erişim ata: Kullanıcı, grup veya hizmet sorumlusu.
    Üyeler Dizininizde erişim vermek istediğiniz kullanıcı, grup veya uygulama.

    Screenshot that shows the Add role assignment page in the Azure portal.

Varlık artık Azure Cosmos DB kaynaklarını okuyabilir.

Kullanıcı verilerini silme veya dışarı aktarma

Veritabanı hizmeti olarak Azure Cosmos DB, veritabanınızda veya kapsayıcılarınızda bulunan tüm verileri aramanıza, seçmenize, değiştirmenize ve silmenize olanak tanır. Sağlanan API'leri kullanmak ve gerekirse kişisel verileri bulmak ve silmek için gerekli mantığı tanımlamak sizin sorumluluğunuzdadır.

Her çok modelli API (SQL, MongoDB, Gremlin, Cassandra veya Tablo), özel koşula göre verileri arama ve silme yöntemleri içeren farklı dil SDK'ları sağlar. Ayrıca, yaşam süresi (TTL) özelliğini etkinleştirerek verileri belirli bir süre sonra daha fazla maliyet olmadan otomatik olarak silebilirsiniz.

Dekont

Kişisel verileri görüntüleme veya silme hakkında bilgi için bkz. GDPR için Azure Veri Nesnesi İstekleri. GDPR hakkında daha fazla bilgi için Microsoft Güven Merkezi'nin GDPR bölümüne ve Hizmet Güveni portalının GDPR bölümüne bakın.

Sonraki adımlar