Multi-Level-Security: Mit DB2 einfacher als mit Oracle 10g

25.10.2006
Von Heinz Axel Pürner

Wie in DB2 können die möglichen sinnvollen Werte-Kombinationen der Security Policy mit ihren Komponenten als Labels definiert werden. In Oracle werden ihnen numerische Label-Tags zugeordnet, die so gewählt werden können, dass sie für Gruppierung oder Sortierung in Auswertungen nutzbar sind.

Definition von Daten-Labels:

BEGIN
SA_LABEL_ADMIN.CREATE_LABEL(
policy_name => 'PERSDAT'
,label_tag => 1
,label_value => 'LTA::GF'
,data_label => TRUE
);
SA_LABEL_ADMIN.CREATE_LABEL(
policy_name => 'PERSDAT'
,label_tag => 2
,label_value => 'LTA::IT'
,data_label => TRUE
);
:::
SA_LABEL_ADMIN.CREATE_LABEL(
policy_name => 'PERSDAT'
,label_tag => 10
,label_value => 'AT::ITZ'
,data_label => TRUE
);
SA_LABEL_ADMIN.CREATE_LABEL(
policy_name => 'PERSDAT'
,label_tag => 11
,label_value => 'AT::MA'
,data_label => TRUE
);
:::
SA_LABEL_ADMIN.CREATE_LABEL(
policy_name => 'PERSDAT'
,label_tag => 20
,label_value => 'TARIF::EK'
,data_label => TRUE
);
SA_LABEL_ADMIN.CREATE_LABEL(
policy_name => 'PERSDAT'
,label_tag => 21
,label_value => 'TARIF::FE'
,data_label => TRUE
);
END;
/

Definition der Benutzer-Label und deren Zuordnung zu User-IDs:

BEGIN
SA_USER_ADMIN.SET_USER_LABELS(
policy_name => 'PERSDAT'
,user_name => 'GF1'
,max_read_label => 'LTA::GF'
);
SA_USER_ADMIN.SET_USER_LABELS(
policy_name => 'PERSDAT'
,user_name => 'HR_GL'
,max_read_label => 'LTA::GF'
);
SA_USER_ADMIN.SET_USER_LABELS(
policy_name => 'PERSDAT'
,user_name => 'FE_MAN'
,max_read_label => 'AT::FE'
);
SA_USER_ADMIN.SET_USER_LABELS(
policy_name => 'PERSDAT'
,user_name => 'HR_SB2'
,max_read_label => 'AT::GF'
);
:::
SA_USER_ADMIN.SET_USER_LABELS(
policy_name => 'PERSDAT'
,user_name => 'HR_SB3'
,max_read_label => 'TARIF::IT'
);
END;
/