ヘッダーをスキップ

Oracle Database 2日でセキュリティ・ガイド
11g リリース1(11.1)

E05781-03
目次
目次
索引
索引

戻る 次へ

6 データの保護

この章の内容は次のとおりです。

データの保護について

Oracle Databaseには、データを保護する方法が多数用意されています。この章では、サイトでのデータの保護に使用できる次の方法について説明します。

透過的なデータ暗号化によるデータの透過的な暗号化

透過的データ暗号化により、表領域または1つ以上の表の列をすばやく暗号化できます。実装も簡単で、他のタイプのデータベースの暗号化よりも多くの利点があります。

この項の内容は次のとおりです。

機密データの暗号化について

暗号化されたデータを読めるのは受信者のみです。暗号化を使用すると、オフサイトのストレージに送信されたバックアップ・メディアなど、保護されていない可能性のある環境でデータを保護できます。

暗号化されたデータには、次のコンポーネントがあります。

データを暗号化するタイミング

多くの場合、コンプライアンス規則を遵守するために機密データを暗号化します。たとえば、クレジット・カード番号、社会保障番号、病歴に関する情報などの機密データは、暗号化する必要があります。

データベース管理者からのデータへのアクセスを制限するため、これまでユーザーはデータの暗号化を求めてきました。しかし問題は暗号化よりも、むしろアクセス制御にあります。Oracle Database Vaultを使用してデータベース管理者からアプリケーション・データへのアクセスを制御することで、この問題に対処できます。

多くの場合、クレジット・カード番号や社会保障番号などの機密データは、バックアップ・テープやディスク・ドライバの紛失または盗難時にアクセスされないように暗号化します。近年では、ペイメント・カード産業(PCI)データ・セキュリティ標準や医療保険の相互運用性と説明責任に関する法律(HIPAA)などの業界規制に従って、クレジット・カード情報や医療情報の保護に暗号化がますます使用されています。

関連項目:

格納されたデータの暗号化に関してよくある誤解については、『Oracle Databaseセキュリティ・ガイド』を参照してください。 

透過的データ暗号化の動作

透過的データ暗号化を使用すると、個々の表列もしくは表領域全体を暗号化できます。ユーザーが暗号化された列にデータを挿入すると、透過的データ暗号化により、挿入されたデータが自動的に暗号化されます。ユーザーが列を選択すると、データは自動的に復号化されます。

透過的データ暗号化を使用してデータを暗号化するには、次のコンポーネントを作成します。

ユーザーが暗号化された列にデータを入力すると、Oracle Databaseにより次の手順が実行されます。

  1. ウォレットからマスター・キーを取得します。

  2. データ・ディクショナリの表の暗号化キーを復号化します。

  3. 暗号化キーを使用して、ユーザーが暗号化した列に入力したデータを暗号化します。

  4. 暗号化した形式でデータをデータベースに格納します。

ユーザーがデータを選択した場合も、同じようなプロセスが実行されます。Oracle Databaseによりデータが復号化され、その後、データがクリア・テキスト形式で表示されます。

透過的データ暗号化には、次の利点があります。

透過型データ暗号化では、データが暗号化された列から取得されるときおよび暗号化された列に挿入されるときにのみ、パフォーマンスに影響します。暗号化されていない列に関する操作では、パフォーマンスが低下することはありません。これらの列が含まれる表に、暗号化された列が含まれている場合も同様です。暗号化されたデータは、クリア・テキスト・データより多くの記憶域を必要とします。平均的には、1つの列を暗号化すると、行ごとに32バイトから48バイトの記憶域が余分に必要になります。

関連項目:

透過型データ暗号化の使用に関する詳細は、『Oracle Database Advanced Security管理者ガイド』を参照してください。 

透過的データ暗号化を使用するためのデータの構成

透過的データ暗号化の使用を開始するには、ウォレットとマスター・キーのセットを作成する必要があります。ウォレットは、他のOracle Databaseコンポーネントと共有するデフォルトのデータベース・ウォレットを使用することも、特に透過的データ暗号化で使用される個別のウォレットを使用することもできます。オラクル社では、個別のウォレットを使用してマスター暗号化キーを格納することをお薦めします。このウォレットは、透過的データ暗号化により暗号化されるすべてのデータで使用されます。

次の手順を実行して、透過型データ暗号化を使用するように表列を設定します。

手順1: ウォレットの場所を設定する

sqlnet.oraファイルでウォレットに対するディレクトリの場所を指定します。この手順は1回のみ実行します。

ウォレットの場所を設定するするには、次のようにします。
  1. sqlnet.oraファイルのバックアップ・コピーを作成します。このファイルのデフォルトの場所は、$ORACLE_HOME/network/adminディレクトリです。

  2. $ORACLE_HOMEディレクトリに、ウォレットを格納するディレクトリを作成します。

    たとえば、C:¥oracle¥product¥11.1.0¥db_1ディレクトリにORA_WALLETSという名前のディレクトリを作成します。

  3. sqlnet.oraファイルの最後に、次のコードと同様のコードを追加します。ORA_WALLETSは、ウォレットを格納するディレクトリの名前を表しています。

    ENCRYPTION_WALLET_LOCATION=
     (SOURCE=
      (METHOD=file)
       (METHOD_DATA=
        (DIRECTORY=C:¥oracle¥product¥11.1.0¥db_1¥ORA_WALLETS)))
    
    
  4. sqlnet.oraファイルを保存して閉じます。

  5. SQL*Plusを起動し、SYSとしてログオンし、AS SYSOPERで接続します。

    SQLPLUS "SYS/AS SYSOPER"
    Enter password: password
    
    

    SQL*Plusが起動し、デフォルトのデータベースに接続してから、SQL>プロンプトが表示されます。

    SQL*Plusの起動の詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。

  6. 次のSQL文を入力し、データベースを停止してから再起動します。

    SHUTDOWN IMMEDIATE
    STARTUP
    

手順2: ウォレットを作成する

ウォレットを作成するには、ALTER SYSTEM SQL文を使用します。デフォルトでは、それまで使用されたマスター・キーの履歴がOracleウォレットに格納されます。これによりマスター・キーを変更でき、また、古いマスター・キーを使用して暗号化されたデータを復号化できます。大/小文字が区別されるウォレット・パスワードをデータベース管理者に知らせないことで、職務分離が実現されます。データベース管理者はデータベースを再起動できますが、ウォレットは閉じられており、ウォレット・パスワードを知っているセキュリティ管理者により手動で開かれる必要があります。

ウォレットを作成するには、次のようにします。
  1. SQL*Plusで、SYSTEMなどの管理権限を持つユーザーまたはセキュリティ管理者として接続します。

    次に例を示します。

    CONNECT SYSTEM
    Enter password: password
    
    
  2. 次のALTER SYSTEM文を入力します。passwordは、暗号化キーに割り当てるパスワードです。

    ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "password";
    
    

    パスワードは二重引用符で囲みます。Oracle Databaseで作成した他のパスワードと同様に、パスワードはクリア・テキストまたは動的ビューや動的ログには表示されません。

    この文により、新しい暗号化キーを使用するウォレットが生成され、このキーがデータの透過的な暗号化の現行のマスター・キーに設定されます。マスター暗号化キーを構成するために公開鍵基盤(PKI)を使用する場合は、証明書IDを指定します。証明書IDは、Oracleウォレットに格納される証明書の固有のIDを含む文字列です。次の構文を使用します。

    ALTER SYSTEM SET ENCRYPTION KEY certificate_ID IDENTIFIED BY "password";
    
    

手順3: ウォレットを開く(または閉じる)

ウォレット・キーを作成した直後は、ウォレットは開かれており、いつでもデータの暗号化を開始できます。ただし、ウォレットを作成した後にデータベースを再起動した場合は、透過的データ暗号化を使用する前に手動でウォレットを開く必要があります。

ウォレットを開くには、次のようにします。

ほとんどの場合、ウォレットを閉じるためのセッションが必要がないかぎり、ウォレットは開いたままにしておきます。マスター・キーへのアクセスを無効にし、暗号化された列へのアクセスを防止する場合は、ウォレットを閉じることができます。ただし、暗号化されていないデータは使用可能です。透過的データ暗号化を実行するには、ウォレットが開かれている必要があります。ウォレットを再度開くには、ALTER SYSTEM SET WALLET OPEN IDENTIFIED BY password文を使用します。

ウォレットを閉じるには、次のようにします。

手順4: データを暗号化(または復号化)する

sqlnet.oraファイルでウォレットのディレクトリの場所を作成し、ウォレット自体を作成したら、個々の表列もしくは表領域全体のいずれかを暗号化できます。

この項の内容は次のとおりです。

表の個々の列の暗号化

どの列を暗号化の対象として指定するかは、政府によるセキュリティ規則(カリフォルニア州上院法案1386)もしくは企業(MasterCardやVISAなど)が使用するプライベート標準によって決定します。クレジット・カード番号、社会保障番号、その他の個人情報(PII)はこのカテゴリに分類されます。暗号化が必要な他のデータ(企業秘密、研究結果、従業員の給与、ボーナスなど)は、内部のセキュリティ・ポリシーで定義されます。いつデータを暗号化し、いつ暗号化しないかについては、「データを暗号化するタイミング」を参照してください。

暗号化する列を選択するには、次のガイドラインに従います。

表の列を暗号化するには次のようにします。
  1. 必ずウォレット・キーを作成して開いておきます。

    ウォレット・キーの作成方法については、「手順2: ウォレットを作成する」を参照してください。既存のウォレット・キーを開くには、「手順3: ウォレットを開く(または閉じる)」を参照してください。

  2. Database Controlを起動します。

    Database Controlを起動する手順については、『Oracle Database 2日でデータベース管理者』を参照してください。

  3. 管理者のユーザー名(SYSTEMまたはセキュリティ管理者の名前など)とパスワードを入力し、「ログイン」をクリックします。

    データベースのホームページが表示されます。

  4. 「スキーマ」をクリックして「スキーマ」サブページを表示します。

  5. 「データベース・オブジェクト」で「表」を選択します。

    「表」ページが表示されます。

  6. 次のいずれかの操作を行います。

    • 新しい表を作成するには、「作成」をクリックしてから表示されたページの質問に回答し、表の作成を開始します。

    • 既存の表を変更するには、スキーマ名を「スキーマ」フィールドに、表名を「オブジェクト名」フィールドに入力して表名を検索します(パーセント記号(%)ワイルドカード文字を使用して表のグループを検索できます。たとえば、Oで始まるすべての表を検索するには、O%を使用します。)。表が「表」ページに示されている場合は、その表を選択して「編集」をクリックします。

    「表の作成」または「表の編集」ページで、暗号化オプションを設定できます。

    たとえば、OE.ORDERS表の列を暗号化する場合、「表の編集」ページは次のように表示されます。


    画像の説明

  7. 「表の作成」(または「表の編集」)ページで、次の手順を実行します。

    1. 暗号化する列を選択します。

      索引付けされた列や、外部キー制約を使用する列(主キー列または一意キー列)は選択しないでください。これらの列は暗号化できません。これらの列には、名前の左側に鍵またはチェック・マーク・アイコンがあります。

    2. 「暗号化オプション」をクリックして、「表」ページの暗号化オプションを表示します。

    3. 「暗号化アルゴリズム」リストから次のオプションを選択します。

      • AES192: キーの長さを192ビットに設定します。AESは「Advanced Encryption Standard」の略です。

      • 3DES168: キーの長さを168ビットに設定します。3DESは「Triple Data Encryption Standard」の略です。

      • AES128: キーの長さを128ビットに設定します。デフォルトのオプションです。

      • AES256: キーの長さを256ビットに設定します。

    4. 「キーの生成」で、「ランダムにキーを生成」または「キーの指定」のどちらかを選択します。「キーの指定」を選択した場合は、「キーの入力」および「キーの確認」フィールドにシード値の文字を入力します。

      「ランダムにキーを生成」設定はソルトを有効にします。ソルトは、暗号化されたデータのセキュリティを強化する方法で、暗号化される前のデータに追加されるランダムな文字列です。繰り返されるテキストが、暗号化されたときには異なって表示されます。ソルトによって、攻撃者は、暗号化されたテキストのパターン一致をデータの盗用に使用できなくなります。

    5. 「続行」をクリックして「表の作成」(または「表の編集」)ページに戻ります。

    6. 「暗号化」の下のボックスを選択して、列の暗号化を有効にします。

  8. 「続行」をクリックします。

    表の作成(または「表の編集」 )ページが表示されます。

列内の既存のデータおよび将来格納されるデータは、データベース・ファイルに書き込まれるときに暗号化され、認可されたユーザーが選択したときに復号化されます。表の更新時は、読取りアクセスのみが可能です。データ操作言語(DML)文が必要な場合は、オンラインで再定義できます。

表領域の暗号化

