日本オラクル クロスインダストリー本部
OracleDirect SCグループ
林 裕一


OracleDirectでは、お客様からのご相談に対応させて頂いております。
私共が、電話とインターネットを使って直接ご説明させて頂きます。
製品の技術的ご説明、デモンストレーションから、構成のご提案まで、是非OracleDirectにご相談ください。
さまざまな内容のiSeminarも予定していますので、是非ご参加ください。

第3章:セキュリティ設定
はじめに
セキュリティ設定
権限の管理
外部からのアクセス
その他のセキュリティトピック


 はじめに

「意外と簡単!?」シリーズは、Oracle Database 10gを使用してこれからシステム構築を行い、運用していく方向けに作成しており、初心者の方でも容易に構築/運用ができるよう全編にわたり極力GUIツールを利用した説明として構成しております。
システム構築の方法や運用にはさまざまな方法が存在しますが、「意外と簡単!?」シリーズでは特定のハードウェア上で小中規模のシステムを構築/運用することを目的とした実践的な資料として構成している関係上、個々の機能の説明等は最小限に留めております。
また基本的にStandard Editionで利用可能な機能の範囲にて説明しております。
「意外と簡単!?」シリーズが皆様のシステム構築/運用の一助になれば幸いです。

  「意外と簡単!?」シリーズの資料構成

「意外と簡単!?」シリーズは、以下の5つの資料から構成しております。
  1. データベース構築基礎
  2. セキュリティ設定(本書)
  3. バックアップとリカバリ
  4. データベースの運用 − 監視
  5. データベースの運用 − チューニング

  「意外と簡単!?」シリーズにおけるH/W、S/W構成


サーバー DELL PowerEdge 2650
CPU Xeon 3.06 GHz x 2
メモリ 6GB
オペレーティング・システム Microsoft Windows 2000 + Service Pack4
RDBMS Oracle Database 10g Standard Edition for Windows


 セキュリティ設定

データベース・システムを運用していくにあたって、データを見る・修正するなどの処理を行うことのできる人を明確に制限することは非常に重要です。
ここでは、データベース・システムでの考慮すべきセキュリティを高めるための施策の中から、Oracleデータベースの設定で実現できるもののうちの基本的な設定項目について解説しています。
大きく分けて以下の観点で解説します。
  • 認証の管理
  • 認証の管理
  • 外部からのアクセス
  • その他

  認証の管理

Oracleでは、ユーザーによるデータベースへのログインを許可するために、いくつかの方法でそのユーザーを認証できます。
  • データベースによるパスワード認証: ログイン時にパスワードを入力する方法
  • 外部部認証: OSまたはネットワークシステムを利用
  • グローバル認証: ディレクトリ・サービスを利用
本ドキュメントではデータベースによる認証をベースに記述しております。


  Oracleへの認証モードの設定とログイン・ユーザーの作成

ここでは、新しいユーザーの作成方法を紹介します。


 ユーザーの作成

Enterprise Managerを利用して新しいユーザーを作成してみましょう。

1.   現在作成されているユーザーの一覧を確認します。Enterprise ManagerにSYSDBA権限でログインしてください。ホーム画面の「管理」タブの中の「セキュリティ」以下の「ユーザー」をクリックします。現在の作成されているユーザーが確認できます。


2.   ボタンをクリックするとユーザー情報の入力画面が表示されます。ここで、以下のように入力してボタンをクリックするとユーザーが作成されます。

項目名 入力内容
名前 ORADIRECT
プロファイル DEFAULT
認証 パスワード
期限切れパスワード チェックしない
デフォルト表領域 USERS
一時表領域 TEMP
ステータス ロック解除


また、インストール後にデフォルトで作成されているデータベース・ユーザーにデフォルトのパスワードを使用している場合、変更しておくべきです。

 パスワードの変更方法

