LBAC

®
IBM Software Group
Label-Based-Access-Control (LBAC) overview
© 2006 IBM Corporation
IBM Software Group | DB2 information management software
アクセス制御
 アクセス制御には強制アクセス制御(MAC: Mandatory Access Control)
及び、任意アクセス制御(DAC: Discretionary Access Control)がありま
す。
 DAC は、ユーザID あるいは、グループID に基づいてオブジェクトへのアクセスを
制御するアクセス制御方式。(WindowsやLinux , Unixと同様)
ユーザーが自分の所有するファイルやディレクトリのアクセス権(パーミッション)を自
由に変更できます。また,rootユーザーは無制限にファイルやディレクトリにアクセス
したり,パーミッションの設定を変更したりできます。
 MAC は、システムのサブジェクトとオブジェクトの関連を強制的なセキュリティポリ
シーとして定義し、システムがそのアクセス制御方針を運用するアクセス制御方式で
す。
ユーザーは自分の所有するファイルやディレクトリに対してもあらかじめ設定された
アクセスしか行えません。アクセス権限の変更も行えません。これはrootユーザー
にも当てはまります。アクセス権限を設定・変更できるのは,セキュリティ管理者のみ
です。
2
IBM Software Group | DB2 information management software
Label-Based-Access-Control (LBAC)
 ラベル・ベースのアクセス制御(LBAC)はMACをベースに実装されており、
データにどのユーザーがアクセスできるかに対する制御を大きく向上させます。 LBAC を
使用すると、個々の行および個々の列に対して、どのユーザーに書き込みアクセスがあり、
どのユーザーに読み取りアクセスがあるのかを厳密に決定することができます。
 行レベル でのアクセス・コントロール
 列レベル でのアクセス・コントロール
この2つを組み合わせて使用することも可能です。
 LBAC 構成はセキュリティー管理者 により実行されます。
セキュリティー管理者は、システム管理者により SECADM 権限が付与されているユー
ザーです。
この権限が付与されていると、保有者はデータベースのセキュリティー関連のさまざまな
構成を行うことができ、さらにはデータベース・オブジェクトの所有権を転送することもでき
ます。たとえば、SECADM 権限を持つユーザーは、ラベル・ベースのアクセス制御
(LBAC) 機能の一部であるオブジェクトすべての作成、ドロップ、権限付与、取り消しを行
えます。
SECADM だけが行えることは、SYSADM を含め、他のどの権限でも行えません。
3
IBM Software Group | DB2 information management software
LBAC の構成(概要)
セキュリティー・ポリシー
セキュリティー・ラベル
コンポーネント
セキュリティー・ラベル

セキュリティー管理者 (SECADM) は、セキュリティー・ポリシーを作成して
LBAC システムを構成します。
セキュリティー・ポリシー には、どのデータに誰がアクセスできるかを判断する
ために使用される基準(セキュリティー・ラベル・コンポーネント)を記述します。
任意の 1 つの表を保護するために 1 つのセキュリティー・ポリシーしか使用
できませんが、複数のセキュリティー・ポリシーを使用して複数の表を保護する
ことができます。
セキュリティー・ポリシーを作成した後、そのポリシーの一部であるセキュリ
ティー・ラベル というオブジェクトを作成します。
作成が完了すると、セキュリティー・ラベルを表の個々の列と行に関連付けて
そこに保持されているデータを保護することができます。
セキュリティー・ラベルにより保護されるデータは、保護データ と呼ばれます。
セキュリティー管理者は、ユーザーにセキュリティー・ラベルを付与することによ
り、保護データへのアクセスを許可します。ユーザーが保護データへのアクセ
スを試行すると、そのユーザーのセキュリティー・ラベルが、データを保護して
いるセキュリティー・ラベルと比較されます。セキュリティー・ラベルには、保護ラ
ベルによってブロックされるものと、そうでないものがあります。
 セキュリティー・ポリシー



どのセキュリティー・ラベル・コンポーネントが使用されるか
キュリティー・ラベル・コンポーネントを比較する際に、どの規則が使用されるか
ポリシーにより保護されるデータにアクセスする際に、どのオプションの動作が使用されるか
 セキュリティー・ラベル・コンポーネント
 セキュリティー・ラベル・コンポーネントは、組織のセキュリティー構造をモデル化する
ために使用します。
 セキュリティー・ラベル
4
IBM Software Group | DB2 information management software
LBACの構成要素
 セキュリティー・ラベル・コンポーネント
 セキュリティー・ラベル・コンポーネントは、組織のセキュリティー構造をモデル化するために使
