データ・ラベルおよびユーザー・ラベルの基本概念を理解する必要があります。
内容は次のとおりです。
ラベルベース・セキュリティは、機密データへのアクセスを柔軟に制御する手段を提供します。
Oracle Label Securityでは、データへのアクセスは、ユーザーの識別情報とラベル、およびデータの機密性とラベルに基づいて制御されます。ラベル・セキュリティは、ユーザーが表やビューなどのオブジェクト内のデータに対して実行できる操作を決定する任意アクセス制御以外の保護を追加します。
表2-1に、Oracle Label Securityポリシーがデータへのアクセス制御に使用する3つのディメンションを示します。
表2-1 Oracle Label Securityのデータ・ディメンション
データ・ディメンション | 説明 |
---|---|
データ・ラベル |
データの行ラベルは、その行の機密性のレベルと性質を示し、ユーザーがその行にアクセスするために満たす必要のある追加の基準を指定します。 |
ユーザー・ラベル |
ユーザー・ラベルは、ユーザーの機密レベルに加えてユーザーのアクセスをラベル付きデータに制約する区分とグループを指定します。各ユーザーには、レベル、区分およびグループの範囲が割り当てられ、各セッションはその認可範囲内で動作してその範囲内のラベル付きデータにアクセスできます。 |
ポリシー権限 |
ユーザーに、特殊な操作を実行する権利(権限)、またはそのラベル認可を超えてデータにアクセスする権利(権限)を付与できます。 |
ここでの説明はデータへのアクセスに関するものです。データの読取りや書込みなどの特定のタイプのアクセスは、「アクセス制御および権限」で説明しています。
データベース表にOracle Label Securityポリシーが適用されると、各行のラベルを格納するために表に1列が追加されます。管理者は、この列を表示するか非表示にするかを選択できます。
ユーザーのラベルと権限を管理するには、SA_USER_ADMIN
パッケージに対するEXECUTE
権限およびpolicy
_DBA
ロールを持っている必要があります。
SA_USER_ADMIN
パッケージには、Oracle Label Securityユーザーのセキュリティ属性を管理するためのファンクションが用意されています。また、ユーザーのレベル、区分およびグループを指定するなど、ユーザー・ラベルをコンポーネント別に管理できるように複数のプロシージャが含まれています。さらに、コンポーネントではなくラベル全体の文字列表現を受け入れるプロシージャもあります。レベル、区分およびグループのパラメータでは、各コンポーネントに対して定義された短縮名が使用されることに注意してください。
すべてのラベルおよび権限情報は、Oracle Label Securityのデータ・ディクショナリ表に格納されます。ユーザーがデータベースに接続すると、Oracle Label Securityのデータ・ディクショナリに格納されている情報に基づいてそのセッション・ラベルが確立されます。
ユーザーを複数のポリシーに基づいて認可できることに注意してください。
関連項目:
policy_
DBA
ロールの詳細は、「Oracle Label Security管理者の責任」を参照してください
ラベルで使用される要素について理解する必要があります。
内容は次のとおりです。
機密性ラベルは、複数のコンポーネントを持つ単一の属性です。
すべてのデータ・ラベルにはレベル・コンポーネントを含める必要がありますが、区分コンポーネントとグループ・コンポーネントはオプションです。管理者は、ラベルを作成する前にラベル・コンポーネントを定義する必要があります。
注意:
管理者はラベル・コンポーネントに詳細名と短縮名の両方を定義しますが、検索時に表示されるのは短縮名のみです。ユーザーがラベルを操作する際は、コンポーネントの短縮名のみが使用されます。簡易名の例を、次のコンポーネント固有の例の表に示します。
表2-2 機密性ラベルのコンポーネント
コンポーネント | 説明 | 例 |
---|---|---|
レベル |
設定済の順序付けランク内のラベル付きデータの機密性の単一指定 |
|
区分 |
ラベル付きデータに対応付けられた0個以上のカテゴリ |
|
グループ |
データを所有するか、データにアクセスする組織の0個以上の識別子 |
|
すべてのラベル・コンポーネント指定に有効な文字には、英数字、アンダースコアおよび空白も含まれます。(先頭および後続の空白は無視されます。)
次の図に、レベル、区分およびグループを使用してデータを論理的に分類できる3つのディメンションを示します。
レベル は、ラベルを付ける情報の機密性を示すランキングです。
情報の機密性が高いほど、レベルも高くなります。情報の機密性が低いほど、レベルも低くなります。
情報の機密性が高いほど、レベルも高くなります。情報の機密性が低いほど、レベルも低くなります。
ラベルには必ず1つのレベルを含める必要があります。Oracle Label Securityでは、1つのポリシーに最大10,000のレベルを定義できます。レベルごとに、Oracle Label Security管理者が数値書式、詳細名および必須の簡易名を定義する必要があります。
たとえば、次のようなレベル・セットを定義できます。
表2-2に、レベルの例を示します。
表2-3 レベルの例
数値 | 詳細名 | 短縮名 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
表2-4に、レベルを指定する様々な方法を示します。
表2-4 レベル指定の書式
書式 | 説明 |
---|---|
数値(タグとも呼ばれる) |
数値のレベルは0から9999です。機密性はこの数値でランキングされるため、機密性の高いレベルほど大きい数値、機密性の低いレベルほど小さい数値を割り当てる必要があります。表2-3では、40 ( 管理者は、レベルの数値に連番を使用しないようにします。適切な方法は、レベル間に等間隔の増分(50や100など)を使用することです。これにより、既存の2つのレベル間に後からレベルを追加挿入できます。 |
詳細名 |
レベルの詳細名は80文字以内です。 |
短縮名 |
短縮名は30文字以内です。 |
管理者はレベル(およびその他の各ラベル・コンポーネント)に詳細名と短縮名の両方を定義しますが、Oracle Label Securityポリシーが有効な場合にレコードの検索時に表示されるのは短縮名のみです。ユーザーがラベルを操作する際は、コンポーネントの短縮名のみが使用されます。
一般にユーザーが定義することの多いその他のレベル・セットとして、TOP_SECRET
、SECRET
、CONFIDENTIAL
、UNCLASSIFIED
、またはTRADE_SECRET
、PROPRIETARY
、COMPANY_CONFIDENTIAL
、PUBLIC_DOMAIN
などがあります。
レベルのみを使用する場合、この例のレベル40のユーザーであれば、レベル40以下のすべてのデータ行に対して、アクセスまたは変更ができます。
注意:
このマニュアルで使用されているレベルおよびラベル(TOP_SECRET
、SECRET
、CONFIDENTIAL
など)はすべて一例です。
区分はラベル付きデータの機密性を記述する領域であり、レベルに対して、さらに細分化したレベルを提供します。
区分により、データが1つ以上のセキュリティ領域に対応付けられます。特定のプロジェクトに関連するすべてのデータに、同じ区分をラベル付けすることができます。たとえば、次のような区分セットを定義できます。
表2-5に、区分の例を示します。
表2-5 区分の例
数値 | 詳細名 | 短縮名 |
---|---|---|
|
|
|
|
|
|
|
|
|
表2-6に、区分を指定する様々な方法を示します。
表2-6 区分指定の書式
書式 | 説明 |
---|---|
数値 |
数値の範囲は0から9999です。レベルに使用されている数値とは無関係です。区分の数値は、機密性のレベルを示すわけではありません。区分の数値は、ラベル文字列での区分短縮名の表示順序を制御します。たとえば、表2-5に示した3つの区分すべてとレベル S:OP,CHEM,FINCL これは、 表示順序は、区分に割り当てられた数値の順序に従います。45は65より小さく、65は85より小さい数値です。対照的に、 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
など、データを所有する組織またはデータにアクセスする組織を識別します。
特定の部門に関連するすべてのデータに、その部門のグループをラベル付けすることができます。グループは、データを制御された方法で送信したり、組織の変更に適切なタイミングで対処する場合に役立ちます。会社組織の再編時には、データ・アクセス権も再編成に沿って適切に変更できます。
グループは階層型です。組織のインフラストラクチャに基づいてデータにラベルを付けることができます。つまり、グループを親グループに対応付けることができます。
図2-3に、次のような組織階層に対応するグループ・セットを定義する方法を示します。
WESTERN_REGION
グループには、3つのサブグループWR_SALES
、WR_HUMAN_RESOURCES
およびWR_FINANCE
が含まれています。WR_FINANCE
サブグループは、WR_ACCOUNTS_RECEIVABLE
およびWR_ACCOUNTS_PAYABLE
に分割されています。
表2-7に、この例の組織構造をOracle Label Securityのグループの書式で表す方法を示します。グループに割り当てられた数値が表示順序のみに影響することに注意してください。管理者は、階層(つまり、親子関係)を別々に指定します。
表2-7 グループの例
数値 | 詳細名 | 短縮名 | 親グループ |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
表2-8に、グループを指定する様々な方法を示します。
表2-8 グループ指定の書式
書式 | 説明 |
---|---|
数値 |
グループの数値の範囲は0から9999で、ポリシーごとに一意である必要があります。 数値は、ランキングを示すわけではありません。また、親子関係も機密性レベルも示しません。単に、ラベル文字列でのグループの短縮名の表示順序を制御します。 たとえば、表2-7にリストしたようにレベル S:CHEM:WR,WR_HR 1000は1200より前に位置するため、 |
詳細名 |
グループの詳細名は80文字以内です。 |
短縮名 |
短縮名は30文字以内です。 |
グループはオプションであり、ラベルには0個以上のグループを含めることができます。Oracle Label Securityでは、最高10,000のグループを定義できます。
グループを含まないラベルがあってもかまいません。データの機密性を分析すると、一部のグループが特定のレベルでのみ使用されている場合があります。たとえば、HIGHLY_SENSITIVE
およびCONFIDENTIAL
ラベルはグループなしで指定し、SENSITIVE
ラベルはグループを含むように指定できます。
関連項目:
Oracle Label Securityのレベル、区分およびグループは、様々な業界での実装に対応するように設計されています。
表2-9に、各種業界での代表的な実装方法をリストし、Oracle Label Securityのレベル、区分およびグループの柔軟性を示します。
表2-9 業界別の代表的なレベル、区分およびグループ
業界 | レベル | 区分 | グループ |
---|---|---|---|
B2B |
|
|
|
金融サービス |
|
|
|
司法 |
|
|
|
医療 |
|
|
|
防衛 |
|
|
|
ラベル・コンポーネントを定義した後に、レベル、区分およびグループの特定セットを組み合せてデータ・ラベルを作成できます。
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を使用する方法があります。管理者は、最初にラベルを構成するレベル、区分およびグループを定義してから、データベースの内容に関して有効なデータ・ラベルのセットを定義できます。
管理者は、データベース内の個々の表またはアプリケーション・スキーマ全体にポリシーを適用できます。最後に、管理者は各データベース・ユーザーに、個々のジョブに必要なラベル・コンポーネント(および、必要に応じて権限)を割り当てます。