Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O SDK da Proteção de Informações da Microsoft oferece suporte a dois tipos principais de permissões controladas por rótulo: baseadas em modelo e definidas pelo usuário.
Permissões baseadas em modelo: Esses direitos são definidos pelo administrador do rótulo no Centro de Conformidade e Segurança. Esses rótulos são gerenciados centralmente e as alterações na configuração afetarão os usuários que já têm cópias dos arquivos. Por exemplo, se o administrador remover um usuário da lista de usuários autorizados, esse usuário não terá mais acesso aos dados protegidos na próxima vez que tentar obter uma licença.
Permissões definidas pelo usuário: esses direitos são definidos no momento da rotulagem pelo usuário final ou aplicativo. As permissões são passadas para o MIP SDK na forma de uma coleção de mapeamentos de usuário para funções ou de usuários para direitos. Esses direitos são gravados na licença de publicação do documento protegido e, ao contrário das permissões baseadas em modelo, não podem ser gerenciados centralmente ou modificados após o compartilhamento sem acesso direto e modificação do documento.
Usuários, direitos e funções
Como espera-se que os direitos sejam definidos pelo usuário no momento da rotulagem, seu aplicativo deve fornecer uma interface para permitir que o usuário ou serviço forneça entrada sobre os endereços de e-mail e direitos ou funções que o usuário terá. Essa configuração é realizada passando uma coleção de UserRoles ou UserRights objetos que definem especificamente quem deve ter qual nível de acesso aos documentos.
// 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
};
O resultado é que você terá uma List<UserRights> coleção especificando que Alice e Bob têm VIEW e EDIT no arquivo protegido. Para adicionar mais usuários com um conjunto diferente de permissões, repita o processo para criar um segundo UserRights objeto, passando os novos usuários e permissões e, em seguida, adicione à List<UserRights> coleção chamando userRightsList.Add(userRights2).
Esse padrão também é verdadeiro para UserRoles e pode ser implementado simplesmente substituindo permissões por funções e criar uma List<UserRoles> coleção.
Proteção para um domínio
A aplicação de permissões definidas pelo usuário para um domínio requer o uso de um prefixo de email conhecido e o domínio de destino como endereço de email. Esse endereço se parece com: AllStaff-7184AB3F-CCD1-46F3-8233-3E09E9CF0E66@contoso.com.
Em seu aplicativo, os usuários devem ser capazes de especificar um domínio, como contoso.com ou fabrikam.com. Quando o aplicativo cria o descritor de proteção, ele precisará preceder AllStaff-7184AB3F-CCD1-46F3-8233-3E09E9CF0E66@ ao sufixo de domínio.
No exemplo abaixo, assumimos que o usuário especificou alice@contoso.com e todos Fabrikam.com como destinatários válidos.
// 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
};
Aplicar proteção
A configuração da proteção pode ser obtida criando um ProtectionDescriptor objeto a partir do List<UserRights> ou List<UserRoles> e, em seguida, passando isso para FileHandler.SetProtection(). Finalmente, confirme a alteração no arquivo para gravar um novo arquivo.
Quando aplicar proteção a arquivos
Quando você define um rótulo via FileHandler.SetLabel() MIP, o SDK tem tudo o que precisa para agir e aplicar qualquer proteção. Quando o rótulo é configurado para permissões definidas pelo usuário (UDP), seu aplicativo não tem como saber antecipadamente que o rótulo é um rótulo UDP. O SDK MIP exibe essas informações lançando uma exceção do tipo Microsoft.InformationProtection.Exceptions.AdhocProtectionRequiredException. Seu FileHandler código deve capturar essa exceção e, em seguida, acionar sua interface de usuário ou serviço para definir as permissões personalizadas. Uma vez concluído, você poderá definir a proteção. O exemplo a seguir mostra o padrão de ponta a ponta, mas pressupõe que você já implementou uma função para criar o List<UserRights> objeto.
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;
}
Proteção Personalizada
Esse processo também pode ser usado para definir apenas a proteção, configurando a proteção e ignorando a etapa SetLabel(). Se seu aplicativo não precisar aplicar um rótulo, o manipulador de exceções não será necessário e a proteção poderá ser definida seguindo o ProtectionDescriptor padrão ->SetProtection() ->CommitAsync() .