Microsoft Information Protection SDK - kullanıcı tanımlı izinler

Microsoft Information Protection SDK'sı iki birincil etiket temelli izin türünü destekler: şablon tabanlı ve kullanıcı tanımlı.

  • Şablon tabanlı izinler: Etiket yöneticisi bu hakları Microsoft Purview portalı tanımlar. Bu etiketler merkezi olarak yönetilir ve yapılandırma değişiklikleri, dosyaların kopyalarına sahip olan kullanıcıları etkiler. Örneğin, yönetici bir kullanıcıyı yetkili kullanıcılar listesinden kaldırırsa, bir sonraki lisans getirme girişiminde bulunan kullanıcının artık korumalı verilere erişimi olmaz.

  • Kullanıcı tanımlı izinler: Son kullanıcı veya uygulama , etiketleme sırasında bu hakları tanımlar. Kullanıcıdan rollere veya kullanıcılardan haklara eşlemelerden oluşan bir koleksiyon biçiminde MIP SDK'sına izinler geçirin. MIP SDK'sı bu hakları korumalı belgenin yayımlama lisansına yazar. Şablon tabanlı izinlerden farklı olarak, belgenin doğrudan erişimi ve değişikliği olmadan paylaşımdan sonra bu hakları merkezi olarak yönetemez veya değiştiremezsiniz.

Kullanıcılar, haklar ve roller

Kullanıcı etiketleme sırasında hakları tanımladığından, uygulamanızın e-posta adreslerini ve haklarını veya rollerini girmesi için kullanıcı veya hizmet için bir arabirim sağlaması gerekir. Erişimi yapılandırmak için, belgelere kimin hangi düzeyde erişeceğini tanımlayan UserRoles veya UserRights nesnelerinden oluşan bir koleksiyon iletin.

// Create a List<string> of the first set of permissions. 
List<string> users = new List<string>()
{
    "alice@contoso.com",
    "bob@contoso.com"
};

// Create a List<string> of the Rights the above users should have. 
List<string> rights = new List<string>()
{
    Rights.View,
    Rights.Edit                
};

// Create a UserRights object containing the defined users and rights.
UserRights userRights = new UserRights(users, rights);

// Add them to a new List<UserRights>
List<UserRights> userRightsList = new List<UserRights>()
{
    userRights
};

Sonuç, hem Alice'in hem de Bob'un korumalı dosyada VIEW ve EDIT değerlerine sahip olduğunu belirten bir List<UserRights> koleksiyondur. Farklı bir izin kümesine sahip daha fazla kullanıcı eklemek için işlemi yineleyerek ikinci UserRights bir nesne oluşturun, yeni kullanıcıları ve izinleri geçirin ve çağrısı yaparak userRightsList.Add(userRights2)koleksiyona List<UserRights> ekleyin.

Aynı desen için UserRolesde geçerlidir. Bunu uygulamak için haklarırollerle değiştirin ve bir List<UserRoles> koleksiyon oluşturun.

Alan adı koruması

Etki alanı için kullanıcı tanımlı izinler uygulamak için iyi bilinen bir posta ön eki ve posta adresi olarak hedef etki alanı gerekir. Bu adres AllStaff-7184AB3F-CCD1-46F3-8233-3E09E9CF0E66@contoso.com gibi görünüyor.

Uygulamanızda, kullanıcıların contoso.com veyafabrikam.com gibi bir etki alanı belirtebilmesi gerekir. Uygulama koruma tanımlayıcısını oluşturduğunda, AllStaff-7184AB3F-CCD1-46F3-8233-3E09E9CF0E66@ ifadesini etki alanı son ekinin başına ekler.