用します。
 次の 3 つのタイプのセキュリティー・ラベル・コンポーネントがあります。
 TREE
: Hierarchy (ピラミッド型の階層)
Departments = { Corporate ROOT,
Publishing UNDER Corporate
Software UNDER Corporate
Development UNDER Software
Sales UNDER Software
Support UNDER Software}
 ARRAY
Corporate (root)
Software
Publishing
Development Sales Support
: Ordered Set (順序集合)
警視正
階級 = { 警視正 , 警部 , 巡査部長 , 巡査 }
警部
巡査部長
巡査
 SET
: Set (集合)
projects = { A , B , C , D }
5
IBM Software Group | DB2 information management software
LBACの構成要素
 セキュリティー・ポリシー
 セキュリティー・ラベルとアクセス・ルールの定義をします。
 ポリシーの一部であるセキュリティー・ラベルにおいて、どのセキュリティー・ラベル・コ
ンポーネントが使用されるか
 それらのセキュリティー・ラベル・コンポーネントを比較する際に、どのアクセス・ルール
が使用されるか
– 比較にはLBAC規則セットを使用します。
LBAC規則セットとはセキュリティー・ラベルを比較する際に使用される事前定義さ
れた規則のセットです。
※サポートされる LBAC 規則セットは、事前定義されている DB2LBACRULES だ
けです。
例)
CREATE SECURITY POLICY mysecpolicy
COMPONENTS comp1 , comp2 WITH DB2LBACRULES
 セキュリティー・ポリシーは1表に対し1つしか定義できません。
6
IBM Software Group | DB2 information management software
LBAC規則セット : DB2LBACRULES
 Read access rules
 DB2LBACREADARRAY
 ユーザーの値が保護値(LBACにより保護されたデータ)よりも低い
 DB2LBACREADSET
 ユーザーが保持しない保護値が 1 つ以上ある
 DB2LBACREADTREE
 ユーザーの値がいずれも、保護値のいずれとも等しくないか、その上位でない
 Write access rules
 DB2LBACWRITEARRAY
 ユーザーの値が保護値より高いか、保護値より低い
 DB2LBACWRITESET
 ユーザーが保持しない保護値が 1 つ以上ある
 DB2LBACWRITETREE
 ユーザーの値がいずれも、保護値のいずれとも等しくないか、その上位でない
7
IBM Software Group | DB2 information management software
LBAC規則セット : DB2LBACRULES
 DB2LBACREADSET および DB2LBACWRITESET 規則を適用する例
ブロックされません。値は同じです。
ユーザーの値 A
保護値 A
ブロックされません。ユーザーの値にはエレメント
A が含まれています。
ユーザーの値 (A,B,C)
ユーザーの値 (A,B,C)
ユーザーの値 A
ユーザーの値 ()
保護値 A
保護値 (A,B,D)
保護値 ()
保護値 ()
ブロックされます。エレメント D は保護値には含まれ
ていますが、ユーザーの値には含まれていません。
ブロックされません。空の値ではどの値もブロックさ
れません。
ブロックされません。空の値ではどの値もブロックさ
れません。
8
IBM Software Group | DB2 information management software
LBAC規則セット : DB2LBACRULES
 DB2LBACREADTREE および DB2LBACWRITETREE 規則を適用する例
ブロックされます。エレメント 'Development' はユーザー
の値の 1 つではなく、'Support' および 'Sales' のいずれ
も 'Development' の上位ではありません。
ユーザーの値
(Support,Sales)
保護値
Development
ブロックされません。エレメント 'Software'
は 'Business Sales' の上位です。
Corporate
Publishing
ユーザーの値
(Development,Software)
Software
保護値
(Business Sales,Publishing)
ブロックされません。エレメント 'Publishing'
は両方の値のセットに含まれています。
Development
Sales
Support
ユーザーの値
(Publishing,Sales)
保護値
(Publishing,Support)
ブロックされません。ルート値は他のすべ
ての値の上位です。
Bussiness
Sales
Home
Sales
ユーザーの値
Corporate
ユーザーの値 ()
ユーザーの値
Home Sales
保護値
Development
保護値
Sales
ブロックされます。空の値は空以外のすべての値により
ブロックされます。
ブロックされません。空の値ではどの値も
ブロックされません。
保護値 ()
ブロックされません。空の値ではどの値も
ブロックされません。
ユーザーの値 ()
保護値 ()
9
IBM Software Group | DB2 information management software
LBAC規則セット : DB2LBACRULES
 DB2LBACREADARRAY 規則を適用する例