新規表領域の作成中に新規表領域を暗号化することはできますが、既存の表領域を暗号化することはできません。回避策として、CREATE TABLE AS SELECTALTER TABLE MOVEを使用するか、またはOracle Data Pumpインポートを使用して既存の表領域からデータを取得し、暗号化されている表領域に格納することができます。表領域の作成の詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。

表領域を暗号化するには、次のようにします。
  1. 必ずウォレット・キーを作成して開いておきます。

    ウォレット・キーの作成方法については、「手順2: ウォレットを作成する」を参照してください。既存のウォレット・キーを開くには、「手順3: ウォレットを開く(または閉じる)」を参照してください。

  2. Database Controlを起動します。

    Database Controlを起動する手順については、『Oracle Database 2日でデータベース管理者』を参照してください。

  3. 管理者のユーザー名(SYSTEMまたはセキュリティ管理者の名前など)とパスワードを入力し、「ログイン」をクリックします。

    データベースのホームページが表示されます。

  4. 「サーバー」をクリックして、「サーバー」サブページを表示します。

  5. 「記憶域」で、「表領域」をクリックします。

    「表領域」ページが表示されます。

  6. 「作成」をクリックしてから表示されたページの質問に回答し、表領域と必要なデータ・ファイルの作成を開始します。

  7. 「表領域の作成」ページで、次のステップを実行します。

    1. 「タイプ」で、「永続」の「暗号化」ボックスを選択します。

    2. 「暗号化」オプションを選択して、「暗号化オプション」ページを表示します。

    3. 「暗号化アルゴリズム」リストから次のオプションを選択します。

      • AES192: キーの長さを192ビットに設定します。AESは「Advanced Encryption Standard」の略です。

      • 3DES168: キーの長さを168ビットに設定します。3DESは「Triple Data Encryption Standard」の略です。

      • AES128: キーの長さを128ビットに設定します。デフォルトのオプションです。

      • AES256: キーの長さを256ビットに設定します。

      暗号化アルゴリズムの詳細は、「ネットワーク暗号化の設定」の手順5の「使用可能なメソッド」を参照してください。

    4. 「続行」をクリックします。

      「表領域の作成」ページが表示されます。

  8. 「OK」をクリックします。

    既存の表領域のリストに新規表領域が表示されます。既存の表領域は暗号化できないことに注意してください。

    関連項目:

     

既存の暗号化データのチェック

すでに暗号化されているデータについて、データベースに問い合せることができます。暗号化された個々の列、暗号化された列を含む現行のデータベース・インスタンスのすべての表、暗号化されているすべての表領域をチェックできます。

この項の内容は次のとおりです。

ウォレットが開いているか閉じているかのチェック

V$ENCRYPTION_WALLETビューを実行することで、ウォレットが開いているか閉じているかを確認できます。

ウォレットが開いているか閉じているかチェックするには、次のようにします。

個々の表の暗号化されている列のチェック

SQL*PlusでDESCDESCRIBE)文を使用して、データベース表内の暗号化されている列をチェックします。

個々の表の暗号化されている列をチェックするには、次のようにします。

現行のデータベース・インスタンスで暗号化されているすべての表列のチェック

暗号化されているすべての表列をチェックするには、DBA_ENCRYPTED_COLUMNSビューを使用します。

現行のデータベース・インスタンスで暗号化されているすべての表列をチェックするには、次のようにします。

現行のデータベース・インスタンスで暗号化されている表領域のチェック

表6-1に、暗号化されている表領域のチェックに使用できるデータ・ディクショナリ・ビューを示します。

表6-1    暗号化されている表領域のデータ・ディクショナリ・ビュー 
データ・ディクショナリ・ビュー  説明 

DBA_TABLESPACES 

データベース内のすべての表領域が示されます。たとえば、表領域が暗号化されているかどうかを調べるには、次のように入力します。

SELECT TABLESPACE_NAME, ENCRYPTED FROM DBA_TABLESPACES

TABLESPACE_NAME ENC
---------------------------- ----
SYSTEM NO
SYSAUX NO
UNCOTBS1 NO
TEMP NO
USERS NO
EXAMPLE NO
SECURESPACE YES
 

USER_TABLESPACES 

現在のユーザーがアクセス可能な表領域が示されます。DBA_TABLESPACESと同じ列(PLUGGED_IN列を除く)が含まれています。 

V$ENCRYPTED_TABLESPACE 

暗号化されている表領域に関する情報が示されます。次に例を示します。

SELECT * FROM V$ENCRYPTED_TABLESPACES;

TS# ENCRYPTIONALG ENCRYPTEDTS
----------- -------------- -----------
6 AES128 YES

このリストには、表領域番号、暗号化アルゴリズム、暗号化が有効か無効かなどが示されます。 

関連項目:

データ・ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。 

Oracle Virtual Private Databaseによるデータ・アクセスの制御

Oracle Virtual Private Database(VPD)では、ユーザーが実行する任意のSQL文にWHERE句を動的に追加することができます。WHERE句により、ユーザーの資格証明に基づいて、ユーザーがアクセスを許可されているデータがフィルタ処理されます。

この項の内容は次のとおりです。

Oracle Virtual Private Databaseについて

Oracle Virtual Private Database(VPD)は、データベースの表またはビュー・レベルの行レベル・セキュリティを提供します。これを拡張して列レベル・セキュリティを提供することもできます。基本的に仮想プライベート・データベースは、仮想プライベート・データベースのセキュリティ・ポリシーの適用対象である表またはビューで使用される、任意のSQL文に追加的なWHERE句を挿入します(セキュリティ・ポリシーはデータへのアクセスを許可または阻止する機能です)。WHERE句では、セキュリティ・ポリシーを通過した資格証明を持つ、すなわち、保護する対象のデータへのアクセス権を持つユーザーのみが許可されます。

Oracle Virtual Private Databaseのポリシーには次のコンポーネントがあり、通常はセキュリティ管理者のスキーマに作成されます。

データベース・レベルで行レベルのセキュリティを強制する方法は、アプリケーション・プログラム・レベルでセキュリティを強制した場合に比べて多くのメリットがあります。データを保護する場所であるデータベース自体にセキュリティ・ポリシーを実装できるため、様々な方法でアクセスされた場合でも攻撃を受ける可能性が低くなります。このセキュリティは、ユーザー(侵入者)がどれだけデータへのアクセスを試行しても存在し、強制されます。データベースに接続するすべてのアプリケーションでポリシーを維持する必要はなく、1箇所(データベース)のみでポリシーを維持できるため、メンテナンス費も低く抑えられます。固有のDML操作に対してポリシーを作成できるため、非常に柔軟性の高いポリシーを適用できます。

チュートリアル: Oracle Virtual Private Databaseポリシーの作成

注文入力データベースのOEORDERS表には次の情報が含まれています。

Name                                   Null?    Type
-------------------------------------- -------- ---------------------------------
ORDER_ID                               NOTNULL  NUMBER(12)
ORDER_DATE                             NOTNULL  TIMESTAMP(6) WITH LOCAL TIME ZONE
ORDER_MODE                                      VARCHAR2(8)
CUSTOMER_ID                            NOTNULL  NUMBER(6)
ORDER_STATUS                                    NUMBER(2)
ORDER_TOTAL                                     NUMBER(8,2)
SALES_REP_ID                                    NUMBER(6)
PROMOTION_ID                                    NUMBER(6)

表を問い合せる個人に基づいて表へのアクセスを制限すると想定します。たとえば営業担当者は作成された注文のみを確認でき、他の従業員は確認できないようにします。このチュートリアルでは、営業担当者のユーザー・アカウントと財務管理者のアカウントを作成し、ロールに基づいてデータ・アクセスを制限するOracle Virtual Private Databaseを作成します。

作成する仮想プライベート・データベース・ポリシーは、PL/SQLファンクションに関連付けられます。VPDポリシーはPL/SQLファンクションまたはプロシージャによって制御されるため、アクセスを制限するポリシーを様々な方法で設計できます。このチュートリアルでは、直属の上司が誰であるかに基づいて従業員のアクセスを制限するファンクションを作成します。このファンクションでは、顧客のIDに基づいて顧客のアクセスが制限されます。

データベース管理者やアプリケーション・アカウントとは別のデータベース・アカウントにVPDポリシーを格納する場合があります。このチュートリアルでは、「チュートリアル: セキュア・アプリケーション・ロールの作成」で作成したsec_adminアカウントを使用してVPDポリシーを作成します。アプリケーション表とVPDポリシーを分けることで、セキュリティを高めます。

行データの機密性に基づいてアクセスを制限するには、Oracle Label Security(OLS)を使用します。OLSを使用すると、様々なレベルのセキュリティでデータを分類できます。この場合、行内のデータにアクセスできるユーザーをレベルごとに設定できます。この方法では、データのアクセス制御は、ユーザーの権限ではなくデータ自体に焦点が当てられます。詳細は、「Oracle Label Securityによる行レベルのセキュリティの強制」を参照してください。

このチュートリアルでは、次の手順を実行します。

手順1: 必要に応じてセキュリティ管理者アカウントを作成する

「チュートリアル: セキュア・アプリケーション・ロールの作成」で、チュートリアルで使用するためにsec_adminというセキュリティ管理者アカウントを作成しました。このチュートリアルでも、このアカウントを使用できます。まだこのアカウントを作成していない場合は、「手順1: セキュリティ管理者アカウントを作成する」の手順を実行して、sec_adminを作成します。

手順2: セキュリティ管理者アカウントを更新する

sec_adminアカウント・ユーザーには、DBMS_RLSパッケージを使用するための権限が必要です。このパッケージはSYSが所有しているため、このパッケージ権限をsec_adminに付与するには、SYSとしてログオンする必要があります。また、sec_adminユーザーには、OEスキーマのCUSTOMERS表およびHRスキーマのEMPLOYEES表に対するSELECT権限も必要です。

sec_adminにDBMS_RLSパッケージを使用する権限を付与するには、次のようにします。
  1. Database Controlを起動します。

    Database Controlを起動する手順については、『Oracle Database 2日でデータベース管理者』を参照してください。

  2. SYSユーザーとしてログインし、SYSDBA権限で接続します。

    • ユーザー名: SYS

    • パスワード: SYSのパスワードを入力します。

    • 接続モード: SYSDBA

  3. 「サーバー」をクリックして、「サーバー」サブページを表示します。

  4. 「セキュリティ」で、「ユーザー」を選択します。

    「ユーザー」ページが表示されます。

  5. SEC_ADMINを選択して、「編集」をクリックします。

    「ユーザーの編集」ページが表示されます。

  6. 「オブジェクト権限」をクリックして「オブジェクト権限」ページを表示します。

  7. 「オブジェクト・タイプの選択」リストから「パッケージ」を選択し、次に「追加」をクリックします。

    「パッケージオブジェクト権限の追加」ページが表示されます。

  8. 「パッケージオブジェクトの選択」でSYS.DBMS_RLSと入力し、sec_adminDBMS_RLSパッケージへのアクセス権を与えます。

  9. 「使用可能な権限」でEXECUTEを選択し、「移動」をクリックして「選択した権限」リストに移動します。

  10. 「OK」をクリックします。

    「ユーザーの編集」ページが表示されます。

  11. 「オブジェクト・タイプの選択」リストから「表」を選択し、次に「追加」をクリックします。

    「表オブジェクト権限の追加」ページが表示されます。

  12. 「表オブジェクト」を選択してから、HR.EMPLOYEESと入力し、sec_adminHR.EMPLOYEES表へのアクセス権を付与します。

  13. 「使用可能な権限」で「SELECT」を選択し、「移動」をクリックして「選択した権限」リストに移動します。

  14. 「OK」をクリックします。

    「ユーザーの編集」ページが表示されます。

  15. 「適用」をクリックします。

手順3: このチュートリアルで使用するユーザー・アカウントを作成する

OE.ORDERS表へのアクセスを必要とする従業員のための、ユーザー・アカウントを作成する準備ができました。

