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