この章では、データ・ラベルおよびユーザー・ラベルの基本概念と、Oracle Label Securityの理解に役立つ用語について説明します。
この章の内容は、次のとおりです。
ラベルベース・セキュリティは、機密データへのアクセスを柔軟に制御する手段を提供します。Oracle Label Securityでは、データへのアクセスは、ユーザーの識別情報とラベル、およびデータの機密性とラベルに基づいて制御されます。ラベル・セキュリティは、ユーザーが表やビューなどのオブジェクト内のデータに対して実行できる操作を決定する任意アクセス制御以外の保護を追加します。
Oracle Label Securityポリシーでは、データへのアクセスは次の3つのディメンションで制御されます。
データ・ディメンション | 説明 |
---|---|
データ・ラベル | データの行ラベルは、その行の機密性のレベルと性質を示し、ユーザーがその行にアクセスするために満たす必要のある追加の基準を指定します。 |
ユーザー・ラベル | ユーザー・ラベルは、ユーザーの機密レベルに加えてユーザーのアクセスをラベル付きデータに制約する区分とグループを指定します。各ユーザーには、レベル、区分およびグループの範囲が割り当てられ、各セッションはその認可範囲内で動作してその範囲内のラベル付きデータにアクセスできます。 |
ポリシー権限 | ユーザーに、特殊な操作を実行する権利(権限)、またはそのラベル認可を超えてデータにアクセスする権利(権限)を付与できます。 |
ここでの説明はデータへのアクセスに関するものです。データの読取りや書込みなどの特定のタイプのアクセスは、第3章「アクセス制御および権限」で説明しています。ポリシー権限については、第8章「ユーザーのラベルおよび権限の管理」を参照してください。
データベース表にOracle Label Securityポリシーが適用されると、各行のラベルを格納するために表に1列が追加されます。管理者は、この列を表示するか非表示にするかを選択できます。
この項では、ラベル用に定義される要素について説明します。
機密性ラベルは、複数のコンポーネントを持つ単一の属性です。すべてのデータ・ラベルにはレベル・コンポーネントを含める必要がありますが、区分コンポーネントとグループ・コンポーネントはオプションです。管理者は、ラベルを作成する前にラベル・コンポーネントを定義する必要があります。
表2-1 機密性ラベルのコンポーネント
コンポーネント | 説明 | 例 |
---|---|---|
レベル |
ラベル付きデータの機密性が指定された設定済の順序付けランクの単一指定 |
CONFIDENTIAL (1)、SENSITIVE (2)、HIGHLY_SENSITIVE (3) |
区分 |
ラベル付きデータに対応付けられた0個以上のカテゴリ |
FINANCIAL、STRATEGIC、NUCLEAR |
グループ |
データを所有するか、データにアクセスする組織の0個以上の識別子 |
EASTERN_REGION、WESTERN_REGION |
すべてのラベル・コンポーネント指定に有効な文字には、英数字、アンダースコアおよび空白も含まれます。(先頭および後続の空白は無視されます。)
次の図に、レベル、区分およびグループを使用してデータを論理的に分類できる3つのディメンションを示します。
レベルは、ラベルを付ける情報の機密性を示すランキングです。情報の機密性が高いほど、レベルも高くなります。情報の機密性が低いほど、レベルも低くなります。
ラベルには必ず1つのレベルを含める必要があります。Oracle Label Securityでは、1つのポリシーに最大10,000のレベルを定義できます。Oracle Label Security管理者は、各レベルに1つの数値と複数の文字を定義します。
表2-3 レベル指定の書式
書式 | 説明 |
---|---|
数値(タグとも呼ばれる) |
数値のレベルは0から9999です。機密性はこの数値でランキングされるため、機密性の高いレベルほど大きい数値、機密性の低いレベルほど小さい数値を割り当てる必要があります。表2-2では、40(HIGHLY_SENSITIVE)は30、20および10より上位レベルです。 管理者は、レベルの数値に連番を使用しないようにします。適切な方法は、レベル間に等間隔の増分(50や100など)を使用することです。これにより、既存の2つのレベル間に後からレベルを追加挿入できます。 |
詳細名 |
レベルの詳細名は80文字以内です。 |
短縮名 |
短縮名は30文字以内です。 |
管理者はレベル(およびその他の各ラベル・コンポーネント)に詳細名と短縮名の両方を定義しますが、検索時に表示されるのは短縮名のみです。ユーザーがラベルを操作する際は、コンポーネントの短縮名のみが使用されます。
この他に一般にユーザーが定義することの多いレベル・セットとして、TOP_SECRET、SECRET、CONFIDENTIALおよびUNCLASSIFIED、あるいは、TRADE_SECRET、PROPRIETARY、COMPANY_CONFIDENTIAL、PUBLIC_DOMAINなどがあります。
レベルのみを使用する場合、この例のレベル40のユーザーであれば、レベル40以下のすべてのデータ行に対して、アクセスまたは変更ができます。
注意: このマニュアルで使用されているレベルおよびラベル(TOP_SECRET、SECRET、CONFIDENTIALなど)はすべて一例です。 |
区分はラベル付きデータの機密性を記述する領域であり、レベルに対して、さらに細分化したレベルを提供します。
区分により、データが1つ以上のセキュリティ領域に対応付けられます。特定のプロジェクトに関連するすべてのデータに、同じ区分をラベル付けすることができます。たとえば、次のような区分セットを定義できます。
表2-5 区分指定の書式
書式 | 説明 |
---|---|
数値 |
数値の範囲は0から9999です。レベルに使用されている数値とは無関係です。区分の数値は、機密性のレベルを示すわけではありません。区分の数値は、ラベル文字列での区分短縮名の表示順序を制御します。たとえば、表2-4に示した3つの区分すべてとレベルSENSITIVEを持つラベルを作成するとします。このラベルを文字列で表示すると、次のようになります。 S:OP,CHEM,FINCL 表示順序は、区分に割り当てられた数値の順序に従います。45は65より小さく、65は85より小さい数値です。対照的に、FINCL区分に割り当てられた数値が5の場合、ラベルの文字列書式は次のようになります。 S:FINCL,OP,CHEM |
詳細名 |
区分の詳細名は80文字以内です。 |
短縮名 |
短縮名は30文字以内です。 |
区分はオプションです。ラベルには0個以上の区分を含めることができます。Oracle Label Securityでは、最高10,000の区分を定義できます。
区分を含まないラベルがあってもかまいません。たとえば、HIGHLY_SENSITIVEおよびCONFIDENTIALレベルは区分なしで指定し、SENSITIVEレベルは区分を含むように指定できます。
データの機密性を分析すると、一部の区分が特定のレベルでのみ有用であることがわかる場合があります。図2-2「ラベルのマトリックス」に、区分を使用してデータをカテゴリに分類する方法を示します。
この図では、区分FINCL、CHEMおよびOPがレベルHIGHLY_SENSITIVE(40)とともに使用されています。ラベルHIGHLY_SENSITIVE:FINCL, CHEMは、2つの名前付き区分を持つレベル40を示します。区分FINCLとCHEMの機密性は同じです。保護されている表の一部のデータがどの区分にも属さない場合もあることに注意してください。
区分が指定されている場合、行データへのアクセスが通常は許可されるレベルのユーザーであっても、行ラベルで表示されるすべての区分もユーザーのラベルに含まれていないかぎりアクセスは禁止されます。
グループでは、EASTERN_REGION、WESTERN_REGION、WR_SALESなど、データを所有する組織またはデータにアクセスする組織を識別します。特定の部門に関連するすべてのデータに、その部門のグループをラベル付けすることができます。グループは、データを制御された方法で送信したり、組織の変更に適切なタイミングで対処する場合に役立ちます。会社組織の再編時には、データ・アクセス権も再編成に沿って適切に変更できます。
グループは階層型です。組織のインフラストラクチャに基づいてデータにラベルを付けることができます。つまり、グループを親グループに対応付けることができます。たとえば、次のような組織階層に対応するグループ・セットを定義できます。
WESTERN_REGIONグループには、3つのサブグループWR_SALES、WR_HUMAN_RESOURCESおよびWR_FINANCEが含まれています。WR_FINANCEサブグループは、WR_ACCOUNTS_RECEIVABLEおよびWR_ACCOUNTS_PAYABLEに分割されています。
表2-6に、この例の組織構造をOracle Label Securityのグループの書式で表す方法を示します。グループに割り当てられた数値が表示順序のみに影響することに注意してください。管理者は、階層(つまり、親子関係)を別々に指定します。
表2-6 グループの例
数値 | 詳細名 | 短縮名 | 親グループ |
---|---|---|---|
1000 |
WESTERN_REGION |
WR |
|
1100 |
WR_SALES |
WR_SAL |
WR |
1200 |
WR_HUMAN_RESOURCES |
WR_HR |
WR |
1300 |
WR_FINANCE |
WR_FIN |
WR |
1310 |
WR_ACCOUNTS_PAYABLE |
WR_AP |
WR_FIN |
1320 |
WR_ACCOUNTS_RECEIVABLE |
WR_AR |
WR_FIN |
表2-7 グループ指定の書式
書式 | 説明 |
---|---|
数値 |
グループの数値の範囲は0から9999で、ポリシーごとに一意である必要があります。 数値は、ランキングを示すわけではありません。また、親子関係も機密性レベルも示しません。単に、ラベル文字列でのグループの短縮名の表示順序を制御します。 たとえば、レベルSENSITIVE、区分CHEMICAL、グループWESTERN_REGIONおよびWR_HUMAN_RESOURCESを持つラベルが作成されているとします。このラベルを文字列で表示すると、次のようになります。 S:CHEM:WR,WR_HR 1000は1200より前に位置するため、WRはWR_HRより前に表示されます。 |
詳細名 |
グループの詳細名は80文字以内です。 |
短縮名 |
短縮名は30文字以内です。 |
グループはオプションであり、ラベルには0個以上のグループを含めることができます。Oracle Label Securityでは、最高10,000のグループを定義できます。
グループを含まないラベルがあってもかまいません。データの機密性を分析すると、一部のグループが特定のレベルでのみ使用されている場合があります。たとえば、HIGHLY_SENSITIVEおよびCONFIDENTIALラベルはグループなしで指定し、SENSITIVEラベルはグループを含むように指定できます。
表2-8に、各種業界での代表的な実装方法をリストし、Oracle Label Securityのレベル、区分およびグループの柔軟性を示します。
表2-8 業界別の代表的なレベル、区分およびグループ
業界 | レベル | 区分 | グループ |
---|---|---|---|
防衛 |
TOP_SECRET SECRET CONFIDENTIAL UNCLASSIFIED |
ALPHA DELTA SIGMA |
UK NATO SPAIN |
金融サービス |
ACQUISITIONS CORPORATE CLIENT OPERATIONS |
INSURANCE EQUITIES TRUSTS COMMERCIAL_LOANS CONSUMER_LOANS |
CLIENT TRUSTEE BENEFICIARY MANAGEMENT STAFF |
司法 |
NATIONAL_SECURITY SENSITIVE PUBLIC |
CIVIL CRIMINAL |
ADMINISTRATION DEFENSE PROSECUTION COURT |
医療 |
PRIMARY_PHYSICIAN PATIENT_CONFIDENTIAL PATIENT_RELEASE |
PHARMACEUTICAL INFECTIOUS_DISEASES |
CDC RESEARCH NURSING_STAFF HOSPITAL_STAFF |
B2B |
TRADE_SECRET PROPRIETARY COMPANY_CONFIDENTIAL PUBLIC |
MARKETING FINANCIAL SALES PERSONNEL |
AJAX_CORP BILTWELL_CO ACME_INC ERSATZ_LTD |
管理者は、ラベル・コンポーネントを定義した後に、レベル、区分およびグループの特定セットを組み合せてデータ・ラベルを作成します。次に、ラベル・コンポーネントに可能なすべての順列組合せの中から、データベース内で有効なデータ・ラベルとして実際に使用する組合せを指定します。
この作業には、Oracle Enterprise Managerのグラフィカル・ユーザー・インタフェースを使用する方法と、コマンドライン・プロシージャを使用する方法があります。ラベルの文字列表現の構文は、次のとおりです。
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
有効なデータ・ラベルが作成されると、さらに次の2つのことが行われます。
ラベルが有効なデータ・ラベルとして自動的に指定されます。この機能では、データに割当て可能なラベルが制限されます。Oracle Label Securityでは、Oracle Internet Directoryで事前定義済のデータ・ラベルから、有効なデータ・ラベルを実行時に動的に作成することもできます。ただし、ほとんどのユーザーは、データ・ラベルの増加を制限するために、ラベルを手動で作成する方法を選択します。
ラベルを表すテキスト文字列に数値ラベル・タグが関連付けられます。保護されている表のポリシー・ラベル列には、テキスト文字列ではなく、このラベル・タグが格納されます。
注意: Oracle Internet Directoryを使用しないOracle Label Securityインストールでは、有効なデータ・ラベルの動的作成にはTO_DATA_LABELファンクションを使用します。また、その使用は厳密に制御する必要があります。「TO_DATA_LABELを使用したラベルの挿入」を参照してください。 |
ユーザーがアクセスできるのは、各自のラベル認可の範囲内にあるデータのみです。ユーザーには、次の情報が割り当てられています。
最大レベルと最小レベル
認可された区分のセット
認可されたグループ(および、暗黙的にすべてのサブグループの認可)のセット
たとえば、ユーザーに最大レベルSENSITIVEが割り当てられている場合、そのユーザーは潜在的にSENSITIVE、CONFIDENTIALおよびUNCLASSIFIEDのデータへのアクセス権を持つことになります。このユーザーは、HIGHLY_SENSITIVEデータにはアクセスできません。
図2-4「例: データ・ラベルとユーザー・ラベル」に、アクセス制御を行うためにデータ・ラベルとユーザー・ラベルがOracle Label Securityでどのように相互作用するかを示します。データ・ラベルはディスクリートですが、ユーザー・ラベルは包含的です。認可された区分およびグループに応じて、ユーザーは潜在的に各自の範囲内で全レベルに対応するデータにアクセスできます。
この図のように、ユーザー1は、最大レベルがHSであるため、行2、3および4にアクセスできます。また、FIN区分へのアクセス権を持っており、階層形式のグループWRへのアクセス権にはグループWR_SALが含まれています。CHEM区分はないため、行1にはアクセスできません。(ユーザーが行にアクセスするためには、その行のデータ・ラベルのすべての区分に対する認可が必要です。)
ユーザー2は行3および4にアクセスできます。その最大レベルはSで、これは行2のHSより下位です。このユーザーは、FIN区分へのアクセス権を持っていますが、グループWR_SALに対する認可しか持っていません。そのため、行1にはアクセスできません。
図2-5「ラベル・コンポーネントの相互関係」に、組織階層に関連したデータがどのようにデータのレベルおよび区分に一致するかを示します。
たとえば、UNITED_STATESグループに3つのサブグループEASTERN_REGION、CENTRAL_REGIONおよびWESTERN_REGIONが含まれているとします。WESTERN_REGIONサブグループは、さらにCALIFORNIAおよびNEVADAに分割されています。各グループおよびサブグループにはそれぞれ、有効な区分およびレベルに属するデータがデータベース内に存在している可能性があります。したがって、CALIFORNIAサブグループ内に、FINANCIALであるSENSITIVEデータが存在する場合があります。
データには通常、単一グループがラベル付けされますが、これに対し、ユーザーのラベルは階層形式であることに注意してください。ユーザーが特定のグループを持つ場合、そのグループに暗黙的に子グループが含まれている場合があります。このように、UNITED_STATESグループに関連付けられたユーザーはすべてのデータへのアクセス権を持ちますが、CALIFORNIAに関連付けられたユーザーは、そのサブグループに関連するデータへのアクセス権のみを持ちます。
Oracle Label Securityには、データベース内で使用するラベルを定義して管理できるように、管理インタフェースが用意されています。Oracle Database内でラベルを定義するには、Oracle Label Securityパッケージを使用する方法と、Oracle Enterprise Managerを使用する方法があります。管理者は、最初にラベルを構成するレベル、区分およびグループを定義してから、データベースの内容に関して有効なデータ・ラベルのセットを定義できます。
管理者は、データベース内の個々の表またはアプリケーション・スキーマ全体にポリシーを適用できます。最後に、管理者は各データベース・ユーザーに、個々のジョブに必要なラベル・コンポーネント(および、必要に応じて権限)を割り当てます。