5 Oracle Label Securityポリシーの作成
Oracle Label Securityポリシーは、Oracle Label Securityを実装する名前付きのコマンド・セットです。
- Oracle Label Securityポリシーの作成について
Oracle Label Securityポリシーを作成する場合は、一連の一般的なステップに従う必要があります。 - ステップ1: ラベル・セキュリティ・ポリシー・コンテナの作成
Oracle Label Securityポリシー・コンテナは、ポリシー設定の格納場所です。 - ステップ2: ラベル・セキュリティ・ポリシーのデータ・ラベルの作成
ポリシー・コンテナを作成した後は、データベース表の各行にデータ・ラベルを作成できます。 - ステップ3: ラベル・セキュリティ・ポリシーのユーザーの認可
Oracle Label Securityポリシーで保護されているデータにユーザーがアクセスできるように、事前にユーザーを認可しておく必要があります。 - ステップ4: ユーザーおよびトラステッド・ストアド・プログラム・ユニットへの権限の付与
Oracle Label Securityポリシーで保護されているデータをユーザーが読み取ることができるように、READ
などの権限をユーザーに付与できます。 - ステップ5: データベース表またはスキーマへのポリシーの適用
Oracle Label Securityポリシーに対する認可および権限を付与した後は、それをデータベース表またはスキーマに適用できます。 - ステップ6: 表の行へのポリシー・ラベルの追加
ポリシー・ラベルを表の行に追加する必要があります。 - ステップ7: (オプション)監査の構成
SA_USER_ADMIN
P/L SQLパッケージを使用することにより、Oracle Label Securityポリシーを監査できます。 - Enterprise Manager Cloud Controlを使用したOLSポリシーの作成
Oracle Enterprise Manager Cloud ControlでOracle Label Securityポリシーを作成できます。
親トピック: Oracle Label Securityの機能の使用
Oracle Label Securityポリシーの作成について
Oracle Label Securityポリシーを作成する場合は、一般的なステップに従う必要があります。
-
ポリシー名、Oracle Label Securityが保護対象の表に追加する列の名前、この列を非表示にするかどうか、ポリシーを有効にするかどうか、およびポリシーのデフォルトの強制オプションを定義するポリシー・コンテナを作成します。
詳細は、「ステップ1: ラベル・セキュリティ・ポリシー・コンテナの作成」を参照してください。
-
ラベルの機密性レベルの属性を定義します。また、オプションで区分とグループの属性を定義して、ラベルの機密性をさらにフィルタします。属性を定義した後で、ラベル自体を作成し、それらの属性をラベルに関連付けます。
「ステップ2: ラベル・セキュリティ・ポリシーのデータ・ラベルの作成」を参照してください。
-
ポリシーに対してユーザーを認可します。
詳細は、「ステップ3: ラベル・セキュリティ・ポリシーのユーザーの認可」を参照してください。
-
これらのユーザーまたはトラステッド・プログラム・ユニットに権限を付与します。
詳細は、「ステップ4: ユーザーおよびトラステッド・ストアド・プログラム・ユニットへの権限の付与」を参照してください。
-
ポリシーをデータベース表に適用します。または、スキーマ全体にポリシーを適用できます。
詳細は、「ステップ5: データベース表またはスキーマへのポリシーの適用」を参照してください。
-
ポリシー・ラベルを表の行に追加します。ポリシーに使用される表を更新する必要があります。
詳細は、「ステップ6: 表の行へのポリシー・ラベルの追加」を参照してください。
-
オプションで、ユーザーの監査設定を構成します。
詳細は、「ステップ7: (オプション)監査の構成」を参照してください。
親トピック: Oracle Label Securityポリシーの作成
ステップ1: ラベル・セキュリティ・ポリシー・コンテナの作成
Oracle Label Securityポリシー・コンテナは、ポリシー設定の格納場所です。
- ラベル・セキュリティ・ポリシー・コンテナについて
Oracle Label Securityポリシー・コンテナには、ポリシーの動作を記述するメタデータが格納されます。 - ラベル・ポリシー・コンテナの作成
SA_SYSDBA.CREATE_POLICY
プロシージャを使用して、Oracle Label Securityポリシー・コンテナを作成できます。
親トピック: Oracle Label Securityポリシーの作成
ラベル・セキュリティ・ポリシー・コンテナについて
Oracle Label Securityポリシー・コンテナには、ポリシーの動作を記述するメタデータが格納されます。
このコンテナは、ポリシー名、Oracle Label Securityが保護対象の表に追加する列の名前、この列を非表示にするかどうか、およびポリシーのデフォルトの強制オプションを定義します。
保護する表に追加する列には、特定の列の値に基づいて表の特定の行に割り当てられたデータ・ラベル(後で作成)が含まれます。ポリシー作成プロセスでは、ポリシーに特殊なロールを作成し、ポリシーを作成するユーザーにこのロールを付与します。ロール名は、policy_DBA
の形式です。たとえば、EMP_OLS_POL
というポリシーの場合、ロール名はEMP_OLS_POL_DBA
です。このロールは、新規のユーザー・セッションの開始後に有効になります。
Oracle Enterprise Manager Cloud Controlにポリシー・コンテナを作成するか、SA_SYSDBA.CREATE_POLICY
プロシージャを使用できます。
ラベル・ポリシー・コンテナの作成
SA_SYSDBA.CREATE_POLICY
プロシージャを使用して、Oracle Label Securityポリシー・コンテナを作成できます。
-
ポリシーを作成するには、ポリシー名、列名およびデフォルト・オプションを指定して
SA_SYSDBA.CREATE_POLICY
を実行します。
例:
BEGIN SA_SYSDBA.CREATE_POLICY ( policy_name => 'emp_ols_pol', column_name => 'ols_col', default_options => 'read_control, update_control'); END; /
ステップ2: ラベル・セキュリティ・ポリシーのデータ・ラベルの作成
ポリシー・コンテナを作成した後は、データベース表の各行にデータ・ラベルを作成できます。
- データ・ラベルについて
データ・ラベルは、データベース表の行の機密性を示します。 - ポリシー・レベルの機密性コンポーネントについて
レベルは、ラベルを付ける情報の機密性を示すランキングです。 - ポリシー・レベル・コンポーネントの作成
SA_COMPONENTS.CREATE_LEVEL
プロシージャは、ポリシー・レベル・コンポーネントを作成します。 - ポリシー区分コンポーネントについて
区分はラベル付きデータの機密性を記述する領域を識別し、レベルに対して、さらに細分化したレベルを提供します。 - ポリシー区分コンポーネントの作成
SA_COMPONENTS.CREATE_COMPARTMENT
プロシージャは、Oracle Label Security区分を作成します。 - ポリシー・グループ・コンポーネントについて
グループは、EASTERN_REGION
、WESTERN_REGION
、WR_SALES
など、データを所有する組織またはデータにアクセスする組織を識別します。 - ポリシー・データ・ラベル・グループの作成
SA_COMPONENTS.CREATE_GROUP
プロシージャは、データ・ラベル・グループを作成します。 - 名前付きデータ・ラベルへのポリシー・コンポーネントの関連付けについて
データ・ラベル・コンポーネントを定義した後、データ・ラベルを既存のレベルと関連付けることにより、データ・ラベルそのものを作成できます。 - 名前付きデータ・ラベルへのポリシー・コンポーネントの関連付け
SA_LABEL_ADMIN.CREATE_LABEL
プロシージャは、データ・ラベルを作成します。
親トピック: Oracle Label Securityポリシーの作成
データ・ラベルについて
データ・ラベルは、データベース表の行の機密性を示します。
各ラベルは、ユーザー・アクセスに使用するフィルタのタイプを制御する複数のコンポーネントを持つ単一の属性です。
表5-1に、データ・ラベルの様々なコンポーネントについて説明します。
表5-1 機密性データ・ラベルのコンポーネント
コンポーネント | 説明 | 例 |
---|---|---|
レベル |
設定済の順序付けランク内のラベル付きデータの機密性の単一指定 |
|
区分 |
ラベル付きデータに対応付けられた0個以上のカテゴリ |
|
グループ |
データを所有するか、データにアクセスする組織の0個以上の識別子 |
|
すべてのデータ・ラベルにはレベル・コンポーネントを含める必要がありますが、区分コンポーネントとグループ・コンポーネントはオプションです。区分とグループは、ユーザーがデータに対して持つアクセス権を微調整する方法です。すべてのラベル・コンポーネント指定に有効な文字には、英数字、アンダースコアおよび空白も含まれます。(先頭および後続の空白は無視されます。)データ・ラベル自体を作成する前に、ラベル・コンポーネントを定義する必要があります。
Cloud Controlを使用して、既存のポリシーのラベルとそのコンポーネントを作成できます。また、SA_COMPONENTS
PL/SQLパッケージを使用してラベル・コンポーネントを作成し、SA_LABEL_ADMIN
パッケージを使用してデータ・ラベルを作成できます。
ポリシー・レベルの機密性コンポーネントについて
レベルは、ラベルを付ける情報の機密性を示すランキングです。
情報の機密性が高いほど、レベルも高くなります。情報の機密性が低いほど、レベルも低くなります。
ラベルには必ず1つのレベルを含める必要があります。Oracle Label Securityでは、1つのポリシーに最大10,000のレベルを定義できます。レベルごとに、数値書式、詳細名および必須の簡易名を定義する必要があります。
表5-2にレベルの例を示します。
表5-2 ポリシー・レベルの例
数値 | 詳細名 | 短縮名 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
表5-2に、レベルの数値書式、詳細名および簡易名を説明します。
表5-3 レベル指定の書式
書式 | 説明 |
---|---|
数値(タグとも呼ばれる) |
数値のレベルは0から9999です。機密性はこの数値でランキングされるため、機密性の高いレベルほど大きい数値、機密性の低いレベルほど小さい数値を割り当てる必要があります。表5-2では、40 ( 管理者は、レベルの数値に連番を使用しないようにします。適切な方法は、レベル間に等間隔の増分(50や100など)を使用することです。これにより、既存の2つのレベル間に後からレベルを追加挿入できます。 |
詳細名 |
レベルの詳細名は80文字以内です。 |
短縮名 |
短縮名は30文字以内です。 |
レベル(およびその他の各ラベル・コンポーネント)に詳細名と短縮名の両方を定義しますが、検索時に表示されるのは短縮名のみです。ユーザーがラベルを操作する際は、コンポーネントの短縮名のみが使用されます。
レベルの例は、TOP_SECRET
、SECRET
、CONFIDENTIAL
、UNCLASSIFIED
、またはTRADE_SECRET
、PROPRIETARY
、COMPANY_CONFIDENTIAL
、PUBLIC_DOMAIN
などの名前です。
レベルのみを使用する場合、この例のレベル40のユーザーであれば、レベル40以下のすべてのデータ行に対して、アクセスまたは変更ができます。
ポリシー・レベル・コンポーネントの作成
SA_COMPONENTS.CREATE_LEVEL
プロシージャは、ポリシー・レベル・コンポーネントを作成します。
-
ポリシー・レベル・コンポーネントを作成するには、ポリシー名とコンポーネントの詳細を指定して
SA_COMPONENTS.CREATE_LEVEL
を実行します。
例:
BEGIN SA_COMPONENTS.CREATE_LEVEL ( policy_name => 'emp_ols_pol', level_num => 40, short_name => 'HS', long_name => 'HIGHLY_SENSITIVE'); END; /
ポリシー区分コンポーネントについて
コンパートメントは、ラベルが割り当てられたデータの機密性を表す領域を識別し、レベル内のより詳細なレベルを表します。
区分により、データが1つ以上のセキュリティ領域に対応付けられます。特定のプロジェクトに関連するすべてのデータに、同じ区分をラベル付けすることができます。
表5-4に、区分セットの例を示します。
表5-4 ポリシー区分の例
数値 | 詳細名 | 短縮名 |
---|---|---|
|
|
|
|
|
|
|
|
|
表5-5に、区分を指定する様々な方法を示します。
表5-5 区分指定の書式
書式 | 説明 |
---|---|
数値 |
数値の範囲は0から9999です。レベルに使用されている数値とは無関係です。区分の数値は、機密性のレベルを示すわけではありません。区分の数値は、ラベル文字列での区分短縮名の表示順序を制御します。たとえば、表5-4に示した3つの区分すべてとレベル S:OP,CHEM,FINCL これは、 表示順序は、区分に割り当てられた数値の順序に従います。45は65より小さく、65は85より小さい数値です。対照的に、 S:FINCL,OP,CHEM |
詳細名 |
区分の詳細名は80文字以内です。 |
短縮名 |
短縮名は30文字以内です。 |
区分はオプションです。ラベルには最大10,000区分を含めることができます。
区分を含まないラベルがあってもかまいません。たとえば、HIGHLY_SENSITIVE
およびCONFIDENTIAL
レベルは区分なしで指定し、SENSITIVE
レベルは区分を含むように指定できます。
データの機密性を分析すると、一部の区分が特定のレベルでのみ有用であることがわかる場合があります。
図5-1に、区分を使用してデータをカテゴリに分類する方法を示します。
この図では、区分FINCL
、CHEM
およびOP
がレベルHIGHLY_SENSITIVE
(HS
)とともに使用されています。ラベルHIGHLY_SENSITIVE
:FINCL
, CHEM
は、2つの名前付き区分を持つレベル40を示します。区分FINCL
とCHEM
の機密性は同じです。保護されている表の一部のデータがどの区分にも属さない場合もあることに注意してください。
区分を指定した場合、行データへのアクセスが通常は許可されるレベルのユーザーであっても、行ラベルで表示されるすべての区分もユーザーのラベルに含まれていないかぎりアクセスは禁止されます。たとえば、HS
レベルへのアクセス権を付与されるユーザーhpreston
には、FINCL
およびCHEM
へのアクセス権のみ付与され、OP
へのアクセス権は付与されません。
ポリシー区分コンポーネントの作成
SA_COMPONENTS.CREATE_COMPARTMENT
プロシージャは、Oracle Label Security区分を作成します。
-
区分を作成するには、ポリシー名と区分の詳細を指定して、区分を作成するための
SA_COMPONENTS.CREATE_COMPARTMENT
プロシージャを実行します。
例:
BEGIN SA_COMPONENTS.CREATE_COMPARTMENT ( policy_name => 'emp_ols_pol', comp_num => '85', short_name => 'FINCL', long_name => 'FINANCIAL'); END; /
ポリシー・グループ・コンポーネントについて
グループでは、EASTERN_REGION
、WESTERN_REGION
、WR_SALES
など、データを所有する組織またはデータにアクセスする組織を識別します。
特定の部門に関連するすべてのデータに、その部門のグループをラベル付けすることができます。グループは、データを制御された方法で配布したり、組織の変更に適切なタイミングで対処する場合に役立ちます。会社組織の再編時には、データ・アクセス権も再編成に沿って適切に変更できます。
グループは階層型です。組織のインフラストラクチャに基づいてデータにラベルを付けることができます。つまり、グループを親グループに対応付けることができます。
図5-2は、次のような組織階層に対応するグループ・セットを定義する方法を示しています。
WESTERN_REGION
グループには、3つのサブグループWR_SALES
、WR_HUMAN_RESOURCES
およびWR_FINANCE
が含まれています。WR_FINANCE
サブグループは、WR_ACCOUNTS_RECEIVABLE
およびWR_ACCOUNTS_PAYABLE
に分割されています。
表5-6に、この例の組織構造をOracle Label Securityのグループの書式で表す方法を示します。グループに割り当てられた数値書式は表示順序のみに影響します。階層(つまり、親子関係)を別々に指定します。最初にリストされるグループWESTERN_REGION
は、表の残りのグループの親グループです。
表5-6 グループの例
数値 | 詳細名 | 短縮名 | 親グループ |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
表5-7に、グループを指定する際に使用する必要のある書式を示します。
表5-7 グループ指定の書式
書式 | 説明 |
---|---|
数値 |
グループの数値の範囲は0から9999で、ポリシーごとに一意である必要があります。 数値は、ランキングを示すわけではありません。また、親子関係も機密性レベルも示しません。単に、ラベル文字列でのグループの短縮名の表示順序を制御します。 たとえば、表5-6にリストしたようにレベル S:CHEM:WR,WR_HR 1000は1200より前に位置するため、 |
詳細名 |
グループの詳細名は80文字以内です。 |
短縮名 |
短縮名は30文字以内です。 |
グループはオプションです。ラベルには10,000グループまで含むことができます。
すべてのラベルにグループは必要ではありません。データの機密性を分析すると、一部のグループが特定のレベルでのみ使用されている場合があります。たとえば、HIGHLY_SENSITIVE
およびCONFIDENTIAL
ラベルはグループなしで指定し、SENSITIVE
ラベルはグループを含むように指定できます。
ポリシー・データ・ラベル・グループの作成
SA_COMPONENTS.CREATE_GROUP
プロシージャは、データ・ラベル・グループを作成します。
-
必要なデータ・ラベル・グループごとに
SA_COMPONENTS.CREATE_GROUP
プロシージャを実行します。
次の例では、最初のCREATE_GROUP
プロシージャは親グループWR
を作成し、2番目のプロシージャはparent_name
パラメータを使用して2番目のグループをWR
グループに関連付けます。
BEGIN SA_COMPONENTS.CREATE_GROUP ( policy_name => 'emp_ols_pol', group_num => 1000, short_name => 'WR', long_name => 'WESTERN_REGION'); END; / BEGIN SA_COMPONENTS.CREATE_GROUP ( policy_name => 'emp_ols_pol', group_num => 1100, short_name => 'WR_SAL', long_name => 'WR_SALES', parent_name => 'WR'); END; /
名前付きデータ・ラベルへのポリシー・コンポーネントの関連付けについて
データ・ラベル・コンポーネントを定義した後、データ・ラベルを既存のレベルと関連付けることにより、データ・ラベルそのものを作成できます。
オプションで、この関連付けに区分とグループを含めることもできます。
Oracle Enterprise Manager Cloud ControlまたはSA_LABEL_ADMIN.CREATE_LABEL
プロシージャを使用できます。ラベルの文字列表現の構文は、次のとおりです。
level:compartment1,...,compartmentn:group1,...,groupn
ラベルを指定するテキスト文字列は、英数字、空白およびアンダースコアを含めて4,000文字以内です。ラベル名は、大文字/小文字を区別します。そのため大文字、小文字または大/小文字両方で入力できますが、文字列がデータ・ディクショナリに格納され、表示されるときには大文字が使用されます。各コンポーネントのセットをコロンで区切ります。この構文では、後続のデリミタを入力する必要はありません。
たとえば、次のような有効なラベルを作成できます。
SENSITIVE:FINANCIAL,CHEMICAL:EASTERN_REGION,WESTERN_REGION CONFIDENTIAL:FINANCIAL:VP_GRP SENSITIVE HIGHLY_SENSITIVE:FINANCIAL SENSITIVE::WESTERN_REGION
名前付きデータ・ラベルへのポリシー・コンポーネントの関連付け
SA_LABEL_ADMIN.CREATE_LABEL
プロシージャは、データ・ラベルを作成します。
-
ポリシー名およびポリシー・コンポーネントの詳細を指定して
SA_LABEL_ADMIN.CREATE_LABEL
を実行します。
例:
BEGIN SA_LABEL_ADMIN.CREATE_LABEL ( policy_name => 'emp_ols_pol', label_tag => '1310', label_value => 'S:FINCL,CHEM:ER,WR', data_label => TRUE); END; /
この例では、label_value
設定は短縮名書式であり、次の詳細名書式に変換されます。
SENSITIVE:FINANCIAL,CHEMICAL:EASTERN_REGION,WESTERN_REGION
データ・ラベルを作成する場合、2つの追加アクションが発生します。
-
ラベルが有効なデータ・ラベルとして自動的に指定されます。この機能では、データに割当て可能なラベルが制限されます。Oracle Label Securityでは、Oracle Internet Directoryで事前定義済のデータ・ラベルから、有効なデータ・ラベルを実行時に動的に作成することもできます。ただし、ほとんどのユーザーは、データ・ラベルの増加を制限するために、ラベルを手動で作成する方法を選択します。
-
ラベルを表すテキスト文字列に数値ラベル・タグが関連付けられます。保護されている表のポリシー・ラベル列には、テキスト文字列ではなく、このラベル・タグが格納されます。
注意:
Oracle Internet Directoryを使用しないOracle Label Securityインストールでは、有効なデータ・ラベルの動的作成には
TO_DATA_LABEL
ファンクションを使用します。また、その使用は厳密に制御する必要があります。
ステップ3: ラベル・セキュリティ・ポリシーのユーザーの認可
Oracle Label Securityポリシーで保護されているデータにユーザーがアクセスできるように、事前にユーザーを認可しておく必要があります。
- ラベル・セキュリティ・ポリシーのユーザーの認可について
ユーザーを認可する場合、データ・ラベルの定義方法に基づいて行データにアクセスできるようにします。 - レベルの認可について
デフォルト、最小および最大の認可レベルを明示的に設定できます。 - レベルの認可
SA_USER_ADMIN.SET_LEVELS
プロシージャは、ポリシー・レベル・コンポーネントに対してユーザーを認可します。 - 区分の認可について
特定のレベルに対してユーザーを認可した後、オプションでセッション・ラベルに追加する区分を指定できます。 - 区分の認可
SA_USER_ADMIN.SET_COMPARTMENTS
プロシージャは、区分コンポーネントに対してユーザーを認可します。 - グループの認可について
ユーザーがセッション・ラベルに配置できるグループのリストを指定できます。 - グループの認可
SA_USER_ADMIN.SET_GROUPS
プロシージャは、ポリシー・グループに対してユーザーを認可します。
親トピック: Oracle Label Securityポリシーの作成
ラベル・セキュリティ・ポリシーのユーザーの認可について
ユーザーを認可する場合、データ・ラベルの定義方法に基づいて行データにアクセスできるようにします。
まず、ラベルに関連付けられる各レベル、区分およびグループについてユーザーの認可を設定します。ユーザーに現在付与されている権限は、DBA_SA_USER_PRIVSデータ・ディクショナリ・ビューを問い合せることで確認できます。
レベルの認可について
デフォルト、最小および最大の認可レベルを明示的に設定できます。
表5-8 管理者が設定する認可レベル
認可 | 意味 |
---|---|
最大レベル |
ユーザーが読取りおよび書込み操作中にアクセスできる機密性の最大ランキング。 |
最小レベル |
ユーザーが書込み操作中にアクセスできる機密性の最小ランキング。最大レベルは最小レベル以上に設定する必要があります。 |
デフォルト・レベル |
Oracle Databaseへの接続時にデフォルトで想定されるレベル |
デフォルト行レベル |
Oracle Databaseへのデータの挿入時にデフォルトで使用されるレベル |
たとえば、ユーザーhpreston
に対して次の認可レベルを設定できます。
タイプ | 短縮名 | 詳細名 | 説明 |
---|---|---|---|
最大値 |
|
|
ユーザーの最上位レベル |
最小値 |
|
|
ユーザーの最下位レベル |
デフォルト |
|
|
ユーザーのデフォルト・レベル |
行 |
|
|
|
レベルの認可
SA_USER_ADMIN.SET_LEVELS
プロシージャは、ポリシー・レベル・コンポーネントに対してユーザーを認可します。
レベルを指定する場合は、詳細名ではなく簡易名を常に使用する必要があります。
-
ポリシー名、ユーザー名およびレベルを指定して、レベルを認可するための
SA_USER_ADMIN.SET_LEVELS
を実行します。
例:
BEGIN SA_USER_ADMIN.SET_LEVELS ( policy_name => 'ols_admin_pol', user_name => 'hpreston', max_level => 'HS', min_level => 'P', def_level => 'C', row_level => 'C'); END; /
区分の認可について
特定のレベルに対してユーザーを認可した後、オプションでセッション・ラベルに追加する区分を指定できます。
区分ごとに、書込みアクセス権を明示的に指定する必要があります。ユーザーは、書込み認可を持たない区分を含む行を直接挿入、更新または削除することはできません。
たとえば、ユーザーhpreston
に対して次の認可区分を設定できます。
短縮名 | 詳細名 | 書込み | デフォルト | 行 |
---|---|---|---|---|
|
|
あり |
あり |
なし |
|
|
あり |
あり |
なし |
|
|
あり |
あり |
あり |
区分の認可
SA_USER_ADMIN.SET_COMPARTMENTS
プロシージャは、区分コンポーネントに対してユーザーを認可します。
区分を指定する場合は、詳細名ではなく簡易名を常に使用する必要があります。
-
ポリシー名、ユーザー名および区分の詳細を指定して、区分に対してユーザーを認可するための
SA_USER_ADMIN.SET_COMPARTMENTS
を実行します。
例:
BEGIN SA_USER_ADMIN.SET_COMPARTMENTS ( policy_name => 'ols_admin_pol', user_name => 'hpreston', read_comps => 'FINCL', write_comps => 'FINCL', def_comps => 'FINCL', row_comps => 'FINCL'); END; /
このプロシージャを実行した後で、SA_USER_ADMIN.ADD_COMPARTMENTS
プロシージャを実行することで追加区分に対してユーザーを認可できます。
グループの認可について
ユーザーがセッション・ラベルに配置できるグループのリストを指定できます。
リストに含めるグループごとに、書込みアクセス権を明示的に指定する必要があります。
たとえば、次の認可グループを設定できます。
短縮名 | 詳細名 | 書込み | デフォルト | 行 | 親 |
---|---|---|---|---|---|
|
|
あり |
あり |
あり |
|
|
|
あり |
あり |
なし |
|
|
|
あり |
あり |
なし |
|
グループの認可
SA_USER_ADMIN.SET_GROUPS
プロシージャは、ポリシー・グループに対してユーザーを認可します。
-
ポリシー名、ユーザー名および目的の認可を指定して、ユーザーを認可するための
SA_USER_ADMIN.SET_GROUPS
を実行します。グループを指定する場合は、詳細名ではなく簡易名を使用する必要があります。
例:
BEGIN SA_USER_ADMIN.SET_GROUPS ( policy_name => 'ols_admin_pol', user_name => 'hpreston', read_groups => 'WR_AP', write_groups => 'WR_AP', def_groups => 'WR_AP', row_groups => 'WR_AP'); END; /
ステップ4: ユーザーおよびトラステッド・ストアド・プログラム・ユニットへの権限の付与
Oracle Label Securityポリシーで保護されているデータをユーザーが読み取ることができるように、READ
などの権限をユーザーに付与できます。
- ポリシーのユーザーおよびトラステッド・プログラム・ユニットへの権限の付与について
ポリシー・レベル、区分およびグループに対してユーザーを認可した後で、ユーザー権限を付与する準備ができます。 - ユーザーへの権限の付与
SA_USER_ADMIN.SET_USER_PRIVS
プロシージャは、ユーザーに権限を付与します。 - トラステッド・プログラム・ユニットへの権限の付与
SA_USER_ADMIN.SET_PROG_PRIVS
プロシージャは、トラステッド・プログラム・ユニットに権限を付与します。
親トピック: Oracle Label Securityポリシーの作成
ポリシーのユーザーおよびトラステッド・プログラム・ユニットへの権限の付与について
ポリシー・レベル、区分およびグループに対してユーザーを認可した後で、ユーザー権限を付与する準備ができます。
トラステッド・プログラム・ユニットは、Oracle Label Security権限を付与されているファンクション、プロシージャまたはパッケージです。トラステッド・ストアド・プログラム・ユニットの作成方法は、標準的なプロシージャ、ファンクションまたはパッケージを作成する場合と同じで、CREATE PROCEDURE
、CREATE FUNCTION
またはCREATE PACKAGE
およびCREATE PACKAGE BODY
の各文を使用します。プログラム・ユニットは、Oracle Label Security権限を付与するとトラステッド・プログラム・ユニットになります。
表5-9に、ユーザーまたはトラステッド・ストアド・プログラム・ユニットに付与できる権限のサマリーを示します。
表5-9 Oracle Label Securityの権限
セキュリティ権限 | 説明 |
---|---|
|
ポリシーで保護されている全データへの読取りアクセスを許可します。 |
|
ポリシーで保護されている全データへの完全な読取りおよび書込みアクセスを許可します。 |
|
行のグループから独立して、行の区分で認可されているデータへのセッション・アクセスを許可します。 |
|
セッションに対して、そのラベルと権限を別のユーザーのラベルおよび権限に変更することを許可します。 |
|
ユーザーに対して、行ラベル内でそのユーザーが認可されている最大レベル以下のレベルのみの設定または引上げを許可します。( |
|
ユーザーに対して、行ラベル内でそのユーザーが認可されている最小レベル以上のレベルへの設定または引下げを許可します。( |
|
ユーザーに対して、行ラベルのグループと区分の設定または変更は許可し、レベルの変更は禁止します。( |
ユーザーへの権限の付与
SA_USER_ADMIN.SET_USER_PRIVS
プロシージャは、ユーザーに権限を付与します。
-
ポリシー名、ユーザー名および付与する権限を指定して、
SA_USER_ADMIN.SET_USER_PRIVS
を実行します。
例:
BEGIN SA_USER_ADMIN.SET_USER_PRIVS( policy_name => 'ols_admin_pol', user_name => 'hpreston', privileges => 'WRITEDOWN'); END; /
トラステッド・プログラム・ユニットへの権限の付与
SA_USER_ADMIN.SET_PROG_PRIVS
プロシージャは、トラステッド・プログラム・ユニットに権限を付与します。
-
ポリシー名、スキーマ名、プログラム・ユニット名および付与する権限を指定して、権限を付与するための
SA_USER_ADMIN.SET_PROG_PRIVS
を実行します。
例:
BEGIN SA_USER_ADMIN.SET_PROG_PRIVS ( policy_name => 'oe_ols_pol', schema_name => 'oe', program_unit_name => 'check_order_updates', privileges => 'READ'); END; /
ステップ5: データベース表またはスキーマへのポリシーの適用
Oracle Label Securityポリシーに対する認可および権限を付与した後は、それをデータベース表またはスキーマに適用できます。
- データベース表またはスキーマへのポリシーの適用について
表にポリシーを適用すると、ポリシーは自動的に有効になります。 - スキーマへのポリシーの適用
SA_POLICY_ADMIN.APPLY_TABLE_POLICY
プロシージャは、ポリシーをスキーマ内の表かスキーマ全体のどちらかに適用します。
親トピック: Oracle Label Securityポリシーの作成
データベース表またはスキーマへのポリシーの適用について
表にポリシーを適用する場合、ポリシーは自動的に有効になります。
ポリシーを無効にすると保護がオフになりますが、ポリシーは表に適用されたままになります。ポリシーを有効にすると、特定の表またはスキーマに対するそのポリシーの保護がオンになり、強制されます。
ポリシーを削除すると、表またはスキーマから完全に削除されます。ただし、ポリシーのラベル列およびそのラベルは、明示的に削除しないかぎり表に残ります。
今後スキーマに作成できる表のデフォルトのポリシー強制オプションを変更できます。ただし、この変更は、スキーマにある既存の表のポリシー施行オプションには反映されません。
既存の表の強制オプションを変更するには、最初に表からポリシーを削除し、目的の変更を行ってから、ポリシーを表に再適用します。
外部表に対してOracle Label Securityポリシーを強制することはできません。
ポリシー・コンポーネントを作成し、ユーザー認証、権限およびそれらの監査を構成した後で、ポリシーをデータベース表またはスキーマ全体に適用できます。
ポリシーをデータベース表に適用する場合、ポリシー名およびターゲット・スキーマ表に加えて、次の情報を指定する必要があります。
-
table_options
: 表に使用するポリシー強制オプションのカンマ区切りのリストです。NULL
の場合は、ポリシーのデフォルト・オプションが使用されます。 -
label_function
: デフォルトとして使用するラベル値を戻すファンクションをコールする文字列です。たとえば、my_label(:new.dept,:new.status)
を指定すると、行のDEPT
列とSTATUS
列の新規の値に基づいてラベルが計算されます。 -
predicate
:READ_CONTROL
のラベルベースの述語と(AND
またはOR
を使用して)結合する追加の述語です。
スキーマでOracle Label Securityのポリシーを使用する場合は、次の側面に注意してください。
-
ポリシーを空のスキーマに適用すると、そのスキーマ内で表を作成するたびにポリシーが適用されます。ポリシーをスキーマに適用すると、選択したデフォルト・オプションは追加するすべての表に適用されます。
-
保護を解除するために表からポリシーを削除してから、
SA_POLICY_ADMIN.ENABLE_SCHEMA_POLICY
を実行しても、その表の保護は解除されたままになります。表を再び保護する場合は、その表にポリシーを適用するか、スキーマにポリシーを再適用する必要があります。
すでにポリシーで保護されている表を含むスキーマにポリシーを適用すると、将来のすべての表には、ポリシーの適用時に指定した新規オプションが設定されます。既存の表に設定されていたオプションは変更されません。
スキーマへのポリシーの適用
SA_POLICY_ADMIN.APPLY_TABLE_POLICY
プロシージャは、ポリシーをスキーマ内の表かスキーマ全体のどちらかに適用します。
-
ポリシー名、スキーマ名および必要なオプションを指定して、ポリシーをスキーマに適用するための
SA_POLICY_ADMIN.APPLY_TABLE_POLICY
を実行します。
次の例に、SA_POLICY_ADMIN.APPLY_TABLE_POLICY
プロシージャを使用してols_admin_pol
ポリシーをHR.EMPLOYEES
表に適用する方法を示します。
BEGIN SA_USER_ADMIN.APPLY_TABLE_POLICY ( policy_name => 'ols_admin_pol', schema_name => 'hr', table_name => 'employees', table_options => 'READ_CONTROL,WRITE_CONTROL,CHECK_CONTROL', label_function => ''hr.gen_emp_label(:new.department_id,:new.salary', predicate => NULL); END; /
この例では、SA_POLICY_ADMIN.APPLY_SCHEMA_POLICY
プロシージャを使用してポリシーをスキーマ全体に適用する方法を示します。
BEGIN SA_USER_ADMIN.APPLY_SCHEMA_POLICY ( policy_name => 'ols_admin_pol', schema_name => 'hr', default_options => NULL); END; /
ステップ6: 表の行へのポリシー・ラベルの追加
ポリシー・ラベルを表の行に追加する必要があります。
- 表の行へのポリシー・ラベルの追加について
ポリシーを表に適用した後は、データ・ラベルを表の行に追加する必要があります。 - 表の行へのポリシー・ラベルの追加
ポリシー・ラベルを追加する表を更新する必要があります。
親トピック: Oracle Label Securityポリシーの作成
表の行へのポリシー・ラベルの追加について
ポリシーを表に適用した後は、データ・ラベルを表の行に追加する必要があります。
これらのラベルは、以前に表内に作成したポリシーのラベル列に格納されています。表を更新するユーザーには、ポリシーに対するFULL
セキュリティ権限が必要です。通常、このユーザーは表の所有者です。
親トピック: ステップ6: 表の行へのポリシー・ラベルの追加
ステップ7: (オプション)監査の構成
SA_USER_ADMIN
P/L SQLパッケージを使用することにより、Oracle Label Securityポリシーを監査できます。
- 監査の構成について
ポリシーに対してユーザーを認可し、権限を付与した後で、各ユーザーおよびポリシー自体について監査を構成できます。 - 監査の構成
SA_USER_ADMIN.AUDIT
プロシージャは、非統合監査環境でユーザーに対して監査を構成します。
親トピック: Oracle Label Securityポリシーの作成
監査の構成について
ポリシーに対してユーザーを認可し、権限を付与した後で、各ユーザーおよびポリシー自体について監査を構成できます。
統合監査が有効になっていない場合は、この項の手順を使用して監査を構成します。有効になっている場合は、『Oracle Databaseセキュリティ・ガイド』の説明に従って統合監査ポリシーを作成する必要があります。
表5-10で、使用可能な監査オプションについて説明します。
表5-10 Oracle Label Securityの監査オプション
オプション | 説明 |
---|---|
|
表およびスキーマに対する指定したOracle Label Securityポリシーの適用を監査します。 |
|
表およびスキーマからの指定したOracle Label Securityポリシーの削除を監査します。 |
|
ユーザー認証およびユーザーとプログラムの権限の設定を監査します。 |
|
ポリシー固有のすべての権限の使用を監査します。 |
親トピック: ステップ7: (オプション)監査の構成
監査の構成
SA_USER_ADMIN.AUDIT
プロシージャは、非統合監査環境でユーザーに対して監査を構成します。
-
ポリシー名、1人以上のユーザー、および適切な監査オプションを指定して、ユーザーの監査を構成するための
SA_USER_ADMIN.AUDIT
を実行します。
例:
BEGIN SA_USER_ADMIN.AUDIT( policy_name => 'ols_admin_pol', users => 'hpreston', audit_option => 'REMOVE', audit_type => 'BY ACCESS', success => NULL); END; /
関連項目
親トピック: ステップ7: (オプション)監査の構成
Enterprise Manager Cloud Controlを使用したOLSポリシーの作成
Oracle Enterprise Manager Cloud ControlでOracle Label Securityポリシーを作成できます。
- Cloud Controlを使用したラベル・セキュリティ・ポリシー・コンテナの作成
Cloud ControlでOracle Label Securityポリシー・コンテナを作成できます。 - Cloud Controlを使用したポリシー・コンポーネントの作成
ポリシーのコンテナを作成し、その強制オプションを設定した後は、ポリシーに区分を作成できます。 - Cloud Controlを使用したポリシーのデータ・ラベルの作成
Cloud ControlでOracle Label Securityポリシーのデータ・ラベルを作成できます。 - Cloud Controlを使用したポリシーに対するユーザーの認可、権限付与および監査
ユーザー作成プロセスで、ポリシーのユーザーに対して認可、権限の付与、および監査の設定を行うことができます。 - Cloud Controlを使用したトラステッド・プログラム・ユニットへの権限の付与
Cloud Controlで、トラステッド・プログラム・ユニットに権限を付与できます。 - Cloud Controlを使用したデータベース表へのポリシーの適用
Cloud Controlで、Oracle Label Securityポリシーをデータベース表に適用できます。 - Cloud Controlを使用した表の行へのポリシー・ラベルの適用
Cloud Controlで、Oracle Label Securityポリシー・ラベルを表の行に適用できます。 - Cloud Controlを使用したOracle Label Securityポリシーの監査
統合監査を使用している場合以外は、Cloud ControlでOracle Label Securityポリシーを監査できます。
親トピック: Oracle Label Securityポリシーの作成
Cloud Controlを使用したポリシーのデータ・ラベルの作成
Cloud ControlでOracle Label Securityポリシーのデータ・ラベルを作成できます。
また、SA_LABEL_ADMIN
パッケージを使用してポリシーのラベル・コンポーネントを定義できます。
Cloud Controlを使用したポリシーに対するユーザーの認可、権限付与および監査
ユーザー作成プロセスで、ポリシーのユーザーに対して認可、権限の付与、および監査の設定を行うことができます。
また、SA_USER_ADMIN
パッケージを使用してユーザーを認可する方法もあります。
Cloud Controlを使用したトラステッド・プログラム・ユニットへの権限の付与
Cloud Controlで、トラステッド・プログラム・ユニットに権限を付与できます。
また、SA_USER_ADMINパッケージを使用してトラステッド・プログラム・ユニットを認可する方法もあります。