1.   Enterprise ManagerにSYSDBA権限でログインしてください。ホーム画面の「管理」タブの中の「セキュリティ」以下の「ユーザー」をクリックします。現在の作成されているユーザーが確認できます。SYSMANユーザーのパスワードを変更します。


2.   「パスワードの入力」の項目に変更後のパスワードを入力、「パスワードの確認」の項目にも同様に入力してボタンを押してパスワードを変更してください。


  パスワード管理

プロファイルを利用すると、パスワードの制限を設定することが出来ます。
プロファイルとは、システム・リソースおよびパスワードの制限の設定をまとめたもので、パスワード管理の制御を行うことができます。
例えば、以下のような設定が可能です。

ユーザーのロック:
特定のユーザーが、ある回数以上データベースへの接続に失敗した場合にそのユーザーをロックするような設定。

有効期間の設定:
パスワードに有効期限をつけて、同じパスワードを使いつづけないようにする設定。

パスワード履歴管理:
同じパスワードを利用することが出来ないようにする設定。パスワード履歴オプションは、新しく指定される各パスワードを調べて、指定された期間内に、または指定されたパスワード変更回数の間に、同じパスワードが再利用されないようにするためのものです。 データベース管理者は、プロファイルを使用してパスワードの再利用のルールを構成できます。


 プロファイルの設定とユーザーの設定

1.   Enterprise ManagerにSYSDBA権限でログインしてください。ホーム画面の「管理」タブの中の「セキュリティ」以下の「プロファイル」をクリックします。ボタンをクリックして、プロファイルを新規作成します。


2.   名前に「ORADIRECT」と入力して、「パスワード」タブをクリックします。


3.   今回の設定では、以下のように設定しています。以下の表のように設定後に、OKボタンを押すことでパスワードに関する設定が変更されます。

項目名 入力内容 入力内容
有効期限(日) 60 設定したパスワードは60日間使いつづけられます
期限切れ後の猶予日数 30 有効期限が切れた後、30日間は同じパスワードを使いつづけられます。(合計90日)
パスワード再利用前の変更回数 2 2度異なるパスワードに変更されてからでないと、同じパスワードは使用できません
再利用できなくなるまでの日数 30 パスワード履歴を保持する期間
複雑なパスワード検証のための関数 DEFAULT (変更なし)
ロックされるまでのログイン試行失敗回数 6 6回ログインを失敗するとユーザーが、ロックされます
指定回数失敗後、ロックされる日数 5 ロックされた後で5日間経過すると、ロック解除されます



4.   続いて、作成したプロファイルをユーザーに割り当てます。Enterprise Managerのホーム画面に戻っていただき、「管理」タブの中の「セキュリティ」以下の「ユーザー」をクリックします。現在の作成されているユーザーが確認できます。ORADIRECTユーザーのプロファイルを変更します。「ORADIRECT」ユーザーのリンクをクリックします。


5.   「プロファイル」の中から、先程作成した「ORADIRECT」を選択してボタンをクリックします。先程作成されたプロファイルがユーザーORADIRECTに対して有効になりました。


  不要なユーザーを利用可能な状態にしない

Oracleデータベースの作成時に、いくつかの管理ユーザーやデモ用のユーザーが作成されることがあります。
運用上必要でないユーザーは、ログインできないようにロックするべきです。
特に「SCOTT」ユーザーは、本番環境ではOracleデータベースのデモユーザとして有名ですので削除するか、ロックすることをお勧めします。
以下のような手順でユーザーをロックすることが出来ます。


 ユーザーのロック

1.   現在ロックされていないユーザーの情報を確認します。Enterprise ManagerにSYSDBA権限でログインしてください。ホーム画面の「管理」タブの中の「セキュリティ」以下の「ユーザー」をクリックします。現在作成されているユーザーが確認できます。「アカウント・ステータス」のタブを2回クリックすると、上位にステータスがOPENのユーザーが表示されます。このユーザーが現在ロックされていないユーザーです。 ステータスがOPENのユーザーをロックするには、変更したいユーザー名をクリックします。ここでは「SCOTT」をクリックします。


