ヘッダーをスキップ
Oracle® Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド
11gリリース2(11.2)
E50142-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

2 エンタープライズ・ユーザー・セキュリティの準備

エンタープライズ・ユーザー・セキュリティを使用すると、エンタープライズ全体でデータベース・ユーザーを一元的に管理できます。エンタープライズ・ユーザーは、Oracle Internet Directoryに作成され、ディレクトリに登録された様々なエンタープライズ・データベースに対するロールや権限を割り当てることができます。

この章では、エンタープライズ・ユーザー・セキュリティを簡単に使用できるようにチュートリアル方式を採用します。次の各手順では、エンタープライズ・ユーザー・セキュリティの構成について説明します。

  1. ディレクトリを使用するためのデータベースの構成

  2. ディレクトリへのデータベースの登録

  3. データベースでの共有スキーマの作成

  4. 共有スキーマへのエンタープライズ・ユーザーのマッピング

  5. エンタープライズ・ユーザーとしてのデータベースへの接続

  6. エンタープライズ・ロールの使用

  7. プロキシ権限の使用

2.1 ディレクトリを使用するためのデータベースの構成

エンタープライズ・ユーザー・セキュリティの構成の第1ステップは、ディレクトリを使用するようにデータベースを構成することです。Net Configuration Assistant (NetCA)ツールを実行すると、データベースで使用する必要があるディレクトリのホスト名およびポートを構成できます。

ディレクトリを使用するようにデータベースを構成する手順:

  1. netcaコマンドを使用してNetCAを起動します。

    • Windowsでは、「スタート」メニューからNetCAを起動することもできます。

      「スタート」→「すべてのプログラム」→「Oracle - OracleHomeName」「Configuration and Migration Tools」→「Net Configuration Assistant」の順にクリックします。

    • UNIXシステムでは、次のコマンドを使用してNetCAを起動できます。

      $ORACLE_HOME/bin/netca

    「ようこそ」画面が表示されます。

    netca1.gifの説明が続きます
    図netca1.gifの説明

  2. 「ディレクトリ使用構成」を選択します。「次へ」をクリックします。

    「ディレクトリ・タイプ」画面が表示されます。

    netca2.gifの説明が続きます
    図netca2.gifの説明

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

    ディレクトリの場所画面が表示されます。

    netca3.gifの説明が続きます
    図netca3.gifの説明

  4. Oracle Internet Directoryサーバーが稼働しているホストの名前を入力します。また、LDAPの非SSLポート番号およびSSLポート番号も入力します。これらのポート番号のデフォルトは389および636です。「次へ」をクリックします。

    Oracleコンテキストの選択画面が表示されます。

    netca4.gifの説明が続きます
    図netca4.gifの説明

  5. 使用するデフォルトのOracleコンテキストを選択します。ディレクトリ・サーバーに複数のアイデンティティ管理レルムがある場合は、これを選択する必要があります。「次へ」をクリックします。

    「ディレクトリ使用構成-完了」画面が表示されます。

  6. ディレクトリ使用構成が正常に完了したことを確認します。「次へ」をクリックします。

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

    ldap.oraファイルが$ORACLE_HOME/network/adminディレクトリに作成されます。Windowsでは、このディレクトリは$ORACLE_HOME\network\adminディレクトリです。ldap.oraファイルには、ディレクトリに関する接続情報の詳細が格納されます。

2.2 ディレクトリへのデータベースの登録

次のステップは、データベースをディレクトリ・サービスに登録することです。Database Configuration Assistant (DBCA)ツールを使用すると、データベースをOracle Internet Directoryに登録できます。

