В IBM DB2 реализована политика LBAC (управление доступом на основе ярлыков). Я не сталкиваюсь с проблемой при создании или использовании этих политик из браузера запросов. Однако мое требование немного отличается. Используя LBAC, скажем, что я создал необходимые метки безопасности и назначил их столбцам и строкам в таблицах базы данных. Теперь, учитывая контроль доступа для пользователя, я хочу узнать, доступен ли конкретный ярлык этому пользователю.Вычисление политик DB2 LBAC для любого пользователя
DB2 будет внутренне определять и получать желаемые результаты, однако мне нужно какое-то решение, которое скажет мне, доступен ли конкретный столбец/строка пользователю, если мне предоставлен уровень доступа пользователя вместе с метками безопасности для каждого столбца/строки. Мне нужен какой-то метод, который делает следующее:
- Узнайте метки безопасности для столбца [Я могу это сделать]
- Выясните управление доступом разрешен пользователю [Я могу это сделать]
- Скажите, если эти метки безопасности доступны для пользователя [Я не знаю, как достичь этого]
Рассмотрим следующий пример:
Мой компонент образца:
/*Create the component*/
CREATE SECURITY LABEL COMPONENT ORG_DIVISIONS
TREE ('ORGANIZATION_ADMIN' ROOT, --The admin will have the complete access
'SALES' UNDER 'ORGANIZATION_ADMIN', --The sales department will have acess to the financial information for each unit
'RESEARCH' UNDER 'ORGANIZATION_ADMIN', --The research division will have access to technical specs and design along with certain financial information
'RSM1' UNDER 'RESEARCH', --The research manager 1 will have access to certain design and technical specs and certain financial information (depending on the project he is undertaking)
'RS_ENGG1' UNDER 'RSM1', --The research engineer 1 will have access to certain technical specs (depending on the project he is undertaking)
'MANUFACTURING' UNDER 'ORGANIZATION_ADMIN', --The manufacturing unit will have access to design along with certain financial information
'MFM1' UNDER 'MANUFACTURING', --The manufacturing division manager 1 will have access to certain designs along with certain financial information (depending on the project he is undertaking)
'MF_ENGG1' UNDER 'MFM1' --The manufacturing division engineer 1 will have access to certain designs (depending on the project he is undertaking)
)
Моя политика образец для компонента:
/*Create the policy*/
CREATE SECURITY POLICY ORGANIZATION_POLICY
COMPONENTS ORG_DIVISIONS
WITH DB2LBACRULES
RESTRICT NOT AUTHORIZED WRITE SECURITY LABEL
Мой образец набор этикеток:
/*Create the labels from the policy components*/
CREATE SECURITY LABEL ORGANIZATION_POLICY.ORGANIZATION_ADMIN
COMPONENT ORG_DIVISIONS 'ORGANIZATION_ADMIN'
CREATE SECURITY LABEL ORGANIZATION_POLICY.SALES
COMPONENT ORG_DIVISIONS 'SALES';
CREATE SECURITY LABEL ORGANIZATION_POLICY.RESEARCH
COMPONENT ORG_DIVISIONS 'RESEARCH';
CREATE SECURITY LABEL ORGANIZATION_POLICY.RSM1
COMPONENT ORG_DIVISIONS 'RSM1';
CREATE SECURITY LABEL ORGANIZATION_POLICY.RS_ENGG1
COMPONENT ORG_DIVISIONS 'RS_ENGG1';
CREATE SECURITY LABEL ORGANIZATION_POLICY.MFM1
COMPONENT ORG_DIVISIONS 'MFM1';
CREATE SECURITY LABEL ORGANIZATION_POLICY.MF_ENGG1
COMPONENT ORG_DIVISIONS 'MF_ENGG1';
Мой образец Пользователь:
/*Use the defined policies and grant accesses to the users*/
GRANT SECURITY LABEL ORGANIZATION_POLICY.RSM1
TO USER someone FOR ALL ACCESS;
Теперь, так как я определен Дерево Компонент, пользователь у кого-то будет иметь доступ к объектам, которые обозначены RSM1 или его дочерними метками (в этом случае RS_ENGG1). DB2 знает это и представит мне соответствующие результаты, если в качестве пользователя кто-то и пожарные запросы. Но вопрос в том, как я могу (как администратор) знать, какие столбцы/строки будут доступны пользователю кто-то? Может ли эта информация быть извлечена из какой-либо таблицы безопасности или как-то понята?
С уважением,
Salil Joshi