ブロックされません。‘警部’ は ‘巡査部長' より
高位にあります。
高
ユーザーの値 警部
保護値 巡査部長
警視正
ブロックされません。値は同じです。
警部
ユーザーの値 警部
保護値 警部
ブロックされます。‘警視正’ は ‘警部' より高位
にあります。
巡査部長
ユーザーの値 警部
保護値 警視正
ブロックされます。空の値は空以外のすべて
の値によりブロックされます。
巡査
低
ユーザーの値 ()
保護値 巡査
ブロックされません。空の値ではどの値もブ
ロックされません。
ユーザーの値 巡査
保護値 ()
ブロックされません。空の値ではどの値もブ
ロックされません。
ユーザーの値 ()
保護値 ()
10
IBM Software Group | DB2 information management software
LBAC規則セット : DB2LBACRULES
 DB2LBACWRITEARRAY 規則を適用する例
ブロックされます。 ‘巡査部長’ は ‘警部' より下
位にあります。
高
ユーザーの値 警部
警視正
保護値 巡査部長
ブロックされません。値は同じです。
警部
ユーザーの値 警部
保護値 警部
ブロックされます。‘警視正’ は ‘警部' より高位
にあります。
巡査部長
ユーザーの値 警部
保護値 警視正
ブロックされます。空の値は空以外のすべて
の値によりブロックされます。
巡査
低
ユーザーの値 ()
保護値 巡査
ブロックされません。空の値ではどの値もブ
ロックされません。
ユーザーの値 巡査
保護値 ()
ブロックされません。空の値ではどの値もブ
ロックされません。
ユーザーの値 ()
保護値 ()
11
IBM Software Group | DB2 information management software
セキュリティー・ラベル
 DB2はユーザー、行、列の3つのタイプのセキュリティー・ラベルを区別します
 ユーザー・セキュリティー・ラベル
 データベース・ユーザーに許可されるセキュリティー・ラベル
 行セキュリティー・ラベル
 データベースの行に関係があるセキュリティ・ラベル
 列セキュリティー・ラベル
 データベース・テーブルのデータ列に関係があるセキュリティ・ラベル
 ユーザーは与えられたセキュリティー・ポリシーから以上のセキュリティー・ラベルに対し
Read Access , Write Access , Read/Write Access を許可されます。
 セキュリティー・ラベルは、SQL ステートメントの CREATE SECURITY LABEL で作成
します。セキュリティー・ラベルを作成する際には、以下を指定します。
 ラベルの名
 そのラベルが含まれるセキュリティー・ポリシー
 セキュリティー・ポリシーに含まれる 1 つ以上のコンポーネントの値
12
IBM Software Group | DB2 information management software
LBAC を使用したデータの保護
 LBACを使用することで、データの行またはデータの列の一方または両方
を保護することができます。表内のデータは、表を保護するセキュリティー・
ポリシーの一部であるセキュリティー・ラベルによってのみ保護できます。
データ保護 (セキュリティー・ポリシーの追加を含む) は、CREATE TABLE
または ALTER TABLE ステートメントの実行時に追加できます。
 行レベルで保護されたデーブル作成の例
DB2SECURITYLABEL のデータ・タイプを持つ列を追加することにより、既存の
表内の保護された行を許可することができます。
追加するには表にセキュリティー・ポリシーが定義されていなければなりません。
CREATE TABLE T1 (A DB2SECURITYLABEL,
B INTEGER,
C CHAR(5))
SECURITY POLICY mySecPolicy
13
IBM Software Group | DB2 information management software
LBAC を使用したデータの保護
 列レベルで保護されたデーブル作成の例
CREATE TABLE ステートメントの SECURED WITH 列オプションを使用して表
を作成するときに、列を保護することできます。
追加するには表にセキュリティー・ポリシーが定義されていなければなりません。
CREATE TABLE T1 ( A CHAR(8) SECURED WITH mySecLabel,
B INTEGER,
C CHAR(5))
SECURITY POLICY mySecPolicy
14
IBM Software Group | DB2 information management software
LBACの定義
1. セキュリティー・ポリシー および セキュリティーラベルの定義
1.1
セキュリティー・ラベル・コンポーネントの定義
1.2
セキュリティー・ポリシーの定義
1.3
セキュリティー・ラベルの定義
2. セキュリティー・ポリシー および セキュリティーラベルを付与したテーブル
の定義
3. セキュリティー・ラベルをユーザーへGrant
15
IBM Software Group | DB2 information management software
LBACの定義(例)
 セキュリティー・ポリシー および セキュリティーラベルの定義
 セキュリティー・ラベル・コンポーネントの定義