データベースをディレクトリに登録する手順:

  1. dbcaコマンドを使用してDBCAを起動します。

    • Windowsでは、「スタート」メニューからDBCAを起動することもできます。

      「スタート」→「すべてのプログラム」→「Oracle - OracleHomeName」「Configuration and Migration Tools」→「Database Configuration Assistant」の順にクリックします。

    • UNIXシステムでは、次のコマンドを使用してDBCAを起動できます。

      $ORACLE_HOME/bin/dbca

    「ようこそ」画面が表示されます。

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

    「操作」画面が表示されます。

    dbca2.gifの説明が続きます
    図dbca2.gifの説明

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

    「データベース」画面が表示されます。

  4. 構成するデータベース名を選択します。オペレーティング・システムの認証を使用していない場合は、SYSユーザー資格証明の入力を求められることもあります。「次へ」をクリックします。

    「管理オプション」画面が表示されます。

  5. Database Controlを使用してデータベースの管理を続行する場合は、「Database Controlで構成済のデータベースを維持」を選択します。また、Grid Controlを使用したデータベースの管理を選択することもできます。「次へ」をクリックします。

    「セキュリティ設定」画面が表示されます。

  6. 11gのセキュリティ設定を維持する場合は、「11gのデフォルトの高度セキュリティ設定を維持」を選択します。「次へ」をクリックします。

    「ネットワーク構成」画面が表示されます。

    dbca6.gifの説明が続きます
    図dbca6.gifの説明

  7. 「データベースを登録する」を選択してデータベースをディレクトリに登録します。Oracle Internet Directoryへのデータベースの登録を許可されたユーザーの識別名(DN)を入力します。また、ディレクトリ・ユーザーのパスワードも入力します。ウォレット・パスワードを入力します。「パスワードの確認」フィールドに、同じパスワードを再入力します。「次へ」をクリックします。


    注意:

    データベースでは、ランダムに生成されたパスワードを使用してディレクトリにログインします。このデータベース・パスワードは、Oracleウォレットに格納されます。また、このウォレットを使用して、SSL接続に必要な証明書を格納することもできます。

    指定するウォレット・パスワードは、データベース・パスワードとは異なります。ウォレット・パスワードは、ウォレットの保護に使用します。


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

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

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

  9. 「専用サーバー・モード」または「共有サーバー・モード」を選択します。「終了」をクリックします。

    「確認」ダイアログ・ボックスが表示されます。

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


注意:

データベースをディレクトリに登録した後に、データベース・ウォレットの自動ログインが有効になっていることを確認します。デフォルトのウォレットは、$ORACLE_BASE/admin/database_sid/walletディレクトリに作成されます。

ウォレット・ディレクトリにcwallet.ssoファイルが存在することをチェックすることで、ウォレットに対する自動ログインが有効であることを確認できます。このファイルが存在しない場合は、Oracle Wallet Managerを使用してウォレットを開き、ウォレットに対する自動ログインを有効にするオプションを使用して、自動ログインを有効にできます。


2.3 データベースでの共有スキーマの作成

データベースに共有スキーマを作成すると、複数のエンタープライズ・ユーザーを同じスキーマにマップできます。例2-1では、共有スキーマglobal_ident_schema_userを作成し、CONNECTロールを付与します。

例2-1 共有スキーマの作成

SQL> CREATE USER global_ident_schema_user IDENTIFIED GLOBALLY;
User created.
SQL> GRANT CONNECT TO global_ident_schema_user;
Grant succeeded.

2.4 共有スキーマへのエンタープライズ・ユーザーのマッピング

エンタープライズ・ユーザー・セキュリティは、Enterprise Managerを使用して管理できます。例2-2では、DN cn=users, dc=us, dc=oracle, dc=comを共有データベース・スキーマglobal_ident_schema_userにマップします。

例2-2 共有スキーマへのエンタープライズ・ユーザーのマッピング

ユーザー・スキーマ・マッピングを作成するには、次のようにします。

  1. Enterprise Managerにログインします。

    getstrtd1.gifの説明が続きます
    図getstrtd1.gifの説明

  2. 「サーバー」タブをクリックします。「セキュリティ」セクションで「エンタープライズ・ユーザー・セキュリティ」をクリックします。

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

    getstrtd2.gifの説明が続きます
    図getstrtd2.gifの説明

  3. 「ユーザー」フィールドに、エンタープライズ・ユーザーを管理できるディレクトリ・ユーザーの識別名(DN)を入力します。「パスワード」フィールドに、ユーザー・パスワードを入力します。「ログイン」をクリックします。

    「エンタープライズ・ユーザー・セキュリティ」ページが表示されます。

    getstrtd3.gifの説明が続きます
    図getstrtd3.gifの説明

  4. 「エンタープライズ・ドメインの管理」をクリックします。

    「エンタープライズ・ドメインの管理」ページが表示されます。

    getstrtd4.gifの説明が続きます
    図getstrtd4.gifの説明

  5. データベースを含むエンタープライズ・ドメインを選択します。「構成」をクリックします。

    「ドメインの構成」ページが表示されます。

  6. 「ユーザー・スキーマ・マッピング」タブをクリックします。エンタープライズ・ドメインに適用されているユーザー・スキーマ・マップがすべて表示されます。

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

    「マッピングの作成」ページが表示されます。

    getstrtd5.gifの説明が続きます
    図getstrtd5.gifの説明

  8. 「自」セクションで、「サブツリー」を選択します。「検索」アイコンをクリックします。DNのcn=Users, dc=us,dc=oracle,dc=comを選択します。

  9. 「至」セクションで、「スキーマ」フィールドにglobal_ident_schema_userと入力します。「続行」をクリックします。

    「ドメインの構成」ページにユーザー・スキーマ・マッピングが追加されます。

    getstrtd6.gifの説明が続きます
    図getstrtd6.gifの説明

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