Bu iyi bilinen grup, bir kuruluştaki tüm kimliği doğrulanmış kullanıcılara hak verme yöntemidir. GrupAllStaff-7184AB3F-CCD1-46F3-8233-3E09E9CF0E66@, belirtilen Microsoft Entra kiracıdaki tüm kullanıcıları içerdiğinden, Active Directory Rights Management Services(AD RMS) içindeki ANYONE grubuna en yakın eşdeğerdir. Kapsam her zaman tek bir kiracıdır: Kimliği doğrulanmış kullanıcılara her yerde haklar veren bir kiracılar arası kimlik yoktur, bu nedenle eklemek istediğiniz her kuruluş için ayrı AllStaff-...@domain bir giriş ekleyin. Daha fazla bilgi için bkz. Azure Information Protection için kullanım haklarını yapılandırma.

Aşağıdaki örnekte kullanıcı, alice@contoso.com ve Fabrikam.com’un tamamını geçerli alıcılar olarak belirtir.

// Create a List<string> of the first set of permissions. 
List<string> users = new List<string>()
{
    "alice@contoso.com",
    "AllStaff-7184AB3F-CCD1-46F3-8233-3E09E9CF0E66@fabrikam.com"
};

// Create a List<string> of the Rights the above users should have. 
List<string> rights = new List<string>()
{
    Rights.View,
    Rights.Edit                
};

// Create a UserRights object containing the defined users and rights.
UserRights userRights = new UserRights(users, rights);

// Add them to a new List<UserRights>
List<UserRights> userRightsList = new List<UserRights>()
{
    userRights
};

Korumayı uygula

Korumayı ayarlamak için, List<UserRights> veya ProtectionDescriptor nesnesinden bir List<UserRoles> oluşturun ve ardından bu tanımlayıcıyı FileHandler.SetProtection() öğesine geçirin. Son olarak, değişikliği dosyaya işleyip yeni bir dosya yazın.

Dosyalara koruma ne zaman uygulanır?

kullanarak FileHandler.SetLabel()bir etiket ayarladığınızda, MIP SDK'sı eyleme geçmek ve herhangi bir koruma uygulamak için gereken her şeyi içerir. Bir etiket kullanıcı tanımlı izinler (UDP) kullandığında, uygulamanızın etiketin bir UDP etiketi olduğunu önceden bilmesine imkan yoktur. MIP SDK'sı, türünde Microsoft.InformationProtection.Exceptions.AdhocProtectionRequiredExceptionbir özel durum oluşturarak bu bilgileri ortaya çıkartır. Kodunuz FileHandler bu özel durumu yakalamalı ve ardından özel izinleri tanımlamak için kullanıcı veya hizmet arabiriminizi tetiklemelidir. Bu işlem tamamlandıktan sonra koruma ayarlayabilirsiniz. Aşağıdaki örnekte uçtan uca desen gösterilmektedir, ancak nesneyi oluşturmak List<UserRights> için zaten bir işlev uyguladığınızı varsayar.

try
{
    // Attempt to set the label. If it's a UDP label, this will throw. 
    handler.SetLabel(engine.GetLabelById(options.LabelId), labelingOptions, new ProtectionSettings());
}

catch (Microsoft.InformationProtection.Exceptions.AdhocProtectionRequiredException)
{
    // Assumes you've create a function that returns the List<UserRights> as previously detailed. 
    List<UserRights> userRightsList = GetUserRights();

    // Create a ProtectionDescriptor using the set of UserRights.
    ProtectionDescriptor protectionDescriptor = new ProtectionDescriptor(userRightsList);
    
    // Apply protection to the file using the new ProtectionDescriptor. 
    handler.SetProtection(protectionDescriptor, new ProtectionSettings());

    // Set the label. This will now succeed as protection has been defined. 
    handler.SetLabel(engine.GetLabelById(options.LabelId), labelingOptions, new ProtectionSettings());

    // Commit the change. 
    var result = Task.Run(async () => await handler.CommitAsync("myFileOutput.xlsx")).Result;
}

Özel koruma

Bu işlemi, korumayı ayarlayıp SetLabel() adımını atlayarak yalnızca korumayı ayarlamak için de kullanabilirsiniz. Uygulamanızın etiket uygulaması gerekmiyorsa, özel durum işleyicisi gerekli değildir. Korumayı ayarlamak için - -CommitAsync()>SetProtection()> desenini ProtectionDescriptor izleyin.

Sonraki Adımlar