CREATE SECURITY LABEL COMPONENT SLC_TEST
ARRAY {'CORP','AP','JP'};
 セキュリティー・ポリシーの定義
CREATE SECURITY POLICY TEST_POLICY
COMPONENTS SLC_TEST
WITH DB2LBACRULES;
 セキュリティー・ラベルの定義
CREATE SECURITY LABEL TEST_POLICY.CORP
COMPONENT SLC_TEST 'CORP';
CREATE SECURITY LABEL TEST_POLICY.AP
COMPONENT SLC_TEST 'AP';
CREATE SECURITY LABEL TEST_POLICY.JP
COMPONENT SLC_TEST 'JP';
16
IBM Software Group | DB2 information management software
LBACの定義(例) cont’d
 セキュリティー・ポリシー および セキュリティーラベルを付与したテーブルの定義
 CREATE TABLE TEST (C1 INTEGER,
C2 VARCHAR(5),
C3 INTEGER,
C3_TAG DB2SECURITYLABEL)
SECURITY POLICY TEST_POLICY;
 セキュリティー・ラベルをユーザーへGrant
 GRANT SECURITY LABEL TSET_POLICY.CORP
TO USER corp_user FOR ALL ACCESS;
GRANT SECURITY LABEL TSET_POLICY.AP
TO USER ap_user FOR ALL ACCESS;
GRANT SECURITY LABEL TSET_POLICY.JP
TO USER jp_user FOR ALL ACCESS;
17
IBM Software Group | DB2 information management software
制限事項等
 View
 元表にLBAC保護が定義されているviewにアクセスする際には、元表に対する LBAC 保護が施行されます。
同じビューに 2 人のユーザーがアクセスすると、それぞれの LBAC情報により異なる行が表示される場合があります。
 参照保全制約
 LBAC読み取りアクセス規則は適用されません
 子表に対して CASCADE 操作が実行される際に LBAC 書き込み規則が適用されます。
ユーザーが親を削除したものの、LBAC 書き込み規則違反となるためにどの子も削除できない場合には、エラーとな
ります。
 LBAC は、DAC(任意アクセス制御)により禁止されているデータへのアクセスは、決して許可しません。
 表からの読み取りの許可がない場合には、その表からのデータの読み取りは許可されません。普通なら LBAC に
よってアクセスが許可されるはずの行および列に関しても同様です。
 LBAC は、保護データへのアクセスのみを制限します。無保護のデータへのアクセスには影響ありませ
ん。
 表またはデータベースをドロップする場合、その表またはデータベースに保護データが含まれている場
合であっても、LBAC 情報はチェックされません。
 データをバックアップする際には LBAC 情報はチェックされません。
表のバックアップを実行できる場合、どの行がバックアップされるかについて、データの LBAC 保護によ
り制限されることはまったくありません。
また、バックアップ・メディア上のデータは LBAC により保護されません。データベース上のデータのみ
が保護されます。
 マテリアライズ照会表 (MQT) には適用できません
 ステージング表 には適用できません
 型付き表 には適用できません
 ニックネームには適用できません
18
IBM Software Group | DB2 information management software
複雑なアクセスコントロールはどのように定義されているか?
表 X に対して以下のアクセス制御を実施したい
USER A
USER B
USER C
USER D
USER E

すべてのデータにRead/Writeアクセスできる
東日本のデータにRead/Writeアクセスできる
西日本のデータにRead/Writeアクセスできる
東京のデータのみReadアクセスできる
大阪のデータのみReadアクセスできる
日本
西日本
東日本
大阪
東京
ユーザーの階層構造を定義するには
 セキュリティー・ラベル・コンポーネント で定義します
CREATE SECURITY LABEL COMPONENT SLC_REGION
TREE (
‘日本’ ROOT,
‘東日本’ UNDER ‘日本’,
‘西日本’ UNDER ‘日本’,
‘東京’ UNDER ‘東日本’,
‘大阪’ UNDER ‘西日本'
);
19
IBM Software Group | DB2 information management software
複雑なアクセスコントロールはどのように定義されているか?
USER A
USER B
USER C
USER D
USER E

すべてのデータにRead/Writeアクセスできる
東日本のデータにRead/Writeアクセスできる
西日本のデータにRead/Writeアクセスできる
東京のデータのみReadアクセスできる
大阪のデータのみReadアクセスできる
日本
西日本
東日本
大阪
東京
「USER A はすべてのデータにRead/Writeアクセスできる を定義する」 には
 「すべてのデータへのアクセス」を セキュリティー・ラベル で定義します