2.5 エンタープライズ・ユーザーとしてのデータベースへの接続

この時点で、マップされたOracle Internet Directoryサブツリー内のすべてのユーザーは、エンタープライズ・ユーザーとしてデータベースに接続できます。例2-3に、データベースに接続するcn=orcladmin, cn=users, dc=us,dc=oracle,dc=comユーザーを示します。

例2-3 エンタープライズ・ユーザーとしてのデータベースへの接続

SQL> CONNECT orcladmin
Enter password:
Connected.

2.6 エンタープライズ・ロールの使用

エンタープライズ・ロールはディレクトリに作成されます。エンタープライズ・ロールには、エンタープライズ・ドメインに属する様々なデータベースのグローバル・ロールが格納されます。エンタープライズ・ロールは、エンタープライズ・ユーザーにデータベース権限を割り当てるために使用します。

例2-4では、2人のエンタープライズ・ユーザーのJoeとNinaを作成します。この2人のユーザーはいずれもサブツリーcn=Users, dc=us,dc=oracle,dc=comに作成されます。このサブツリーはすでにEUSDBデータベースのglobal_ident_schema_userにマップされています。

NinaはHRマネージャです。EUSDBデータベースのhr.employees表に対するSELECT権限を必要とします。例2-4では、エンタープライズ・ロールを使用してこれを実現します。

例2-4 エンタープライズ・ロールの使用

2人のエンタープライズ・ユーザーのJoeとNinaの作成から始めます。エンタープライズ・ユーザーは、Oracle Internet Directoryセルフ・サービス・コンソールを使用して作成できます。

エンタープライズ・ユーザーのJoeとNinaを作成する手順:

  1. Oracle Internet Directoryセルフ・サービス・コンソールに接続します。次のURLを使用します。

    http://hostname:port/oiddas/

    hostnameは、Oracle Internet Directoryサーバーが稼働しているホストの名前です。port番号は、Oracle Internet Directoryセルフ・サービス・コンソールが稼働しているTCPポート番号です。デフォルトは7777です。

    getstrtd7.gifの説明が続きます
    図getstrtd7.gifの説明

  2. 「ディレクトリ」タブをクリックします。

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

    getstrtd8.gifの説明が続きます
    図getstrtd8.gifの説明

  3. Oracle Internet Directoryにユーザーを作成できるユーザーとしてログインします。

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

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

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

    getstrtd9.gifの説明が続きます
    図getstrtd9.gifの説明

  5. 「ユーザー名」にjoeと入力します。その他の必須フィールドに値を入力します。「有効」で「有効」を選択します。

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

  7. 「別のユーザーの作成」をクリックします。

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

  8. 「ユーザー名」にNinaと入力します。その他の必須フィールドに値を入力します。「有効」で「有効」を選択します。

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

次に、hr.employees表へのアクセスを許可するグローバル・ロールをデータベースに作成します。次のSQL*Plus文は、グローバル・ロールhr_accessを作成し、必要な権限を付与します。

SQL> CREATE ROLE hr_access IDENTIFIED GLOBALLY;
Role created.
SQL> GRANT SELECT ON hr.employees TO hr_access;
Grant succeeded.

次にhr_accessというエンタープライズ・ロールを作成し、グローバル・ロールを割り当てます。そして、このエンタープライズ・ロールをエンタープライズ・ユーザーNinaに割り当てます。エンタープライズ・ロールは、Enterprise Managerを使用して作成できます。