従業員ユーザー・アカウントを作成するには、次のようにします。
  1. Database Controlで「データベース・インスタンス」リンクの「ユーザー」をクリックして、「ユーザー」ページに戻ります。

    「ユーザー」ページが表示されます。

  2. 「作成」をクリックします。

    「ユーザーの作成」ページが表示されます。

  3. 次の情報を入力します。

    • 名前: LDORAN(Louise Doranのユーザー・アカウントを作成するため)

    • プロファイル: デフォルト

    • 認証: パスワード

    • 「パスワードの入力」および「パスワードの確認」: 「パスワードの作成要件」に示されている要件を満たすパスワードを入力します。

    • デフォルト表領域: USERS

    • 一時表領域: TEMP

    • ステータス: ロック解除

  4. 「OK」をクリックします。

    LDORANが新しいユーザーとして表示された状態で「ユーザー」ページが表示されます。

  5. 「ユーザー」ページで「LDORAN」を選択します。

    「ユーザーの編集」ページが表示されます。

  6. 「オブジェクト権限」を選択して、「オブジェクト権限」サブページを表示します。

  7. 「オブジェクト・タイプの選択」リストから「表」を選択し、次に「追加」をクリックします。

    「表オブジェクト権限の追加」ページが表示されます。

  8. 「表オブジェクトの選択」で、次のテキストを入力します。

    OE.ORDERS
    
    

    このテキストにはスペースを含めないでください。

  9. 「使用可能な権限」リストからSELECTを選択し、「移動」をクリックして「選択した権限」リストに移動します。「OK」をクリックします。

    OE.ORDERSSELECT権限がリストされた状態で「ユーザーの作成」ページが表示されます。

  10. 「適用」をクリックします。

  11. 「LDORAN」を選択してから、「アクション」リストで「類似作成」を選択します。次に「実行」をクリックします。

    「ユーザーの作成」ページが表示されます。

  12. 次の情報を入力します。

    • 名前: LPOPP(財務管理者のLuis Poppのユーザー・アカウントを作成するため)

    • 「パスワードの入力」および「パスワードの確認」: 「パスワードの作成要件」に示されている要件を満たすパスワードを入力します。

  13. 「OK」をクリックします。

両方の従業員アカウントが作成され、これらには同じ権限があります。一方がOE.ORDERS表でSELECT文を実行すると、すべてのデータを確認できます。

手順4: F_POLICY_ORDERSポリシーのファンクションを作成する

f_policy_ordersポリシーは、ORDERS表に問合せを行うユーザーのフィルタリングに使用される、ポリシーを定義するPL/SQLファンクションです。ユーザーをフィルタリングするために、ポリシー・ファンクションでは、データベースにログイン中のユーザーに関するセッション情報を取得するSYS_CONTEXT PL/SQLファンクションが使用されます。

アプリケーション・コンテキストとパッケージを作成するには、次のようにします。
  1. Database Controlで「ログアウト」をクリックし、次に「ログイン」をクリックします。

  2. ユーザーsec_adminとしてログインします。

  3. 「スキーマ」をクリックして「スキーマ」サブページを表示します。

  4. 「プログラム」で「ファンクション」を選択します。

    「ファンクション」ページが表示されます。

  5. 「作成」をクリックします。

    「ファンクションの作成」ページが表示されます。

  6. 次の情報を入力します。

    • 名前: F_POLICY_ORDERS

    • スキーマ: SEC_ADMIN

    • ソース: 次のコードを入力し(ただしコード左側の行番号は入力しない)、ログオンしたユーザーが営業担当者かどうかをチェックするファンクションを作成します。

      f_policy_ordersファンクションが、ユーザーのセッション情報を取得するSYS_CONTEXT PL/SQLファンクションを使用してこれを実行し、sec_adminSELECT権限を持つHR.EMPLOYEES表にあるユーザーのジョブIDとこの情報を比較します。

       

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
       
      (schema in varchar2,
      tab in varchar2)
      return varchar2
      as
      v_job_id varchar2(20);
      v_user varchar2(100);
      predicate varchar2(400);

      begin
      v_job_id := null;
      v_user := null;
      predicate := '1=2';

      v_user := lower(sys_context('userenv','session_user'));

      select lower(job_id) into v_job_id from hr.employees
      where lower(email) = v_user;

      if v_job_id='sa_rep' then
      predicate := '1=1';
      else
      null;
      end if;

      return predicate;

      exception
      when no_data_found then
      null;
      end;
       

      この例では、次のとおりです。

      • 1〜2行目: 保護する必要があるスキーマ(schema)と表(tab)のパラメータを定義します。このファンクションはOE.ORDERS表を指定しません。「手順5: ACCESSCONTROL_ORDERS仮想プライベート・データベース・ポリシーを作成する」で作成したACCESSCONTROL_ORDERSポリシーによりこれらのパラメータが使用され、OEスキーマとschema表が指定されます。最初にschemaパラメータを作成し、その後にtabパラメータを作成してください。

      • 3行目: WHERE述語句に使用される文字列を返します。この戻り値のデータ型としてはVARCHAR2が常に使用されます。

      • 4から7行目: ジョブID、ログオンしたユーザーのユーザー名、および述語句を格納するよう変数を定義します。

      • 9〜25行目: 9行目BEGIN句で開始するWHERE述語の作成が含まれます。

      • 10から12行目: v_job_idおよびv_user変数をNULLに設定し、predicate変数を1=2、つまり誤った値に設定します。この段階では、変数が16行目から始まるテストに通るまで、WHERE述語は一切生成されません。

      • 14行目: SYS_CONTEXTファンクションを使用してユーザーのセッション情報を取得し、v_user変数に記述します。

      • 16〜23行目: ジョブIDをログオンしたユーザーと比較して、ユーザーが営業担当者かどうかをチェックします。ログオンしたユーザーのジョブIDがsa_rep(営業担当者)である場合は、predicate変数が1=1に設定されます。つまりユーザーは営業担当者であることになり、テストに通ります。

      • 25行目: WHERE role_of_user_logging_on IS "sa_rep"に翻訳されるWHERE述語が返されます。このWHERE述語は、ユーザーLDORANLPOPPOE.ORDERS表に対して発行するSELECT文に追加されます。

      • 27〜29行目: 適切な権限を持っていないユーザーがログオンした場合は、EXCEPTION句が提供されます。

  7. 「OK」をクリックします。

手順5: ACCESSCONTROL_ORDERS仮想プライベート・データベース・ポリシーを作成する

仮想プライベート・データベース・ポリシー・ファンクションの作成が終了したため、仮想プライベート・データベース・ポリシーaccesscontrol_ordersを作成し、これをORDERS表に追加できます。パフォーマンスを向上させるためCONTEXT_SENSITIVEパラメータをポリシーに追加します。これによって、アプリケーション・コンテキストの内容が変わった場合、このケースでは新しいユーザーがログオンした場合のみ、Oracle Databaseはf_policy_ordersファンクションを実行します。Oracle Databaseは、ユーザーがORDERS表でSQL SELECT文を実行したときのみポリシーをアクティブにします。INSERTUPDATEおよびDELETE文は権限を付与されていないため、使用できません。

ACCESSCONTROL_ORDERS仮想プライベート・データベース・ポリシーを作成するには、次のようにします。
  1. Database Controlで「データベース・インスタンス」リンクをクリックして、データベースのホームページを表示します。

  2. 「サーバー」をクリックして、「サーバー」サブページを表示します。

  3. 「セキュリティ」セクションで「仮想プライベート・データベース・ポリシー」をクリックします。

    「仮想プライベート・データベース・ポリシー」ページが表示されます。

  4. 「作成」をクリックします。

    「ポリシーの作成」ページが表示されます。

  5. 「一般」で、次の入力を行います。

    • ポリシー名: ACCESSCONTROL_ORDERS

    • オブジェクト名: OE.ORDERS

    • ポリシー・タイプ: 「CONTEXT_SENSITIVE」を選択します。

      最後にカーソルが使用されてからコンテキストが変更されている場合、このタイプは文の実行時にポリシー・ファンクションを再評価します。複数のクライアントが1つのデータベース・セッションを共有するセッション・プーリングの場合、クライアント切替え時に中間層でコンテキストをリセットする必要があります。Oracle Databaseは、このポリシー・タイプのファンクションにより戻された値をキャッシュしません。常に文の解析時にポリシー・ファンクションを実行します。CONTEXT_SENSITIVEポリシー・タイプは1つのオブジェクトのみに適用されます。

      ポリシー・タイプを有効にするには、「有効」ボックスを選択します。

  6. 「ポリシー・ファンクション」で次の入力を行います。

    • ポリシー・ファンクション: ポリシーの述語を生成するファンクション名(この場合はSEC_ADMIN.F_POLICY_ORDERS)を入力します。

    • 長い述語: このボックスは選択しないでください。

      通常は、32KBまでの長さの述語を返すためにこのボックスを選択します。このボックスを選択しないと、Oracle Databaseは述語を4000バイトに制限します。

  7. 「強制」で、「SELECT」を選択します。

  8. 「OK」をクリックします。

手順6: ACCESSCONTROL_ORDERS仮想プライベート・データベース・ポリシーをテストする

この段階では、それぞれのユーザーとしてログオンし、ORDERS表からのデータの選択を試すことで、accesscontrol_ordersポリシーをテストします。

ACCESSCONTROL_ORDERSポリシーをテストするには、次のようにします。
  1. SQL*Plusを起動します。

    コマンド・プロンプトで、次のコマンドを入力してSQL*Plusを起動し、販売担当者Louise Doran(ユーザー名はLDORAN)としてログインします。

    SQLPLUS LDORAN
    Enter password: password
    
    

    SQL*Plusが起動し、デフォルトのデータベースに接続してから、プロンプトが表示されます。

    SQL*Plusの起動の詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。

  2. 次のSELECT文を入力します。

    SELECT COUNT(*) FROM OE.ORDERS;
    
    

    Louiseに関する次のような結果が表示されます。表示のとおり、LouiseはOE.ORDERS表のすべての注文にアクセスできます。

    COUNT(*)
    --------
         105
    
    
  3. 財務管理者のLuis Poppとして接続します。

    CONNECT LPOPP
    Enter password: password
    
    
  4. 次のSELECT文を入力します。

    SELECT COUNT(*) FROM OE.ORDERS;
    
    

    Popp氏は営業担当者ではないので、OE.ORDERS表のデータへのアクセスがなく、次のような結果が表示されます。

    COUNT(*)
    --------
           0
    
    
  5. SQL*Plusを終了します。

    EXIT
    
    

手順7: このチュートリアルで使用したコンポーネントを削除する(オプション)

このチュートリアルの終了後、使用したデータ構造が不要な場合は削除できます。

sec_adminで作成したデータ構造を削除するには、次のようにします。
  1. Database Controlで、ユーザーsec_adminとしてログインします。

  2. 「サーバー」をクリックして、「サーバー」サブページを表示します。

  3. 「セキュリティ」で、「仮想プライベート・データベース・ポリシー」を選択します。

    「仮想プライベート・データベース・ポリシー」ページが表示されます。

  4. 「検索」で次の情報を入力して、「実行」をクリックします。

    • スキーマ名: OE

    • オブジェクト名: ORDERS

    • ポリシー名: %

    作成したポリシーのACCESSCONTROL_ORDERSが表示されます。

  5. 「ACCESSCONTROL_ORDERS」を選択し、「削除」をクリックします。

  6. 「確認」ページで「はい」をクリックします。

ユーザー・アカウントおよびロールを削除するには、次のようにします。
  1. Database Controlで「ログアウト」をクリックし、次に「ログイン」をクリックします。

  2. このチュートリアルで使用されるユーザー・アカウントとロールを作成した管理者ユーザーとしてログインします。

  3. 「サーバー」をクリックして、「サーバー」サブページを表示します。

  4. 「セキュリティ」で、「ユーザー」を選択します。

    「ユーザー」ページが表示されます。

  5. 次の各ユーザーを選択し、「削除」をクリックしてそれらを削除します。

    • LDORAN

    • LPOPP

    sec_adminは削除しないでください。このマニュアルの以降のチュートリアルで、このアカウントが必要になります。

  6. Database Controlを終了します。

Oracle Label Securityによる行レベルのセキュリティの強制

Oracle Label Security(OLS)は、データベース表に行レベルのセキュリティを提供します。セキュリティのレベルを定義する1つまたは複数のセキュリティ・ラベルを表のデータ行に割り当てることで、セキュリティを実装できます。

この項の内容は次のとおりです。

Oracle Label Securityについて

Oracle Label Securityを使用すると、データベース表を行レベルで保護でき、ニーズに応じて行を様々なセキュリティ・レベルに割り当てることができます。たとえば、非常に機密性の高いデータを含む行にはHIGHLY SENSITIVEというラベルを割り当て、機密性がそれほど高くないデータを含む行にはSENSITIVEというラベルを割り当てたりできます。すべてのユーザーがアクセスできる行にはPUBLICというラベルを割り当てます。ラベルは必要なだけ作成でき、使用する環境のセキュリティ要件に適合させることができます。

ラベルを作成して割り当てたら、Oracle Label Securityを使用して、これらのラベルに基づき特定の行に特定のユーザー認可を割り当てます。以降、Oracle Label Securityはデータ行のラベルとユーザーのセキュリティ・クリアランスを自動的に比較し、行のデータにユーザーがアクセスできるかどうかを決定します。

Oracle Label Securityポリシーには次のコンポーネントがあります。

Oracle Label Securityのラベルとポリシーは、Database Controlで作成するか、SA_SYSDBASA_COMPONENTSSA_LABEL_ADMIN PL/SQLパッケージを使用して作成できます。PL/SQLパッケージの詳細は、『Oracle Label Security管理者ガイド』を参照してください。このマニュアルには、Database Controlを使用してOracle Label Securityのラベルとポリシーを作成する方法が記載されています。