2.   「ステータス」のラジオボタン「ロック」を選択してボタンをクリックします。


 権限の管理

権限は、特定のタイプのSQL 文を実行するため、または別のユーザーのオブジェクトにアクセスするための権利です。たとえば、次のことをような権利が権限です。
  • データベースへの接続(セッションの作成)
  • 表の作成
  • 他のユーザーの表からの行の選択
  • 他のユーザーのストアド・プロシージャの実行
セキュリティを維持するためには、必要な作業を実行する上で本当にその権限が必要なユーザーにのみ最低限の権限を付与するようにしてください。特に、管理者権限(SYSDBA、SYSOPER、ANYのつく権限)は非常に強い権限ですので注意するようにしてください。

権限を付与するには、2つの方法があります。直接ユーザーに対して権限を付与する方法と、権限をロール(名前つきの権限グループ)に付与したあとで、このロールをユーザーに付与する方法です。
個々のユーザーに権限を付与するのではなく、ロールを使用するほうが権限の管理が簡単になります。

  権限の種類

権限は大きく分けて次の2つに分類されます。
  • システム権限
  • (スキーマ)オブジェクト権限
システム権限とは、特定のアクションを実行する権限、特定のタイプのオブジェクトに対するアクションを実行する権限です。
例えば、
表領域を作成する権限
データベースの任意の表から行を削除する権限

オブジェクト権限とは、特定のスキーマ・オブジェクトに対して特定のアクションを実行する権限です。
例えば、
department表から行を削除する権限など


  権限の許可、拒否、取り消し

ユーザーに直接、権限を割り当ててみます。
今回の例では、SCOTTユーザーに対してHRスキーマのEMPLOYEES表のSELECT権限を割り当てる設定をしてみます。


 Enterprise Managerによる権限の割り当て

1.   Enterprise ManagerにSYSDBA権限でログインしてください。ホーム画面の「管理」タブの中の「セキュリティ」以下の「ユーザー」をクリックします。この後、「SCOTT」ユーザーに対して権限を割り当てるので、ここでは「SCOTT」をクリックします。


2.   タブの中には、「システム権限」「オブジェクト権限」とありますのが、今回の例ではオブジェクト権限を選択します。


3.   特定の表に対するオブジェクト権限を設定します。「オブジェクト・タイプの選択」の項目に「表」を選択してボタンをクリックしてください。


4.   他のスキーマの表を選択します。をクリックすると選択用のウィンドウが開きます。


5.   スキーマに「HR」を選択し、ボタンをクリックするとHRスキーマの表が表示されます。「EMPLOYEES」を選択後、ボタンをクリックして選択します。


6.   「使用可能な権限」のリストから、「SELECT」を選択してボタンを押して、「選択した権限」のリストに追加後、ボタンをクリックします。


7.   リストに、「HR.EMPLOYEES」の「SELECT」権限が付与されたことが確認できます。


  ユーザー定義のデータベースロール

スキーマに直接に権限を付与する方法をご説明しましたが、ロールを使ったほうが管理が簡単になります。ここでは、実際にロールを作る手順をご説明します。


 ユーザー定義ロールを作成する

1.   Enterprise ManagerにSYSDBA権限でログインしてください。ホーム画面の「管理」タブの中の「セキュリティ」以下の「ロール」をクリックします。新規のロールを作成しますのでボタンをクリックしてください。


2.   名前の項目にロールの名前を入力します。今回は「ORDROLE」というロールを作成してみます。その後、このロールに付与する権限を設定します。「オブジェクト権限」のタブをクリックしてください。


3.   オブジェクト・タイプの選択から「表」を選び、ボタンをクリックします。


4.   他のスキーマの表を選択します。をクリックすると選択用のウィンドウが開きます。


5.   スキーマに「HR」を選択し、ボタンをクリックするとHRスキーマの表が表示されます。「EMPLOYEES」を選択後、ボタンをクリックして選択します。