エンタープライズ・ロールhr_accessを作成する手順:

  1. Enterprise Managerにログインします。

  2. 「サーバー」タブをクリックします。「セキュリティ」セクションで「エンタープライズ・ユーザー・セキュリティ」をクリックします。

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

  3. 「ユーザー」フィールドに、エンタープライズ・ユーザーを管理できるディレクトリ・ユーザーの識別名(DN)を入力します。「パスワード」フィールドに、ユーザー・パスワードを入力します。「ログイン」をクリックします。

    「エンタープライズ・ユーザー・セキュリティ」ページが表示されます。

  4. 「エンタープライズ・ドメインの管理」をクリックします。

    「エンタープライズ・ドメインの管理」ページが表示されます。このページには、アイデンティティ管理レルム内のエンタープライズ・ドメインが一覧表示されます。

  5. データベースを含むエンタープライズ・ドメインを選択します。「構成」をクリックします。

    「ドメインの構成」ページが表示されます。

  6. 「エンタープライズ・ロール」タブをクリックします。

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

    「エンタープライズ・ロールの作成」ページが表示されます。

  8. 「名前」フィールドにhr_accessと入力します。

    getstrtd11.gifの説明が続きます
    図getstrtd11.gifの説明

  9. 「追加」をクリックし、データベース・グローバル・ロールをエンタープライズ・ロールに追加します。

    「検索と選択: データベース・グローバル・ロール」ウィンドウが表示されます。

    getstrtd12.gifの説明が続きます
    図getstrtd12.gifの説明

  10. データベースのhr_accessグローバル・ロールを選択します。「選択」をクリックします。


    注意:

    グローバル・ロールを選択するには、データベースにログインする必要があります。

  11. 「権限受領者」タブをクリックします。「追加」をクリックします。

    「選択: ユーザーまたはグループ」ウィンドウが表示されます。

  12. ユーザーNinaを選択します。「選択」をクリックします。

    getstrtd10.gifの説明が続きます
    図getstrtd10.gifの説明

  13. 「エンタープライズ・ロールの作成」ページで「続行」をクリックします。

  14. 「ドメインの構成」ページで「OK」をクリックします。

これで、エンタープライズ・ユーザーNinaは、データベースのhr.employees表にアクセスできます。次のSQL*Plus文は、そのことを示しています。

SQL> CONNECT Nina
Enter password:
Connected.
SQL> SELECT employee_id FROM hr.employees;
EMPLOYEE_ID
-----------
        100
        101
        102
...
...
107 rows selected.

エンタープライズ・ユーザーJoeは、エンタープライズ・ロールが割り当てられていないため、hr.employees表にアクセスできません。

SQL> CONNECT joe
Enter password:
Connected.
SQL> SELECT employee_id FROM hr.employees;
SELECT employee_id FROM hr.employees

ERROR at line 1:
ORA-00942: table or view does not exist

2.7 プロキシ権限の使用

プロキシ権限はエンタープライズ・ドメイン・レベルで作成されます。プロキシ権限により、エンタープライズ・ユーザーはローカル・データベース・ユーザーの代わりとなることができます。つまり、エンタープライズ・ユーザーはローカル・データベース・ユーザーとしてデータベースにログインできます。プロキシ権限は、個々のエンタープライズ・ユーザーまたはグループに付与できます。プロキシ権限は、複数のデータベース間でエンタープライズ・ユーザーとして動作する中間層アプリケーションでは特に有用です。

例2-5に、プロキシ権限の使用を示します。エンタープライズ・ユーザーjoeは販売マネージャであり、ターゲット・データベース・ユーザーSHとしてエンタープライズ・データベースにログインする必要があります。SHユーザーは、販売履歴関連の表を含むSHサンプル・スキーマを所有しています。

例2-5 プロキシ権限の使用

エンタープライズ・ユーザー・プロキシの許可の第1ステップは、ターゲット・データベース・ユーザーを変更(ALTER)し、エンタープライズ・ユーザーによって接続(CONNECT)できるようにすることです。次のSQL文は、SHデータベース・アカウントをロック解除してパスワードを設定し、エンタープライズ・ユーザー・プロキシを使用できるようにアカウントを変更(ALTER)します。