たとえば、ユーザーがアプリケーション表のSELECT権限を持っているとします。次の図にあるように、ユーザーがSELECT文を実行すると、Oracle Label Securityは選択された各行を評価して、このユーザーがアクセスできるかどうかを決定します。決定は、セキュリティ管理者がユーザーに割り当てた権限とアクセス・ラベルに基づいて行われます。Oracle Label Securityを設定して、UPDATEDELETEINSERT文でもセキュリティ・チェックを行うことができます。


画像の説明

Oracle Label Securityのポリシー計画のガイドライン

Oracle Label Securityポリシーを作成する前に、アプリケーション・スキーマにラベルを適用する場所と方法を決定する必要があります。

アプリケーション・データのOracle Label Securityポリシーを適用する場所と方法を決定するには、次のガイドラインに従います。
  1. アプリケーション・スキーマを分析する。

    Oracle Label Securityポリシーを適用する必要がある表を特定します。多くの場合、Oracle Label Securityポリシーが必要となるアプリケーションの表は限られています。たとえば、ルックアップ値や定数を格納している表などは、通常セキュリティ・ポリシーで保護する必要はありません。ただし、患者の病歴や従業員の給与などの機密データを含む表は、ポリシーを使用して保護する必要があります。

  2. データ・レベルの使用を分析する。

    表の特定後、表のデータを評価して、表のセキュリティ・レベルを決定します。分析のこの段階では、ビジネス活動について熟知しているユーザーの意見も参考にしてください。

    データ・レベルはデータの機密性を表します。データ・レベルには、PUBLICSENSITIVEHIGHLY SENSITIVEなどがあります。今後、機密性がどう変化するかも考慮する必要があります。そうすることで、強固なラベル定義が作成できます。

    データ・レコードに割り当てられた機密性ラベルのレベル・コンポーネントが、ユーザーのクリアランスより低いレベルの場合、このレコードにアクセスするユーザーにはこの行へのアクセス権が付与されます。

  3. データ・コンパートメントの使用を分析する。

    データ・コンパートメントは主に、行政環境で使用されます。使用するアプリケーションが商業アプリケーションの場合、多くの場合はデータ・コンパートメントを作成しません。

  4. データ・グループを分析する。

    データ・グループとデータ・コンパートメントは通常、組織、地域、データ所有者によってデータへのアクセスを制御するために使用されます。たとえば、アプリケーションが販売アプリケーションの場合、国または地域によって販売データへのアクセスを制御できます。

    コンパートメントおよびグループと一緒に機密性ラベルがデータ・レコードに割り当てられた場合、このデータを読み取るユーザーは、データ・ラベル、データ・ラベルのすべてのコンパートメント、機密性ラベル内の少なくとも1つのグループのレベルと同等またはそれ以上のレベルのユーザー・クリアランスを持っている必要があります。グループは階層になっているため、データ・ラベルに割り当てられた機密性ラベルの1つのグループの親を所有している場合は、そのレコードにもアクセスできます。

  5. ユーザー分布を分析する。

    ユーザーを複数のユーザー・タイプに分類します。たとえば、通常ユーザー、特権ユーザー、管理ユーザーのいずれかに指定します。ユーザーのカテゴリを作成したら、手順2で作成したデータ・レベルと比較します。カテゴリは、手順1で実行したスキーマ分析で識別した各表に正確に対応する必要があります。次に、ユーザー分布の組織構造を手順4で識別したデータ・グループと比較します。

  6. 特権ユーザーと管理ユーザーを確認して、割り当てるOracle Label Security認可を決定する。

    Oracle Label Securityには、ユーザーに割り当てることのできる特別な認可が複数あります。多くの場合、通常ユーザーに特別な認可は必要ありません。認可の詳細は、『Oracle Label Security管理者ガイド』を参照してください。

  7. 収集したデータを確認し、ドキュメント化する。

    この手順は企業全体の連続性を維持するために重要であり、ドキュメントは企業のセキュリティ・ポリシーの一部となります。たとえば、このドキュメントには保護されるアプリケーションのリストとその理由などが含まれます。

チュートリアル: HR.LOCATIONS表へのセキュリティ・ラベルの適用

このチュートリアルでは、Oracle Label Securityを使用する一般的な方法を説明します。ここではHR.LOCATIONS表にセキュリティ・ラベルを適用します。ユーザーskingkpartnerldoranは、この表内の特定の行に対して、LOCATIONS表の都市に基づくアクセス権を持っています。

Oracle Label Securityを使用して、行データに焦点を当て、データの機密性に基づいて様々なアクセス・レベルを設計することにより、ユーザーによるデータ・アクセスを制限します。ユーザー権限または組織内のユーザーのジョブ・タイトルなどの他の方法に焦点を当ててユーザー・アクセスを制限する必要がある場合、仮想プライベート・データベース・ポリシーとともに使用するPL/SQLファンクションまたはプロシージャを作成できます。詳細は、「Oracle Virtual Private Databaseによるデータ・アクセスの制御」を参照してください。

HR.LOCATIONSのスキーマは次のようになります。

Name                                      Null?    Type
----------------------------------------- -------- -------------
LOCATION_ID                               NOT NULL NUMBER(4)
STREET_ADDRESS                                     VARCHAR2(40)
POSTAL_CODE                                        VARCHAR2(12)
CITY                                      NOT NULL VARCHAR2(30)
STATE_PROVINCE                                     VARCHAR2(25)
COUNTRY_ID                                         CHAR(2)

次のラベルを適用します。

ラベル  権限 

CONFIDENTIAL 

ミュンヘン、オックスフォード、ローマに読取りアクセス権を付与します。 

SENSITIVE 

北京、東京、シンガポールに読取りアクセス権を付与します。 

PUBLIC 

HR.LOCATIONS内の他のすべての都市に読取りアクセス権を付与します。 

このチュートリアルでは、次の手順を実行します。

手順1: Oracle Label Securityをインストールし、ユーザーLBACSYSを有効にする

Oracle Label Securityは、Oracle Databaseのデフォルトのインストールではインストールされませんが、Oracle Databaseで使用可能な製品の一部です。Oracle Universal Installerを使用して既存のデータベースにインストールし、Database Configuration Assistant(DBCA)を使用して登録できます。Oracle Label Securityでは独自のユーザー・アカウントLBACSYSが提供され、このアカウントをインストール後に有効にする必要があります。

Oracle Label Securityのインストール

この手順では、既存のデータベースにOracle Label Securityをインストールする方法を説明します。

Oracle Label Securityをインストールするには、次のようにします。
  1. Oracle Label Securityをインストールする予定のデータベース・インスタンスを停止します。

    SQL*PlusにSYSとしてログインし、SYSOPER権限で接続します。SQLプロンプトで、次のコマンドを入力します。

    SHUTDOWN IMMEDIATE
    
    
  2. SQL*Plusを終了します。

    EXIT
    
    
  3. Oracle Databaseのプロセスを停止します。

    • UNIX: $ORACLE_HOME/binディレクトリに移動し、次のコマンドを実行してデータベース・コンソールおよびリスナーを停止します。

      ./emctl stop dbconsole
      ./lsnrctl stop
      
      
    • Windows: Windowsのサービス・ツールで、Oracleリスナー、コンソールおよびデータベース・サービスの各サービスを右クリックし、メニューから「停止」を選択します。これらのサービス名はOracleから始まり、データベース・インスタンス名が含まれます。たとえば、データベース・インスタンスがorclである場合、この名前は次のようになります。

      • OracleDBConsoleorcl

      • OracleJobSchedulerORCL

      • OracleOraDB1g-home1TNSListener

      • OracleServiceORCL

  4. インストール・メディアからOracle Universal Installerを実行します。

    • UNIX: 次のコマンドを使用します。

      /mnt/cdrom/runInstaller
      
      
    • Windows: インストール・メディア上のsetup.exeファイルをダブルクリックします。

  5. 「インストールする製品の選択」ウィンドウで「Oracle Database 11g」を選択し、「次へ」をクリックします。

  6. 「拡張インストール」「次へ」の順にクリックします。

    「インストール・タイプの選択」ウィンドウが表示されます。

  7. 「カスタム」「次へ」の順にクリックします。

    ホームの詳細の指定画面が表示されます。

  8. Oracle Label SecurityをインストールするOracleベース・ディレクトリおよびOracleホーム・ディレクトリを選択します。「次へ」をクリックします。

    デフォルトでは、新しいOracleホームを作成するよう提案されるため、既存の正しいOracleホームを選択する必要があります。その後、システムが最低要件を満たしているかどうかが確認されます。次に、「使用可能な製品コンポーネント」ウィンドウが表示されます。

  9. Oracle Label Securityに該当するボックスを選択します。

    このオプションは、Enterprise Editionのオプションの下にあります。「Oracle Services For Microsoft Transaction Server」が選択されていますが、不要な場合はこの選択を解除できます。次に、「次へ」をクリックします。

    「サマリー」ウィンドウが表示されます。

  10. 選択内容を確認し、「インストール」をクリックします。

    進行状況ウィンドウが表示されます。インストールが完了すると、「インストールの終了」ウィンドウが表示されます。

  11. 「終了」「はい」の順にクリックし、終了を確認します。

  12. Oracle Label Securityをインストールしたデータベース・インスタンスおよびサービスを再起動します。

    • UNIX: $ORACLE_HOME/binディレクトリに移動し、次のコマンドを実行してデータベース・コンソールおよびリスナーを起動します。

      ./emctl start dbconsole
      ./lsnrctl start
      
      

      SQL*Plusを起動し、データベース・インスタンスを再起動します。

      SQLPLUS "SYS/AS SYSOPER"
      Enter password: password
      Connected to an idle instance
      SQL> STARTUP
      
      
    • Windows: Windowsのサービス・ツールで、Oracleリスナー、コンソールおよびデータベース・サービスの各サービスを右クリックし、メニューから「起動」を選択します。これらのサービス名はOracleから始まり、データベース・インスタンス名が含まれます。たとえば、データベース・インスタンスがorclである場合、この名前は次のようになります。

      • OracleDBConsoleorcl

      • OracleJobSchedulerORCL(オプションです。このマニュアルのチュートリアルでは、起動の必要はありません)

      • OracleOraDB1g-home1TNSListener

      • OracleServiceORCL(OracleDBConsoleを起動すると、このサービスは起動します)

Oracle DatabaseでのOracle Label Securityの登録

インストールが完了したら、Oracle Label SecurityをOracle Databaseに登録する必要があります。

Oracle Label SecurityをOracle Databaseに登録するには、次のようにします。
  1. Database Configuration Assistantを起動します。

    • UNIX: 端末ウィンドウで次のコマンドを入力します。

      dbca
      
      

      一般的に、dbca$ORACLE_HOME/binディレクトリにあります。

    • Windows: 「スタート」メニューから「すべてのプログラム」をクリックします。次に「Oracle - ORACLE_HOME」→「Configuration and Migration Tools」「Database Configuration Assistant」の順にクリックします。

      または、次のコマンド・プロンプトでDatabase Configuration Assistantを起動できます。

      dbca
      
      

      Windowsでは一般的に、dbcaORACLE_BASE¥ORACLE_HOME¥binディレクトリにあります。

  2. 「ようこそ」ページで「次へ」をクリックします。

    「操作」ページが表示されます。

  3. 「データベース・オプションの構成」を選択して、「次へ」をクリックします。

    「データベース」ページが表示されます。

  4. リストから、Oracle Label Securityをインストールしたデータベースを選択し、「次へ」をクリックします。

    「管理オプション」ページが表示されます。

  5. 「Database Controlで構成済のデータベースを維持」を選択します。

    「セキュリティ設定」ページが表示されます。

  6. 目的のセキュリティ・オプションを選択し、「次へ」をクリックします。

    このリリースの拡張セキュリティ設定を利用することをお薦めします。

    「データベース・コンポーネント」ページが表示されます。

  7. 「Oracle Label Security」を選択し、「次へ」をクリックします。

    「接続モード」ページが表示されます。

  8. このデータベースの作成時の選択内容に応じて「専用サーバー・モード」「共有サーバー・モード」のどちらかを選択し、「終了」をクリックし、確認プロンプトで「OK」をクリックします。

    Oracle Label Securityが登録され、データベース・インスタンスが再起動されます。

  9. Database Configuration Assistantを終了します。

Oracle Label Securityのデフォルトのユーザー・アカウントLBACSYSの有効化

Oracle Label Securityのインストール・プロセスにより、Oracle Label Security機能を管理するデフォルトのユーザー・アカウントLBACSYSが作成されます。管理者は、このユーザーと同じ権限(SA_SYSDBASA_COMPONENTSおよびSA_LABEL_ADMIN PL/SQLパッケージに対するEXECUTE権限)を持つユーザーを作成できます。デフォルトでは、LBACYSは、パスワードの期限が切れている、ロックされたアカウントとして作成されます。次の手順では、LBACYSをロック解除し、新しいパスワードを作成します。ユーザーLBACSYSはDatabase Controlを使用してOracle Label Securityポリシーを作成しているため、SELECT ANY DICTIONARY権限をLBACSYSに付与する必要があります。