6.   「使用可能な権限」のリストから、「SELECT」を選択してボタンを押して、「選択した権限」のリストに追加後、ボタンをクリックします。


7.   ロールに対してHRスキーマのEMPLOYEES表へのSELECT権限が付与されました。ボタンを押すことで作成されます。


  ロールによる権限管理の簡素化

次に、ロールを使ってユーザーに対して権限の設定を行ってみましょう。
先程作成した「ORDROLE」ロールをORADIRECTユーザーに割り当てます。


 ユーザーにロールを割り当てる

1.   Enterprise ManagerにSYSDBA権限でログインしてください。ホーム画面の「管理」タブの中の「セキュリティ」以下の「ユーザー」をクリックします。この後、「ORADIRECT」ユーザーに対して権限を割り当てるので、ここでは「ORADIRECT」をクリックします。


2.   タブの中から、「ロール」を選択します。


3.   ボタンをクリックして、ロールを追加します。


4.   「使用可能なロール」のリストの中から、「ORDROLE」を選択してボタンにて「選択したロール」に加えます。


5.   「ORDROLE」が追加されたことが確認できます。


  Public ロール

PUBLICに権限を付与すると
  • 全ユーザーが、その権限を行使することができます。
  • 今後の新規ユーザーも、その権限を行使することができます。

逆に、全ユーザーが与えられた権限を行使できるということを考慮して、PUBLICに権限を付与する場合は十分気をつけて下さい。また、PUBLICに対して付与した権限を取り消す場合、PUBLICで取り消す必要があります。


 外部からのアクセス

Oracleでは、データベース・サーバーとクライアント間の通信には、Oracle Net Servicesというネットワーク・ライブラリを使用します。

  リスナーとは、Oracle*Netの仕組み

リスナーとは、データベースがクライアントからの初期接続要求を受け付けるアプリケーションです。リスナーは、クライアントからの要求を受け取ったあとデータベースへ要求を引き渡します。


  リスナー・ポートを変更

リスナーのポートはデフォルトでは1521になっています。この番号は、広く使われているものであるので変更することをお勧めします。


 リスナー・ポートを変更する

1.   Enterprise Managerのトップ・ページから、リスナーの設定ページに移動します。「リスナー」の横にリスナー名が表示されますので、クリックしてください。リスナーの情報が表示されます。ボタンを押して設定を変更します。


2.   ボタンをクリックして、アドレスの編集を行います。


3.   アドレスを任意の値に変更して、ボタンをクリックします。今回は「1522」と変更しています。


4.   ボタンをクリックします。


5.   変更を反映させるために、リスナーを再起動するかを求められますので、再起動を選択後にボタンをクリックします。リスナーが再起動され設定が反映されました。


  リスナーの管理制限

リスナーの管理(設定変更や起動・停止など)を行う際にパスワードを入力することを必要とすることが出来ます。以下の設定を行うと、リスナーの起動や停止の際には必ずパスワードの入力が必要になります。


 リスナーにパスワードを設定する

1.   Enterprise Managerのトップ・ページから、リスナーの設定ページに移動します。「リスナー」の横にリスナー名が表示されますので、クリックしてください。リスナーの情報が表示されます。ボタンを押して設定を変更します。


2.   「認証」のタブをクリックします。


3.   「リスナー操作にパスワードが必要です」にチェックを入れて、「新規パスワード」と「パスワードの確認」の各項目にパスワードを入力してください。その後ボタンを押します。


4.   変更を反映させるために、リスナーを再起動するかを求められますので、再起動を選択後にボタンをクリックします。リスナーが再起動され設定が反映されました。リスナーの設定変更などの管理操作時に、パスワードの入力が必要になるような設定になります。


 その他のセキュリティトピック

その他、簡単に実現できるセキュリティを高めるための設定に関して、この章ではご紹介します。

  ビューとストアド プロシージャによるセキュリティの管理