CREATE SECURITY LABEL REGION_POLICY.日本
COMPONENT SLC_REGION ‘日本’;
 「すべてのデータにRead/Writeアクセスできる」 をUSER Aにマッピングします
grant security label region_policy.日本 to user JAPAN_USER for all access;
20
IBM Software Group | DB2 information management software
複雑なアクセスコントロールはどのように定義されているか?

定義した複数のセキュリティー・ラベルを表に定義するには
 セキュリティー・ポリシーを作成しそれを表に定義します
セキュリティー・ポリシーの定義
CREATE SECURITY POLICY REGION_POLICY
COMPONENTS SLC_REGION
WITH DB2LBACRULES
RESTRICT NOT AUTHORIZED WRITE SECURITY LABEL;
 セキュリティー・ポリシーを表に定義
CREATE TABLE X (
C1 INT
C2 CHAR(10)
C3 REGION_TAG DB2SECURITYLABEL
) SECURITY POLICY REGION_POLICY;
このカラムにある情報で
アクセス可否をチェック
21
IBM Software Group | DB2 information management software
実際の定義手順
1. セキュリティー・ポリシー および セキュリティーラベルの定義
1.1
セキュリティー・ラベル・コンポーネントの定義
1.2
セキュリティー・ポリシーの定義
1.3
セキュリティー・ラベルの定義
2. セキュリティー・ポリシー および セキュリティーラベルを付与したテーブル
の定義
3. セキュリティー・ラベルをユーザーへGrant
表に定義
階層を定義
ラベルを定義
ポリシーを作成
ユーザーにGrant
22
IBM Software Group | DB2 information management software
列に対するアクセス制御
社員番号
氏名
部署
PHS番号
個人住所
個人携帯
1234
野間
IM Tech
070-
千葉県
090-
5678
竹下
IM Sol
070-
東京都
080-
Blue Page に連絡先を公開しよう
でも個人携帯と住所は絶対教えない!
自分のラインと同じグループのメンバーには携帯を教えてもいいかな。。。
人事には個人情報を見られてもしかたない
人事ユーザー はすべての列に対するR/Wアクセスが可能
グループのユーザーには 個人住所以外を公開 (Read only)
社員全体に対しては個人住所および個人携帯を非公開 (Read only)
23
IBM Software Group | DB2 information management software
列に対するアクセス制御
人事ユーザー はすべての列に対するR/Wアクセスが可能
グループのユーザーには 個人住所以外を公開 (Read only)
社員全体に対しては個人住所および個人携帯を非公開 (Read only)
 階層の定義
CREATE SECURITY LABEL COMPONENT SLC_LEVEL
ARRAY [‘人事’,‘グループ’,‘全社員'];
 セキュリティー・ポリシーの定義
CREATE SECURITY POLICY LEVEL_POLICY
COMPONENTS SLC_LEVEL
WITH DB2LBACRULES
RESTRICT NOT AUTHORIZED WRITE SECURITY LABEL;
24
IBM Software Group | DB2 information management software
列に対するアクセス制御
人事ユーザー はすべての列に対するR/Wアクセスが可能
グループのユーザーには 個人住所以外を公開 (Read only)
社員全体に対しては個人住所および個人携帯を非公開 (Read only)
 セキュリティー・ラベルの定義
CREATE SECURITY LABEL LEVEL_POLICY.人事
COMPONENT LEVEL_REGION ‘人事’;
CREATE SECURITY LABEL LEVEL_POLICY.グループ
COMPONENT LEVEL_REGION ‘グループ’;
CREATE SECURITY LABEL LEVEL_POLICY.全社員
COMPONENT LEVEL_REGION ‘全社員’;
25
IBM Software Group | DB2 information management software
列に対するアクセス制御
 セキュリティー・ポリシーを表に定義
社員番号 CHAR(10) SECURED WITH 全社員,
氏名 CHAR(10) SECURED WITH 全社員,
部署 CHAR(10) SECURED WITH 全社員,
PHS番号 CHAR(10) SECURED WITH 全社員,
個人住所 CHAR(10) SECURED WITH 人事,
個人携帯 CHAR(10) SECURED WITH グループ)
SECURITY POLICY LEVEL_POLICY
CREATE TABLE T1 (
 ユーザーに対しセキュリティー・ラベルをGrant
grant security label level_policy.全社員 to user GUEST for read access;
grant security label level_policy.グループ to user IM_USER for read access;
grant security label level_policy.人事 to user HR_USER for all access;
26
IBM Software Group | DB2 information management software
これまで
と
これから
東日本
東日本
関東
関東
東京
東京
27