LBACSYSをロック解除するには、新しいパスワードを作成し、SELECT ANY DICTIONARY権限を付与します。
  1. SYSTEMユーザーとしてDatabase Controlにログインします。

    「ログイン」ページでSYSTEMSYSTEMに割り当てられたパスワードを入力します。「接続モード」「標準」に設定します。「ログイン」を選択してログインします。

  2. 「サーバー」をクリックして、「サーバー」サブページを表示します。

  3. 「セキュリティ」で、「ユーザー」を選択します。

    「ユーザー」ページが表示されます。

  4. ユーザーLBACSYSを選択します。

    LBACSYSを簡単に検索するには、「オブジェクト名」フィールドにlbaと入力し、「実行」をクリックします。

  5. LBACSYSが選択された状態で、「編集」をクリックします。

    「ユーザーの編集」ページが表示されます。

  6. 「ステータス」の横にある「ロック解除」を選択します。

  7. 「パスワードの入力」および「パスワードの確認」フィールドで、「パスワードの作成要件」に従ってセキュアなパスワードを入力します。

    セキュリティを考慮して、以前のリリースのOracle Databaseで使用していたパスワードと同じパスワードは使用しないでください。

  8. 「システム権限」をクリックして「ユーザーの編集: LBACSYS」ページを表示します。

  9. 「リストを編集」をクリックします。

    「システム権限の変更」ページが表示されます。

  10. 「使用可能なシステム権限」リストからSELECT ANY DICTIONARYを選択し、「移動」をクリックして「選択したシステム権限」リストに移動します。次に「OK」をクリックします。

  11. 「適用」をクリックします。

手順2: Oracle Label Securityのチュートリアルで使用する1つのロールおよび3人のユーザーを作成する

ロールと3人のユーザーを作成し、これらのユーザーにロールを付与します。

ロールの作成

emp_roleロールは、これから作成する3人のユーザーに必要な権限を付与します。

emp_roleロールを作成するには、次のようにします。
  1. Database ControlにSYSTEMとしてログインしていることを確認します。

    SYSTEMとしてログインしていない場合、「ログアウト」を選択し、次に「ログイン」を選択します。「ログイン」ページでSYSTEMとこのアカウントに割り当てられたパスワードを入力します。「接続モード」「標準」に設定します。「ログイン」を選択してログインします。

    SYSTEMとしてログインしている場合、「データベース・インスタンス」リンクをクリックして、ホームページを表示します。

  2. 「スキーマ」をクリックして「スキーマ」サブページを表示します。

  3. 「ユーザーおよび権限」セクションで「ロール」をクリックします。

    「ロール」ページが表示されます。

  4. 「作成」をクリックします。

    「ロールの作成」ページが表示されます。

  5. 「名前」フィールドでEMP_ROLEと入力し、「認証」は「なし」のままにします。

  6. 「オブジェクト権限」サブページを選択します。

  7. 「オブジェクト・タイプの選択」リストから「表」を選択し、次に「追加」をクリックします。

    「表オブジェクト権限の追加」ページが表示されます。

  8. 「表オブジェクトの選択」でHR.LOCATIONSと入力し、HRスキーマのLOCATIONS表を選択します。次に「使用可能な権限」で、SELECTを「選択した権限」リストに移動します。

  9. 「OK」をクリックして「ロールの作成」ページに戻り、「OK」をクリックして「ロール」ページに戻ります。

ユーザーの作成

作成する3人のユーザーは、役職に基づき、HR.LOCATIONS表に対して異なるレベルのアクセス権を持ちます。Steven King(sking)は広報部長で、HR.LOCATIONS表への完全な読取りアクセス権を持ちます。Karen Partners(kpartner)は販売部マネージャでより制限されたアクセス権を持ち、Louise Doran(ldoran)は販売担当者でアクセス権が最も制限されています。

ユーザーを作成するには、次のようにします。
  1. Database ControlにSYSTEMとしてログインしていることを確認します。

    SYSTEMとしてログインしていない場合、「ログアウト」を選択し、次に「ログイン」を選択します。「ログイン」ページでSYSTEMとこのアカウントに割り当てられたパスワードを入力します。「接続モード」「標準」に設定します。「ログイン」を選択してログインします。

    SYSTEMとしてログインしている場合、「データベース・インスタンス」リンクをクリックして、ホームページを表示します。

  2. 「サーバー」をクリックして、「サーバー」サブページを表示します。

  3. 「セキュリティ」セクションで「ユーザー」をクリックします。

    「ユーザー」ページが表示されます。

  4. 「作成」をクリックします。

    「ユーザーの作成」ページが表示されます。

  5. 次の情報を入力します。

    • 名前: SKING

    • プロファイル: デフォルト

    • 認証: パスワード

    • 「パスワードの入力」および「パスワードの確認」: 「パスワードの作成要件」に示されている要件を満たすパスワードを入力します。

    • デフォルト表領域: USERS

    • 一時表領域: TEMP

    • ロール: 「ロール」サブページを選択し、「リストを編集」を選択してemp_roleロールをskingに付与します。「使用可能なロール」リストからemp_roleを選択し、「移動」をクリックして「選択したロール」リストに移動します。「OK」をクリックします。「ユーザーの作成」ページで、CONNECTロールとemp_roleロールの両方で「デフォルト」ボックスが選択されていることを確認します。

    • システム権限: 「システム権限」サブページを選択し、「リストを編集」をクリックしてCREATE SESSION権限を付与します。skingにはADMIN OPTIONオプションを付与しないでください。

  6. 「OK」をクリックします。

  7. 「ユーザー」ページでSKINGを選択し、「アクション」を「類似作成」に設定して「実行」をクリックします。

    「ユーザーの作成」ページが表示されます。

  8. kpartnerおよびldoranのアカウントを作成します。

    名前とパスワードを作成します。(「パスワードの作成要件」を参照してください。)ロールやシステム権限を付与する必要はありません。これらのアカウントのロールおよびシステム権限は、skingアカウントで定義され、自動的に作成されます。

この段階で、同じ権限を持つ3人のユーザーが作成されました。これらすべてのユーザーには、HR.LOCATIONS表に対するSELECT権限があります。

手順3: Oracle Label SecurityのACCESS_LOCATIONSポリシーを作成する

ここでは、ACCESS_LOCATIONSポリシーを作成します。

ACCESS_LOCATIONSポリシーを作成するには、次のようにします。
  1. ユーザーLBACSYSとしてDatabase Controlにログインします。

    「ログアウト」を選択し、次に「ログイン」を選択します。「ログイン」ページで、ユーザーLBACSYSとしてログインします。「接続モード」「標準」に設定します。「ログイン」を選択してログインします。

  2. 「サーバー」をクリックして、「サーバー」サブページを表示します。

  3. 「セキュリティ」セクションで「Oracle Label Security」をクリックします。

    「Label Securityポリシー」ページが表示されます。

  4. 「作成」をクリックします。

  5. 「Label Securityポリシーの作成」ページで、次の情報を入力します。

    • 名前: ACCESS_LOCATIONS

    • ラベル列: OLS_COLUMN

      以降で、表にポリシーを適用するときに、このラベル列が表に追加されます。デフォルトでは、ポリシー・ラベル列のデータ型はNUMBER(10)です。

    • ラベル列の非表示: このボックスの選択を解除し、ラベル列が非表示にならないようにします(デフォルトでは選択が解除されています)。

      通常、ラベル列は非表示にしますが、開発段階ではチェックできるように表示しておきます。ポリシーの作成が完了し、使用が開始された後、アプリケーションから見えないようにこの列は非表示にします。

    • 有効: このボックスを選択し、ポリシーを有効にします(デフォルトでは有効です)。

    • 強制オプション: 「ポリシー強制の適用」を選択して、次のオプションを選択します。

      すべての問合せ用(READ_CONTROL)

      ラベル列のUPDATE操作にセッションのデフォルト・ラベルを使用(LABEL_DEFAULT)

  6. 「OK」をクリックします。

    ACCESS_LOCATIONSポリシーが「Label Securityポリシー」ページに表示されます。


    画像の説明

手順4: ACCESS_LOCATIONSポリシーのレベル・コンポーネントを定義する

この段階では、ポリシーが作成され、ポリシーの強制オプションが設定されています。次に、ポリシーで使用するラベル・コンポーネントを作成します。

少なくとも、PUBLICまたはSENSITIVEなど、1つ以上のレベルを作成し、詳細名、短縮名、機密性レベルを表す数値を定義する必要があります。区分およびグループはオプションです。

レベル数値は、対応するラベルに必要な機密性のレベルを表します。数値は範囲で選択します。この範囲は、セキュリティ・ポリシーでさらにレベルが必要になった場合に拡張できます。たとえば、LOW_SENSITIVITYHIGH_SENSITIVITYというレベルを追加するには、LOW_SENSITIVITYには7300、HIGH_SENSITIVITYには7600という数値を割り当て、ポリシーにより作成されるセキュリティ・スケールに適合させることができます。通常、番号が大きいほどデータの機密性が高くなります。

コンパートメントは、ラベルが割り当てられたデータの機密性を表す領域を識別し、レベル内のより詳細なレベルを表します。コンパートメントはオプションです。

グループは、データを所有する組織またはデータにアクセスする組織を識別します。グループはデータの配布を制御する際に有用であり、組織的な変更にもタイムリに対応できます。グループはオプションです。

この手順では、レベル・コンポーネントを定義します。レベル・コンポーネントは、ACCESS_LOCATIONSポリシーで作成する必要があるSENSITIVECONFIDENTIALPUBLICラベルの名前と関係に影響します。

ACCESS_LOCATIONSポリシーのレベル・コンポーネントを定義するには、次のようにします。
  1. 「Label Securityポリシー」ページでACCESS_LOCATIONSポリシーを選択し、次に「編集」を選択します。

    「Label Securityポリシーの編集」ページが表示されます。

  2. 「ラベル・コンポーネント」サブページを選択します。

  3. 「レベル」で、「5行追加」をクリックし、次のように詳細名、短縮名および数値タグを入力します(フィールド間を移動するには、[Tab]キーを押します)。

     

    SENSITIVE 

    SENS 

    3000 

     

    CONFIDENTIAL 

    CONF 

    2000 

     

    PUBLIC 

    PUB 

    1000 

  4. 「適用」をクリックします。

手順5: ACCESS_LOCATIONSポリシーのデータ・ラベルを作成する

この手順では、「手順4: ACCESS_LOCATIONSポリシーのレベル・コンポーネントを定義する」で作成したポリシーのデータ・ラベルを作成します。データ・ラベルを作成するには、各レベルに数値タグを割り当てる必要があります。以降でポリシーを表に適用したときに、このタグの数値はセキュリティ列に格納されます。タグの数値は、ラベルの機密性とは関係ありません。この数値はポリシーのラベルを識別するためにのみ使用されます。

データ・ラベルを作成するには、次のようにします。
  1. 「Label Securityポリシー」 リンクを選択して、「Label Securityポリシー」ページに戻ります。

  2. ACCESS_LOCATIONSポリシーを選択します。

  3. 「アクション」リストで「データ・ラベル」を選択し、次に「実行」をクリックします。

    「データ・ラベル」ページが表示されます。

  4. 「追加」をクリックします。

    「データ・ラベルの作成」ページが表示されます。

  5. 次の情報を入力します。

    • 数値タグ: 1000と入力します。

    • レベル: リストから「PUB」を選択します(キーボードを使用してアイテムを選択するには、名前の先頭の文字を入力します。たとえば、Pと入力して「PUB」を選択します)。


      画像の説明

  6. 「OK」をクリックします。

    「データ・ラベル」ページにデータ・ラベルが表示されます。

  7. もう一度「追加」をクリックし、CONFレベルのデータ・ラベルを作成します。数値タグは2000と入力します。

  8. 「OK」をクリックします。

  9. もう一度「追加」をクリックし、SENSレベルのデータ・ラベルを作成します。数値タグは3000と入力します。

  10. 「OK」をクリックします。

    この段階で、「データ・ラベル」ページにCONFPUBおよびSENSラベルが表示されます。


    画像の説明

    以降で、HR.LOCATIONS表にポリシーを適用したときに、タグの値はセキュリティ列に格納されます。この値は、ラベルの機密性には関係ありません。ポリシーのラベルを識別するために使用されるだけです。

手順6: ACCESS_LOCATIONSポリシーのユーザー認可を作成する

次に、ポリシーのユーザー認可を作成します。