SQL> CONNECT SYSTEM
Enter password:
Connected.
SQL> ALTER USER SH IDENTIFIED BY hrd2guess ACCOUNT UNLOCK;
User altered.
SQL> ALTER USER SH GRANT CONNECT THROUGH ENTERPRISE USERS;
User altered.

次に、Enterprise Managerを使用してプロキシ権限を構成します。これにより、エンタープライズ・ユーザーjoeは、ローカル・データベース・ユーザーSHとして接続できます。

エンタープライズ・ユーザーjoeのプロキシ権限を構成する手順:

  1. Enterprise Managerにログインします。

  2. 「サーバー」タブをクリックします。「セキュリティ」セクションで「エンタープライズ・ユーザー・セキュリティ」をクリックします。

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

  3. 「ユーザー」フィールドに、エンタープライズ・ユーザーを管理できるディレクトリ・ユーザーの識別名(DN)を入力します。「パスワード」フィールドに、ユーザー・パスワードを入力します。「ログイン」をクリックします。

    「エンタープライズ・ユーザー・セキュリティ」ページが表示されます。

  4. 「エンタープライズ・ドメインの管理」をクリックします。

    「エンタープライズ・ドメインの管理」ページが表示されます。このページには、アイデンティティ管理レルム内のエンタープライズ・ドメインが一覧表示されます。

  5. 構成するエンタープライズ・ドメインを選択します。「構成」をクリックします。

    「ドメインの構成」ページが表示されます。

  6. 「プロキシ権限」タブをクリックします。

    getstrtd13.gifの説明が続きます
    図getstrtd13.gifの説明

  7. 「作成」をクリックして新しいプロキシ権限を作成します。

    「プロキシ権限の作成」ページが表示されます。

  8. 「名前」フィールドに、プロキシ権限の名前としてSH_Proxyと入力します。

    getstrtd14.gifの説明が続きます
    図getstrtd14.gifの説明

  9. 「ターゲットDBユーザー」タブが選択されていることを確認します。「追加」をクリックします。

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

  10. SHユーザーを含むデータベースにログインします。エンタープライズ・ユーザー・プロキシを許可するように変更されているすべてのデータベース・ユーザーのリストが表示されます。

  11. SHユーザーを選択します。「選択」をクリックします。

    「プロキシ権限の作成」ページの「ターゲットDBユーザー」にSHユーザーが追加されます。

    getstrtd15.gifの説明が続きます
    図getstrtd15.gifの説明

  12. 「権限受領者」タブをクリックします。

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

    「選択: ユーザーまたはグループ」ウィンドウが表示されます。

  14. 「検索ベース」で「cn=users,dc=us,dc=oracle,dc=com」を選択します。「表示」「ユーザー」を選択します。「実行」をクリックします。

    サブツリーcn=users,dc=us,dc=oracle,dc=comの下のユーザーのリストが表示されます。

    getstrtd16.gifの説明が続きます
    図getstrtd16.gifの説明

  15. cn=joe,cn=users,dc=us,dc=oracle,dc=comを選択します。「選択」をクリックします。

    「プロキシ権限の作成」ページの「権限受領者」にユーザーjoeが追加されます。

    getstrtd17.gifの説明が続きます
    図getstrtd17.gifの説明

  16. 「プロキシ権限の作成」ページで「続行」をクリックします。

    「ドメインの構成」ページにプロキシ権限SH_Proxyが追加されます。

    getstrtd18.gifの説明が続きます
    図getstrtd18.gifの説明

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

これで、エンタープライズ・ユーザーjoeは、ローカル・データベース・ユーザーSHとしてログインできます。次のSQL文は、そのことを示しています。

SQL> REMARK Joe uses his own password to connect as the local database user, SH.
SQL> CONNECT joe[SH]
Enter password:
Connected.
SQL> SELECT * FROM SH.sales WHERE cust_id=4;

   PROD_ID    CUST_ID TIME_ID   CHANNEL_ID   PROMO_ID QUANTITY_SOLD AMOUNT_SOLD
---------- ---------- --------- ---------- ---------- ------------- -----------
        37          4 31-MAY-00          3        999             1       60.43
        39          4 31-MAY-00          3        999             1       38.45
        40          4 31-MAY-00          3        999             1        48.1
...
...
72 rows selected.