ビューを使用したセキュリティ
ビューとは、1つ以上の表から選択されたデータを表現したものです。表に似た利用方法になりますが、ビュー内に実際のデータは持ちません。
ビューに対しては、問い合せをすることができ、また更新も可能です。

たとえば、すべての従業員データの実表には、いくつかの列と多数の情報行が含まれている場合があります。 その中の特定の列のみをユーザーに参照させる場合は、参照可能な列のみを含んだ表のビューを作成できます。
次に、作成したビューへのアクセス権を他のユーザーに付与し、実表へのアクセスを禁止します。


 ビューを使ったアクセス制限

1.   ここでは、管理者がアクセスに制限をかけたビューをEnterprise Manager で作成する例をご紹介します。Enterprise ManagerにSYSDBA権限でログインしてください。ホーム画面の「管理」タブの中の「スキーマ」以下の「ビュー」をクリックします。ボタンをクリックします。


2.   ビューの作成では、「名前」に「EMPVIEW」、「問合せテキスト」にビューを定義するためのSQL文を以下のように記述します。EMP表の中から、ENAMEとSALのカラムのみにアクセスするようなビューを作成します。ボタンを押して次に進みます。

名前 EMPVIEW
スキーマ SCOTT
問合せテキスト SELECT ENAME , SAL FROM EMP



3.   作成されました。ここで、「アクション」から「データの表示」を選択してボタンをクリックします。


4.   ビューから見えるデータが検索されました。EMP表に格納されているデータの中から、EMPNAME、SALの項目のみが検索できていることが確認できました。


ストアドプロシージャを使用したセキュリティ
ストアド・プロシージャは、業務運用に応じた権限の使用を実現することができます。
たとえば、アプリケーション開発者は、EMPLOYEES 表にある従業員の名前および住所のみを、通常の勤務時間内にのみ更新するプロシージャを作成できます。
また、開発者(またはアプリケーション管理者)は、人事部門の担当者にEMPLOYEES 表のUPDATE 権限を付与するのではなく、プロシージャのみに権限を付与できます。 これによって、人事部門の担当者が権限を使用できるのはプロシージャのコンテキスト内のみになり、EMPLOYEES 表を直接更新できなくなります。


  初期化パラメータ

セキュリティの観点から、いくつかの初期化パラメータの値を確認してみましょう。

O7_DICTIONARY_ACCESSIBILITY
このパラメータは、SELECT ANY TABLE権限をもっていればデータ・ディクショナリへのアクセスを可能になるパラメータです。何らかの理由でこの設定が必要となった場合にTRUEにしますが、これは一時的な設定ですので、必要なくなった場合には、FALSEに設定して下さい。Oracle Database 10gでのデフォルトは、FALSEになっています。

REMOTE_OS_AUTHENT
OSのユーザー名によるユーザー認証が行われるようになります。これによって、全てのクライアントを暗黙的に許可するようになります。全てのクライアントが信頼できる環境にある場合を除いてはFALSEに設定することをおすすめします。
Oracle Database 10gでのデフォルトは、FALSEになっています。


 初期化パラメータの確認方法

1.   Enterprise ManagerにSYSDBA権限でログインし、「管理」->「すべての初期化パラメータ」をクリックします。


2.   フィルタのフィールドに「O7_DICTIONARY_ACCESSIBILITY」と入力して、をクリックして検索します。



Copyright © 2004, Oracle Corporation Japan. All rights reserved.
Legal Notices and Terms of UsePrivacy Statement

この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。日本オラクル社は本書の内容に関していかなる保証もいたしません。また、本書の内容に関連したいかなる損害についても責任を負いかねます。

Oracleは米国Oracle Corporationの登録商標です。文中に参照されている各製品名及びサービス名は米国Oracle Corporationの商標または登録商標です。その他の製品名及びサービス名はそれぞれの所有者の商標または登録商標の可能性があります。