ポリシーのユーザー認可を作成するには、次のようにします。
  1. 「Label Securityポリシー」 リンクを選択して、「Label Securityポリシー」ページに戻ります。

  2. ACCESS_LOCATIONSポリシーを選択します。

  3. 「アクション」リストで「認可」を選択し、次に「実行」をクリックします。

    「認可」ページが表示されます。

  4. 「ユーザーの追加」をクリックします。

    「ユーザーの追加: ユーザー」ページが表示されます。

  5. 「データベース・ユーザー」で「追加」をクリックします。

    「検索と選択: ユーザー」ページが表示されます。SKINGと入力して、「実行」をクリックします。

    通常、データベース・ユーザー・アカウントは、たとえばCREATE USER SQL文を使用してデータベースにすでに作成されています。

    その他のオプションは「データベース以外のユーザー」です。アプリケーション・ユーザーの多くは、データベース・ユーザー以外のユーザーとなります。データベース・ユーザー以外のユーザーは、データベース内には存在していません。Oracle Label Securityの命名方式に一致し、VARCHAR2(30)の長さのフィールドに適合していれば、どのユーザー名も追加できます。ただし、アプリケーションがデータベースに接続したときに、データベース・ユーザー以外のユーザーに関連するセキュリティ情報は、Oracle Databaseにより自動的には構成されません。この場合、アプリケーションは、Oracle Label Security関数を呼び出し、データベース・ユーザーではないユーザーのラベル認可を行う必要があります。

  6. ユーザーSKINGのボックスを選択して、「選択」をクリックします。

    「ユーザーの作成」ページにユーザーSKINGが表示されます。


    画像の説明

  7. 「次へ」をクリックします。

  8. 「権限」ページで、「次へ」を選択します。

    ラベル認可を介してポリシーが強制されます。「権限」ページではユーザーによるポリシーのラベル認可をオーバーライド可能にするため、オプションは選択しないでください。

  9. ラベル、区分およびグループ・ページで、懐中電灯アイコンを使用して次のフィールドに入力するデータを選択し、ユーザーSKINGHR.LOCATIONSの機密データを読み取れるようにします。

    • 最大レベル: SENSSENSITIVE

    • 最小レベル: CONFCONFIDENTIAL

    • デフォルト・レベル: SENS

    • 行レベル: SENS

  10. 「次へ」をクリックします。

  11. 「ユーザーの追加: 監査」ページの「監査」ペインで、すべての監査の操作がNoneに設定されていることを確認し、「次へ」をクリックします。

    「確認」ページが表示されます。


    画像の説明

  12. 設定が正しいことを確認し、「終了」をクリックします。

    「確認」ページに、選択したすべての認可設定が表示されます。

  13. 手順4から12までを繰り返してユーザーKPARTNERに対して次の認可を作成し、このユーザーがHR.LOCATIONSの機密データおよびパブリック・データを読み取れるようにします。

    • 権限: 権限は選択しません。

    • レベル、区分およびグループ: 4つすべてのレベルを次のように設定します。

      • 最大レベル: CONFCONFIDENTIAL

      • 最小レベル: PUBPUBLIC

      • デフォルト・レベル: CONF

      • 行レベル: CONF

    • 監査:すべて「なし」に設定します。

  14. ユーザーLDORANに対して次の認可を作成します。このユーザーは、HR.LOCATIONSのパブリック・データの読取りのみが許可されます。

    • 権限: 権限は選択しません。

    • レベル、区分およびグループ: 4つすべてのレベルをPUBに設定します。

    • 監査:すべて「なし」に設定します。

手順7: HR.LOCATIONS表にACCESS_LOCATIONSポリシーを適用する

次に、HR.LOCATIONS表にポリシーを適用します。

HR.LOCATIONS表にACCESS_LOCATIONSポリシーを適用するには、次のようにします。
  1. 「Label Securityポリシー」 リンクを選択して、「Label Securityポリシー」ページに戻ります。

  2. ACCESS_LOCATIONSポリシーを選択します。

  3. 「アクション」リストで「適用」を選択し、次に「実行」をクリックします。

    「適用」ページが表示されます。

  4. 「作成」をクリックします。

    「表の追加」ページが表示されます。

  5. 「表」フィールドに、HR.LOCATIONSと入力します。

  6. 「ポリシー列の非表示」ボックスが選択されていないことを確認します。

  7. 「有効」ボックスが選択されていることを確認します。

  8. 「ポリシー強制オプション」で、「デフォルトのポリシー強制を使用」を選択します。

    ACCESS_LOCATIONSのポリシーの強制のデフォルト・オプションは次のとおりです。

    • すべての問合せ用(READ_CONTROL)

    • ラベル列の更新にセッションのデフォルト・ラベルを使用(LABEL_DEFAULT)

  9. 「OK」をクリックします。

    ACCESS_LOCATIONSポリシーがHR.LOCATIONS表に適用されます。


    画像の説明

手順8: HR.LOCATIONSデータにACCESS_LOCATIONSラベルを追加する

ACCESS_LOCATIONSポリシーをHR.LOCATIONS表に適用したら、ポリシーのラベルをLOCATIONSOLS_COLUMNに適用します。ユーザーHR(この表の所有者)がこの操作を行うには、LOCATIONSの非表示のOLS_COLUMN列にデータ・ラベルを追加する前に、対象の場所への完全なアクセス権を持っている必要があります。

HR.LOCATIONS表に対するHR FULLポリシー権限の付与

ラベル・セキュリティ管理ユーザーLBACSYSは、必要な権限をHRに付与できます。

ACCESS_LOCATIONSポリシーへの完全なアクセス権をHRに付与するには、次のようにします。
  1. 「Label Securityポリシー」 リンクを選択して、「Label Securityポリシー」ページに戻ります。

  2. ACCESS_LOCATIONSポリシーを選択します。

  3. 「アクション」リストから「認可」を選択し、「実行」をクリックします。

    「認可」ページが表示されます。

  4. 「ユーザーの追加」をクリックします。

    「ユーザーの追加」ページが表示されます。

  5. 「データベース・ユーザー」で「追加」をクリックします。

    「検索と選択」ウィンドウが表示されます。

  6. ユーザーHRのボックスを選択して、 「選択」 をクリックします。

    「ユーザーの作成」ページにユーザーHRが表示されます。

  7. 「次へ」をクリックします。

    「権限」手順が表示されます。

  8. 「すべてのラベル・セキュリティ・チェックを省略(FULL)」権限を選択し、「次へ」をクリックします。

    ラベル、区分およびグループ・ページが表示されます。

  9. 「次へ」をクリックします。

    「監査」手順が表示されます。

  10. 「次へ」をクリックします。

    「確認」手順が表示されます。

  11. 「終了」をクリックします。

    この段階で、HRは他のユーザーとともに「認可」ページにリストされています。


    画像の説明

  12. Database Controlを終了します。

HR.LOCATIONSのOLS_COLUMN表の更新

この時点で、ユーザーHRHR.LOCATIONS表のOLS_COLUMN列を更新して、CITY列の都市に基づいて表内の特定の行に割り当てられるデータ・ラベルを追加できます。

HR.LOCATIONSのOLS_COLUMN表を更新するには、次のようにします。
  1. SQL*Plusで、ユーザーHRとして接続します。

    CONNECT HR
    Enter password: password
    
    

    HRとしてログインできない場合、このアカウントはロックされているか、期限が切れているため、SYSTEMとしてログインしてから、次の文を入力します。passwordは、HRアカウントに適したパスワードに置き換えます。セキュリティを考慮して、以前のリリースのOracle Databaseで使用していたパスワードと同じパスワードは再使用しないでください。「パスワードの作成要件」を参照してください。

    ALTER USER HR ACCOUNT UNLOCK IDENTIFIED BY password
    
    
  2. 次のUPDATE文を入力して、北京、東京、シンガポールにSENSラベルを適用します。

    UPDATE LOCATIONS
    SET ols_column = CHAR_TO_LABEL('ACCESS_LOCATIONS','SENS')
    WHERE UPPER(city) IN ('BEIJING', 'TOKYO', 'SINGAPORE');
    
    
  3. 次のUPDATE文を入力して、ミュンヘン、オックスフォード、ローマにCONFラベルを適用します。

    UPDATE LOCATIONS
    SET ols_column = CHAR_TO_LABEL('ACCESS_LOCATIONS','CONF')
    WHERE UPPER(city) IN ('MUNICH', 'OXFORD', 'ROMA');
    
    
  4. 次のUPDATE文を入力して、残りの都市にPUBラベルを適用します。

    UPDATE LOCATIONS
    SET ols_column = CHAR_TO_LABEL('ACCESS_LOCATIONS','PUB')
    WHERE ols_column IS NULL;
    
    
  5. 列が更新されたことをチェックするには、次の文を入力します。

    SELECT LABEL_TO_CHAR (OLS_COLUMN) FROM LOCATIONS;
    
    


    注意:

    前述の問合せでラベル列名(OLS_COLUMN)を明示的に使用すると、ラベル列が非表示になっていても表示できます。

    ラベル列が非表示であるときに、ラベル列名を明示的に指定しない場合、ラベル列は問合せ結果に表示されません。たとえば、ラベル列が非表示である場合、SELECT * FROM LOCATIONS問合せを実行しても、ラベル列は表示されません。この機能を使用すると、アプリケーションからラベル列が見えないようにできます。ラベル列が追加される前に設計されたアプリケーションには、ラベル列は認識されず、表示されません。 


  6. ユーザーHRからフルアクセス権を取り消します。

    ユーザーHRからフルアクセス権を取り消すには、「HR.LOCATIONS表に対するHR FULLポリシー権限の付与」の手順を参照してください。

手順9: ACCESS_LOCATIONSポリシーをテストする

ACCESS_LOCATIONSポリシーの作成は完了しました。次に、ポリシーをテストします。3人のユーザーのそれぞれとしてSQL*Plusにログインし、HR.LOCATIONS表でSELECTを実行することで、テストできます。

ACCESS_LOCATIONSポリシーをテストするには、次のようにします。
  1. SQL*Plusでユーザーskingとして接続します。

    CONNECT sking
    Enter password: password
    
    
  2. 次のように入力します。

    次のコマンドは、読み取りやすいように表の列幅を書式設定します。

    COL city HEADING City FORMAT a25
    COL country_id HEADING Country FORMAT a11
    COL Label format a10
    
    

    次に、SELECT文を次のように入力します。

    SELECT city, country_id, LABEL_TO_CHAR (OLS_COLUMN)
       AS Label FROM hr.locations ORDER BY ols_column;
    
    

    ユーザーskingは、HR.LOCATIONS表の23行すべてにアクセスできます。アクセスはラベルCONFおよびSENSが付けられた行に対してのみ認可されていますが、ラベルPUBが付けられた行を読み取ることができます(ただし、書き込むことはできません)。

    City                      Country     LABEL
    ------------------------- ----------- ----------
    Venice                    IT          PUB
    Utrecht                   NL          PUB
    Bern                      CH          PUB
    Geneva                    CH          PUB
    Sao Paulo                 BR          PUB
    Stretford                 UK          PUB
    Mexico City               MX          PUB
    Hiroshima                 JP          PUB
    Southlake                 US          PUB
    South San Francisco       US          PUB
    South Brunswick           US          PUB
    Seattle                   US          PUB
    Toronto                   CA          PUB
    Whitehorse                CA          PUB
    Bombay                    IN          PUB
    Sydney                    AU          PUB
    London                    UK          PUB
    Oxford                    UK          CONF
    Munich                    DE          CONF
    Roma                      IT          CONF
    Singapore                 SG          SENS
    Tokyo                     JP          SENS
    Beijing                   CN          SENS
    
    23 rows selected.
    
    
  3. ユーザーkpartnerldoranで、手順1と手順2を繰り返します。

    ユーザーKPARTNERは、ラベルCONFおよびPUBが付けられた行にアクセスできます。

    City                      Country     LABEL
    ------------------------- ----------- ----------
    Venice                    IT          PUB
    Utrecht                   NL          PUB
    Bern                      CH          PUB
    Mexico City               MX          PUB
    Hiroshima                 JP          PUB
    Southlake                 US          PUB
    South San Francisco       US          PUB
    South Brunswick           US          PUB
    Seattle                   US          PUB
    Toronto                   CA          PUB
    Whitehorse                CA          PUB
    Bombay                    IN          PUB
    Sydney                    AU          PUB
    London                    UK          PUB
    Stretford                 UK          PUB
    Sao Paulo                 BR          PUB
    Geneva                    CH          PUB
    Oxford                    UK          CONF
    Munich                    DE          CONF
    Roma                      IT          CONF
     
    20 rows selected.
    
    

    ユーザーLDORANは、ラベルPUBが付けられた行にアクセスできます。

    City                      Country     LABEL
    ------------------------- ----------- ----------
    Venice                    IT          PUB
    Hiroshima                 JP          PUB
    Southlake                 US          PUB
    South San Francisco       US          PUB
    South Brunswick           US          PUB
    Seattle                   US          PUB
    Toronto                   CA          PUB
    Whitehorse                CA          PUB
    Bombay                    IN          PUB
    Sydney                    AU          PUB
    London                    UK          PUB
    Stretford                 UK          PUB
    Sao Paulo                 BR          PUB
    Geneva                    CH          PUB
    Bern                      CH          PUB
    Utrecht                   NL          PUB
    Mexico City               MX          PUB
     
    17 rows selected.
    

