ISecurityDescriptor.GetEffectiveRightsAuditLabel

Синтаксис

GetEffectiveRightsAuditLabel(

Subject: ISecuritySubject;

DesiredAccess: Integer;

Var Access: Integer;

Var Audit: Integer;

Var Label: ISecurityDocumentLabel);

Параметры

Subject. Субъект безопасности, для которого необходимо вычислить эффективные права доступа.

DesiredAccess. Желаемые права доступа, относительно которых осуществляется расчет эффективных прав доступа.

Access. Целочисленная переменная, в которую будет помещено значение, соответствующее эффективным правам доступа пользователя к объекту.

Audit. Целочисленная переменная, в которую будет помещено значение, соответствующее аудиту доступа пользователя к объекту.

Label. Переменная, в которую будут помещены параметры метки безопасности. Метка безопасности вычисляется при включенном мандатном доступе к объектам.

Описание

Метод GetEffectiveRightsAuditLabel осуществляет вычисление эффективных прав доступа и аудита доступа пользователя, а также параметров метки безопасности, используемой при печати и экспорте объектов репозитория.

Комментарии

Для указания желаемых прав доступа используется маска доступа. После вычисления в переменных, указанных в параметрах Access и Audit также будет содержаться маска доступа. Значение маски является 4-x байтовым двоичным числом, приведенным к десятичному виду. Для формирования маски желаемых прав доступа, а также для проверки полученных значений необходимо использовать значения перечислимого типа MetabaseObjectPredefinedRights. В этом перечислении содержатся основные и дополнительные операции, на которые можно раздавать права. Для определенных классов объектов доступны специфические операции. Для проверки специфических операций, в зависимости от класса объекта, можно использовать значения следующих перечислений:

Основные, дополнительные и специфические операции, доступные для определенных типов объектов, представлены в разделе Типы событий.

Для разбора значения маски необходимо реализовать пользовательскую функцию, которая позволит сопоставить отдельные биты маски соответствующим значениям перечислений. Пример работы с маской доступа представлен в разделе Примеры: Работа с маской доступа.

Эффективные права, возвращаемые в переменную указанную в параметре Access, формируются на основе желаемых прав доступа. Если имеются какие-либо операции, зависящие от основных и дополнительных операций, то они также будут включены в эффективные права.

Для получения значения, соответствующего аудиту доступа пользователя к объекту, сначала необходимо подсчитать максимальное значение аудита, доступное для объектов данного класса. Затем к полученному значению необходимо прибавить значение переменной, указанной в параметре Audit. Если результирующее значение отлично от нуля, значит для текущего пользователя ведется аудит операций, указанных в желаемых правах.

Пример

Для выполнения примера предполагается наличие в репозитории объекта с идентификатором «Obj_1». Среди субъектов безопасности, созданных в менеджере безопасности текущего репозитория, имеется пользователь «TestUser».

Sub UserProc;
Var
    MB: IMetabase;
    MDesc: IMetabaseObjectDescriptor;
    SecDesc: ISecurityDescriptor;
    Subj: ISecuritySubject;
    Access, Audit: Integer;
    Lab: ISecurityDocumentLabel;
Begin
    MB := MetabaseClass.Active;
    Subj := MB.Security.ResolveName("TestUser");
    MDesc := MB.ItemById("Obj_1");
    SecDesc := MDesc.SecurityDescriptor;
    SecDesc.GetEffectiveRightsAuditLabel(Subj,
        MetabaseObjectPredefinedRights.Delete Or
        MetabaseObjectPredefinedRights.Access,
        Access, Audit, Lab);
    If Lab.IsON Then
        Debug.WriteLine(Lab.Label);
        Debug.WriteLine(Lab.LabelDescription);
        Debug.WriteLine(Lab.TreatSectionAsDocument);
        Debug.WriteLine(Lab.User.Name);
    End If;
End Sub UserProc;

После выполнения примера в переменных «Access» и «Audit» будут содержаться значения, соответствующие эффективным правам доступа и аудиту доступа указанного пользователя. Расчет эффективных прав и аудита осуществляется относительно операций Удаление и Изменение прав. Если в репозитории включен мандатный контроль доступа и для объекта выставлен уровень, для которого предусмотрена маркировка объектов при экспорте и печати, то в переменной «Lab» будут содержаться параметры метки безопасности, используемой для маркировки. Данные параметры будут выведены в консоль среды разработки.

См. также:

ISecurityDescriptor