手順10: このチュートリアルで使用したコンポーネントを削除する(オプション)

このチュートリアルで作成したコンポーネントを削除します。

このチュートリアルで使用したコンポーネントを削除するには、次のようにします。
  1. Database Controlで、ユーザーSYSTEMとして接続します。

  2. 「サーバー」をクリックして、「サーバー」サブページを表示します。

  3. 「セキュリティ」セクションで「ユーザー」をクリックします。

  4. ユーザーkpartnerを選択してから、「削除」をクリックします。

  5. 「確認」ページで「はい」をクリックします。

  6. ユーザーldoranskingで、手順4と手順5を繰り返します。

  7. 「サーバー」をクリックして、「サーバー」サブページを表示します。

  8. 「データベース・インスタンス」リンクをクリックしてデータベースのホームページに戻ります。

  9. 「セキュリティ」セクションで「ロール」をクリックします。

  10. emp_roleロールを選択し、次に「編集」を選択します。

  11. 「確認」ダイアログ・ボックスで、「はい」をクリックします。

  12. Database Controlからログアウトし、LABCSYSとして再度ログインします。

  13. 「サーバー」をクリックして、「サーバー」サブページを表示します。

  14. 「セキュリティ」セクションで「Oracle Label Security」をクリックします。

  15. 「Label Securityポリシー」ページで、「名前」フィールドにACCESS%と入力して、「実行」をクリックします。


    画像の説明

  16. ACCESS_LOCATIONSが選択されていることを確認し、「削除」をクリックします。「確認」ページで、「はい」をクリックします。

    ACCESS_LOCATIONSポリシーを削除すると、HR.LOCATIONS表からOLS_COLUMN列も削除されます。

Oracle Database Vaultを使用した管理者のアクセスの制御

Oracle Database Vaultを使用すると、Oracle Databaseに対する管理アクセスを制限できます。これによって、内部の脅威に対する保護、コンプライアンス要件の遵守、職務分離の適用など、現在も続く、セキュリティの最も困難な問題に対処できます。

Oracle Database Vaultについて

一般的に、Oracle Database管理者の主な仕事は、データベースのチューニング、アップグレードのインストール、データベースの状態の監視、検出された問題の修復などのタスクを実行することです。Oracle Databaseのデフォルトのインストールでは、データベース管理者に、ユーザーを作成し、ユーザーのデータにアクセスできる権限が付与されています。セキュリティを考慮すると、このような作業は、必要であると考えられるユーザーだけに制限する必要があります。これを職務分離と呼びます。職務を分離することで、データベース管理者は、パフォーマンスのチューニングなど、本来の専門業務に専念することができます。

Oracle Database VaultではOracle Databaseへの管理者のアクセスが制限されるため、Payment Card Industry(PCI)Data Security Standard(DSS)要件、Sarbanes-Oxley(SOX)Act、European Union(EU)Privacy Directive、Healthcare Insurance Portability and Accountability(HIPAA)Actなど、一般的なコンプライアンス要件への遵守が容易になります。これらの規制では、詐称行為、IDの盗用、財政面での不正行為および財政面での不利益をもたらす可能性のある機密情報のアクセス、開示または変更に対する強力な内部制御が必要です。

Oracle Database Vaultでは、Oracle Databaseへの管理者のアクセスを制限するために次の方法が提供されています。

これらのコンポーネントを作成するには、Oracle Database Vault Administratorを使用するか、またはそのPL/SQLパッケージを使用します。

チュートリアル: OEスキーマへの管理者のアクセスの制御

OEスキーマには、顧客に許可しているクレジットの上限などの機密情報が格納されている様々な表があります。Order Entry表には、一般的に、クレジット・カード番号、社会保険番号などの機密情報が格納されています。Payment Card Industry(PCI)Data Security Standards(DSS)によれば、このような種類の情報は、このような情報へのアクセスが仕事上必要な人にのみ制限される必要があります。

このチュートリアルでは、OEスキーマを対象としたレルムを作成し、管理者のアクセスから保護します。ただし、ユーザーSCOTTOE.CUSTOMERS表にアクセスする必要があるため、このユーザーがこのデータへのアクセスを続行できるようにする必要があります。

このチュートリアルでは、次の手順を実行します。

手順1: Oracle Database Vaultのインストールと登録を行い、そのユーザー・アカウントを有効にする

この項の内容は次のとおりです。

Oracle Database Vaultのインストール

Oracle Database Vaultは、Oracle Databaseのデフォルトのインストールではインストールされませんが、Oracle Databaseインストール・メディアで利用できる製品に含まれています。インストールは、Oracle Universal Installerを使用し、既存のデータベースに対して行います。

Oracle Database Vaultをインストールするには、次のようにします。
  1. Oracle Database Vaultのインストール先となるデータベース・インスタンスを停止します。

    SQL*PlusにSYSとしてログインし、SYSOPER権限で接続します。SQLプロンプトで、次のコマンドを入力します。

    SHUTDOWN IMMEDIATE
    
    
  2. SQL*Plusを終了します。

    EXIT
    
    
  3. Oracle Databaseのプロセスを停止します。

    • UNIX: $ORACLE_HOME/binディレクトリに移動し、次のコマンドを実行してデータベース・コンソールおよびリスナーを停止します。

      ./emctl stop dbconsole
      ./lsnrctl stop
      
      
    • Windows: Windowsのサービス・ツールで、Oracleリスナー、コンソールおよびデータベース・サービスの各サービスを右クリックし、メニューから「停止」を選択します。これらのサービス名はOracleから始まり、データベース・インスタンス名が含まれます。たとえば、データベース・インスタンスがorclである場合、この名前は次のようになります。

      • OracleDBConsoleorcl

      • OracleJobSchedulerORCL

      • OracleOraDB1g-home1TNSListener

      • OracleServiceORCL

  4. インストール・メディアからOracle Universal Installerを実行します。

    • UNIX: 次のコマンドを使用します。

      /mnt/cdrom/runInstaller
      
      
    • Windows: インストール・メディア上のsetup.exeファイルをダブルクリックします。

  5. 「インストールする製品の選択」ウィンドウで「Oracle Database 11g」を選択し、「次へ」をクリックします。

  6. 「拡張インストール」「次へ」の順にクリックします。

    「インストール・タイプの選択」ウィンドウが表示されます。

  7. 「カスタム」「次へ」の順にクリックします。

    ホームの詳細の指定画面が表示されます。

  8. Oracle Database VaultをインストールするOracleベース・ディレクトリおよびOracleホーム・ディレクトリを選択します。「次へ」をクリックします。

    デフォルトでは、新しいOracleホームを作成するよう提案されるため、既存の正しいOracleホームを選択する必要があります。その後、システムが最低要件を満たしているかどうかが確認されます。次に、「使用可能な製品コンポーネント」ウィンドウが表示されます。

  9. Oracle Database Vaultオプションに該当するボックスを選択します。

    このオプションは、Enterprise Editionのオプションの下にあります。Oracle Label Securityもインストールする必要があるため、Oracle Universal Installerによって選択されています。「Oracle Services For Microsoft Transaction Server」も選択されていますが、不要な場合はこの選択を解除できます。次に、「次へ」をクリックします。

    「サマリー」ウィンドウが表示されます。

  10. 選択内容を確認し、「インストール」をクリックします。

    新しい製品には、Oracle Database Vault J2EEアプリケーション、Oracle Database VaultオプションおよびOracle Label Securityが含まれます。

    「インストール」をクリックした後、進行状況ウィンドウが表示されます。インストールが完了すると、「インストールの終了」ウィンドウが表示されます。

  11. 「終了」「はい」の順にクリックし、終了を確認します。

  12. Oracle Database Vaultをインストールしたデータベース・インスタンスおよびサービスを再起動します。

    • UNIX: $ORACLE_HOME/binディレクトリに移動し、次のコマンドを実行してデータベース・コンソールおよびリスナーを起動します。

      ./emctl start dbconsole
      ./lsnrctl start
      
      

      SQL*Plusを起動し、データベース・インスタンスを再起動します。

      SQLPLUS "SYS/AS SYSOPER"
      Enter password: password
      Connected to an idle instance
      
      SQL> STARTUP
      
      
    • Windows: Windowsのサービス・ツールで、Oracleリスナー、コンソールおよびデータベース・サービスの各サービスを右クリックし、メニューから「起動」を選択します。これらのサービス名はOracleから始まり、データベース・インスタンス名が含まれます。たとえば、データベース・インスタンスがorclである場合、この名前は次のようになります。

      • OracleDBConsoleorcl

      • OracleJobSchedulerORCL(オプションです。このマニュアルのチュートリアルでは、起動の必要はありません)

      • OracleOraDB1g-home1TNSListener

      • OracleServiceORCL(OracleDBConsoleを起動すると、このサービスは起動します)

Oracle Database Vaultの登録

Oracle Database Vaultをインストールした後、それをデータベースに登録し、アカウントを作成する必要があります。

Oracle Database Vaultを登録するには、次のようにします。
  1. Database Configuration Assistantを起動します。

    • UNIX: 端末ウィンドウで次のコマンドを入力します。

      dbca
      
      

      一般的に、dbca$ORACLE_HOME/binディレクトリにあります。

    • Windows: 「スタート」メニューから「すべてのプログラム」をクリックします。次に「Oracle - ORACLE_HOME」→「Configuration and Migration Tools」「Database Configuration Assistant」の順にクリックします。

      または、次のコマンド・プロンプトでDatabase Configuration Assistantを起動できます。

      dbca
      
      

      Windowsでは一般的に、dbcaORACLE_BASE¥ORACLE_HOME¥binディレクトリにあります。

  2. 「ようこそ」ページで「次へ」をクリックします。

    「操作」ページが表示されます。

  3. 「データベース・オプションの構成」を選択して、「次へ」をクリックします。

    「データベース」ページが表示されます。

  4. リストから、Oracle Database Vaultをインストールしたデータベースを選択し、「次へ」をクリックします。

    「データベース・コンテンツ」ページが表示されます。

  5. 「Oracle Database Vault」を選択し(インストールされていない場合は「Oracle Label Security」も選択し)、「次へ」をクリックします。

    Oracle Database Vaultがチェックされ、名前がグレーアウトされている場合は、すでに登録されています。

    Oracle Database Vaultを選択すると、「Oracle Database Vault資格証明」ページが表示されます。

  6. Database Vault所有者アカウント(DBVOWNERなど)の名前とパスワード、およびDatabase Vaultアカウント・マネージャ(DBVACCTMGRなど)の名前とパスワードを指定します。

    「パスワードの作成要件」に示されているパスワードのガイドラインに従って、任意のセキュアなパスワードを入力します。Oracle Database Vaultには、追加のパスワード要件があります。これは、不適切なパスワードを作成しようとすると表示されます。

  7. 「次へ」をクリックします。

    「接続モード」ページが表示されます。

  8. このデータベースの作成時の選択内容に応じて「専用サーバー・モード」「共有サーバー・モード」のどちらかを選択し、「終了」をクリックし、確認プロンプトで「OK」をクリックします。

    Oracle Database Vaultが登録され、データベース・インスタンスが再起動されます。

  9. Database Configuration Assistantを終了します。

Database Controlへのアクセスの有効化

Database Vaultアカウント・マネージャおよびOEアカウントには、Database Controlを使用するためにSELECT ANY DICTIONARY権限が必要です。

SELECT ANY DICTIONARY権限を付与するには、次のようにします。
  1. SYSユーザーとしてDatabase Controlにログインします。

    「ログイン」ページでSYSSYSに割り当てられたパスワードを入力します。「接続モード」SYSDBAに設定します。「ログイン」を選択してログインします。Database Controlの起動方法については、『Oracle Database 2日でデータベース管理者』を参照してください。

  2. 「サーバー」をクリックして、「サーバー」サブページを表示します。

  3. 「セキュリティ」で、「ユーザー」を選択します。

    「ユーザー」ページが表示されます。

  4. Database Vaultアカウント・マネージャのアカウント(DBVACCTMGR)を選択します。

    DBVACCTMGRを簡単に検索するには、「オブジェクト名」フィールドにDBVと入力し、「実行」をクリックします。

  5. DBVACCTMGRが選択された状態で、「編集」をクリックします。

    「ユーザーの編集」ページが表示されます。

  6. 「システム権限」をクリックして「ユーザーの編集」ページを表示します。

  7. 「リストを編集」をクリックします。

    「システム権限の変更」ページが表示されます。

  8. 「使用可能なシステム権限」リストからSELECT ANY DICTIONARYを選択し、「移動」をクリックして「選択したシステム権限」リストに移動します。次に「OK」をクリックします。

  9. 「適用」をクリックします。

  10. 前述の手順を繰り返し、ユーザーOEにもSELECT ANY DICTIONARY権限を付与します。

手順2: OE.CUSTOMERS表に対するSELECT権限をユーザーSCOTTに付与する

後でチュートリアルをテストするときに、ユーザーSCOTTOE.CUSTOMERS表からの選択を行う必要があります。まず、SCOTTアカウントが有効であることを確認する必要があります。

ユーザーSCOTTを有効にするには、次のようにします。
  1. Database Controlを起動します。

    Database Controlを起動する手順については、『Oracle Database 2日でデータベース管理者』を参照してください。

  2. Oracle Database Vaultアカウント・マネージャのアカウントを使用し、「標準」として接続します。

    Oracle Database Vaultをインストールした後は、管理アカウントを使用してユーザー・アカウントを作成または有効化することはできません。これは、Oracle Database Vaultがデフォルトの状態のままでも、管理アカウントに対して職務分離の方針が適用されるためです。この時点から、ユーザー・アカウントを管理するには、Oracle Database Vaultアカウント・マネージャのアカウントを使用する必要があります。

    だたし、管理ユーザーには、その業務に必要な権限は付与されたままです。たとえば、システム権限と多数のPL/SQLパッケージを所有するユーザーSYSは、引き続きこれらの権限を他のユーザーに付与できます。

  3. 「サーバー」をクリックして、「サーバー」サブページを表示します。

  4. 「セキュリティ」で、「ユーザー」を選択します。

    「ユーザー」ページが表示されます。

  5. ユーザーのリストからSCOTTを選択し、「編集」をクリックします。

    「ユーザーの編集」ページが表示されます。

  6. 次の設定を入力します。

    • 「パスワードの入力」および「パスワードの確認」: SCOTTアカウントのパスワードのステータスが期限切れである場合は、新しいパスワードを入力します。「パスワードの作成要件」に示されているパスワードのガイドラインに従って、任意のセキュアなパスワードを入力します。

    • ステータス: 「ロック解除」をクリックします。

  7. 「適用」をクリックします。

  8. 「ログアウト」をクリックします。

ユーザーSCOTTにOE.CUSTOMERS表に対するSELECT権限を付与するには、次のようにします。
  1. Database Controlの「ログイン」ページで、ユーザーOEとしてログインします。

    Database Controlを起動する手順については、『Oracle Database 2日でデータベース管理者』を参照してください。

  2. 「サーバー」をクリックして、「サーバー」サブページを表示します。

  3. 「セキュリティ」で、「ユーザー」を選択します。

    「ユーザー」ページが表示されます。

  4. SCOTTを選択して、「編集」をクリックします。

    「ユーザーの編集」ページが表示されます。

  5. 「ユーザーの編集」ページで、「オブジェクト権限」サブページを選択します。

    「オブジェクト権限」サブページが表示されます。

  6. 「オブジェクト・タイプの選択」リストから「表」を選択し、次に「追加」をクリックします。

    「表オブジェクト権限の追加」ページが表示されます。

  7. 「表オブジェクトの選択」フィールドで、OE.CUSTOMERSと入力するか、または懐中電灯アイコンを使用してこの表を検索します。

  8. 「使用可能な権限」で「SELECT」を選択し、「移動」をクリックして「選択した権限」に移動します。

  9. 「OK」をクリックします。

    「ユーザーの編集」ページが表示されます。

  10. 「適用」をクリックします。

手順3: ユーザーSYSおよびSCOTTとしてOE.CUSTOMERS表から選択を行う

この段階では、ユーザーSYSおよびSCOTTの両者が、OE.CUSTOMERS表からの選択を行うことができます。これは、SYSは管理権限を所有し、SCOTTはユーザーOEによって付与された明示的なSELECT権限を所有しているためです。

ユーザーSYSおよびSCOTTとしてOE.CUSTOMERSから選択を行うには、次のようにします。
  1. SQL*Plusを起動し、SYSDBA権限を使用してユーザーSYSとして接続します。

    SQLPLUS "SYS/AS SYSDBA"
    Enter password: password
    Connected.
    
    
  2. 次のように、OE.CUSTOMERS表から選択を行います。

    SELECT COUNT(*) FROM OE.CUSTOMERS;
    
    

    次の出力が表示されます。

    COUNT(*)
    --------
         319
    
    
  3. ユーザーSCOTTとして接続し、同じSELECT文を実行します。

    CONNECT SCOTT
    Enter password: password
    Connected.
    
    SELECT COUNT(*) FROM OE.CUSTOMERS;
    
    

    次の出力が表示されます。

    COUNT(*)
    --------
         319
    

手順4: OE.CUSTOMERS表を保護するためにレルムを作成する

OE.CUSTOMER表への管理アクセスを制限するには、OEスキーマに対するレルムを作成します。

  1. Oracle Database Vault Administratorを起動します。

    ブラウザに、次のURLを入力します。

    https://host_name:port/dva

    host_nameはOracle Database Vaultをインストールしたサーバーの名前に、portはOracle Enterprise ManagerコンソールのHTTPSポート番号に置き換えます。ほとんどの場合、サーバーの名前とポート番号は、Database Controlで使用しているものと同じです。

    Database Vault Administratorを起動できない場合は、これを手動でデプロイする必要があります。詳細は、『Oracle Database Vault管理者ガイド』を参照してください。

  2. 「データベースにログイン」ページで、次の情報を入力します。

    • ユーザー名: Oracle Database Vaultのインストール時に作成したDV_OWNERアカウントの名前を入力します(DBVOWNERなど)。

    • パスワード: 入力した名前のユーザーのパスワードを入力します。

    • ホスト: Oracle Database Vaultをインストールしたコンピュータのホスト名またはIPアドレスを入力します(myserver.us.example.comなど)。

    • ポート: データベースのポート番号を入力します(1521など)。

    • SID/サービス: データベースのSID(orclなど)またはサービス(myserver.us.example.comなど)を入力します。

    データベース・インスタンスの「管理」ページが表示されます。

  3. 「Database Vault機能管理」で、「レルム」を選択します。

    「レルム」ページが表示されます。

  4. 「作成」をクリックします。

    「レルムの作成」ページが表示されます。

  5. 次の情報を入力します。

    • 名前: OE Protections

    • 説明: Realm to protect the OE schema

    • ステータス: 「有効」をクリックします。

    • 監査オプション: 「失敗時に監査」を選択します。

  6. 「OK」をクリックします。

    「レルム」ページが表示され、レルムとしてOEが示されます。ただし、保護されたオブジェクトまたは認可されたユーザーはまだ存在しません。

  7. OE Protectionsレルムを選択し、「編集」をクリックします。

    「レルムの編集」ページが表示されます。

  8. 「レルム・セキュア・オブジェクト」で、「作成」をクリックします。

    「レルム・セキュア・オブジェクトの作成」ページが表示されます。

  9. 「オブジェクト所有者」リストからOEを選択します。

    OEは、OEスキーマを所有するアカウントです。OEユーザーを選択すると、このアカウントでOEスキーマ表を引き続きメンテナンスできます。

  10. 「オブジェクト・タイプ」リストからTABLEを選択します。

  11. 「オブジェクト名」フィールドに、OEスキーマ内のすべての表を指定するために%を入力し、「OK」をクリックします。

    「レルムの編集」ページが表示されます。

  12. 「レルム認可」で、「作成」をクリックします。

    「レルム認可の作成」ページが表示されます。

  13. 「権限受領者」リストからOEを選択し、「認可タイプ」「所有者」に設定します。その後で、「認可ルール・セット」<未選択>に設定します。

    これによって、OEスキーマ内のオブジェクトへのアクセスを管理するOEユーザーが認可されます。所有者として、OEユーザーは、レルムで保護されたデータベースのロールの付与または取消し、OE Protectionsレルムで保護されたオブジェクトのアクセス、操作および作成を実行できます。

    「認可ルール・セット」リストを使用すると、レルムが有効になる時間など、アクセスをさらに制御するルールを選択できます。

  14. 「OK」をクリックして「レルムの編集」ページに戻り、「OK」を再びクリックして「レルム」ページに戻ります。

  15. 「ログアウト」をクリックしてOracle Database Vault Administratorを終了します。

手順5: OE Protectionsレルムをテストする

OEスキーマを保護するレルムが作成され、テストを実行できるようになりました。データベース・セッションを再び開始する必要はありません。これは、Oracle Database Vaultで定義した保護は即時に有効になるためです。

OE Protectionsレルムをテストするには、次のようにします。
  1. SYSDBA権限を使用してユーザーSYSとしてSQL*Plusに接続します。

    CONNECT SYS/AS SYSDBA
    Enter password: password
    Connected.
    
    
  2. OE.CUSTOMERS表からの選択を試行します。

    SELECT COUNT(*) FROM OE.CUSTOMERS;
    
    

    次の出力が表示されます。

    ERROR at line 1:
    ORA-01031: insufficient privileges
    
    

    OE Protectionsレルムによって、管理ユーザーのOE.CUSTOMERS表へのアクセスが制限されています。スキーマ全体を保護するようにOE Protectionsレルムを定義したため、管理ユーザーはOE内の他の表にもアクセスできません。

  3. ユーザーSCOTTとして接続します。

    CONNECT SCOTT
    Enter password: password
    Connected.
    
    
  4. OE.CUSTOMERS表からの選択を試行します。

    SELECT COUNT(*) FROM OE.CUSTOMERS;
    
    

    次の出力が表示されます。

      COUNT(*)
    ----------
           319
    
    

    OE ProtectionsレルムはユーザーSCOTTには適用されません。これは、ユーザーOEによって、OE.CUSTOMERS表に対するSELECT権限がこのユーザーに明示的に付与されているためです。Oracle Database Vaultによって、必要な保護が設定されますが、ユーザーが定義した明示的な権限が上書きされることはありません。SCOTTは、引き続きこの表を問い合せることができます。

  5. SQL*Plusを終了します。

    EXIT
    

手順6: このチュートリアルで使用したコンポーネントを削除する(オプション)

このチュートリアルの終了後、使用したデータ構造が不要な場合は削除できます。

OE.CUSTOMERSに対するSELECT権限をユーザーSCOTTから取り消すには、次のようにします。
  1. Database Controlを起動します。

    Database Controlを起動する手順については、『Oracle Database 2日でデータベース管理者』を参照してください。

  2. OEユーザーとしてログインします。

  3. データベースのホームページで、「サーバー」をクリックして「サーバー」サブページを表示します。

  4. 「セキュリティ」で、「ユーザー」を選択します。

    「ユーザー」ページが表示されます。

  5. SCOTTを選択して、「編集」をクリックします。

    「ユーザーの編集」ページが表示されます。

  6. 「オブジェクト権限」をクリックして「オブジェクト権限」サブページを表示します。

  7. OE.CUSTOMERS表のSELECTオブジェクト権限を選択し、「削除」をクリックします。その後で、「適用」をクリックします。

  8. 「ログアウト」をクリックします。

SELECT ANY DICTIONARY権限をユーザーOEから取り消すには、次のようにします。
  1. Database Controlで「ログイン」をクリックします。

    「ログイン」ページが表示されます。

  2. ユーザーSYSとしてログインし、SYSDBA権限を使用して接続します。

    Database Controlのホームページが表示されます。

  3. 「サーバー」をクリックし、「セキュリティ」リストから「ユーザー」を選択します。

    「ユーザー」ページが表示されます。

  4. OEを選択して、「編集」をクリックします。

    「ユーザーの編集」ページが表示されます。

  5. 「システム権限」をクリックしてから「リストを編集」をクリックします。

    「システム権限の変更」ページが表示されます。

  6. 「選択したシステム権限」リストからSELECT ANY DICTIONARYを選択し、「削除」をクリックします。その後で、「OK」をクリックしてから「適用」をクリックします。

  7. Database Controlを終了します。

OE Protectionsレルムを削除するには、次のようにします。
  1. Oracle Database Vault Administratorを起動します。

    Database Vault Administratorの起動方法については、「手順4: OE.CUSTOMERS表を保護するためにレルムを作成する」の手順1を参照してください。

  2. Oracle Database Vaultのインストール時に作成したDV_OWNERアカウントの名前(DBVOWNERなど)を使用してログインします。

    「管理」ページが表示されます。

  3. 「Database Vault機能管理」で、「レルム」をクリックします。

    「レルム」ページが表示されます。

  4. レルムのリストからOE Protectionsを選択し、「削除」をクリックします。その後、「確認」ページで「はい」をクリックします。

  5. Oracle Database Vault Administratorを終了します。


戻る 次へ
Oracle
Copyright © 2007, 2008 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引