日本オラクル クロスインダストリー本部
OracleDirect SCグループ
林 裕一
OracleDirectでは、お客様からのご相談に対応させて頂いております。
私共が、電話とインターネットを使って直接ご説明させて頂きます。
製品の技術的ご説明、デモンストレーションから、構成のご提案まで、是非OracleDirectにご相談ください。
さまざまな内容のiSeminarも予定していますので、是非ご参加ください。 |
 |
「意外と簡単!?」シリーズは、Oracle Database 10gを使用してこれからシステム構築を行い、運用していく方向けに作成しており、初心者の方でも容易に構築/運用ができるよう全編にわたり極力GUIツールを利用した説明として構成しております。
システム構築の方法や運用にはさまざまな方法が存在しますが、「意外と簡単!?」シリーズでは特定のハードウェア上で小中規模のシステムを構築/運用することを目的とした実践的な資料として構成している関係上、個々の機能の説明等は最小限に留めております。
また基本的にStandard Editionで利用可能な機能の範囲にて説明しております。
「意外と簡単!?」シリーズが皆様のシステム構築/運用の一助になれば幸いです。
 |
| 「意外と簡単!?」シリーズの資料構成 |
「意外と簡単!?」シリーズは、以下の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への認証モードの設定とログイン・ユーザーの作成 |
 |
| パスワード管理 |
プロファイルを利用すると、パスワードの制限を設定することが出来ます。
プロファイルとは、システム・リソースおよびパスワードの制限の設定をまとめたもので、パスワード管理の制御を行うことができます。
例えば、以下のような設定が可能です。
ユーザーのロック:
特定のユーザーが、ある回数以上データベースへの接続に失敗した場合にそのユーザーをロックするような設定。
有効期間の設定:
パスワードに有効期限をつけて、同じパスワードを使いつづけないようにする設定。
パスワード履歴管理:
同じパスワードを利用することが出来ないようにする設定。パスワード履歴オプションは、新しく指定される各パスワードを調べて、指定された期間内に、または指定されたパスワード変更回数の間に、同じパスワードが再利用されないようにするためのものです。 データベース管理者は、プロファイルを使用してパスワードの再利用のルールを構成できます。
 |
プロファイルの設定とユーザーの設定 |
| 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表から行を削除する権限など |
 |
| 権限の許可、拒否、取り消し |
 |
| ユーザー定義のデータベースロール |
 |
| ロールによる権限管理の簡素化 |
 |
| Public ロール |
PUBLICに権限を付与すると
- 全ユーザーが、その権限を行使することができます。
- 今後の新規ユーザーも、その権限を行使することができます。
逆に、全ユーザーが与えられた権限を行使できるということを考慮して、PUBLICに権限を付与する場合は十分気をつけて下さい。また、PUBLICに対して付与した権限を取り消す場合、PUBLICで取り消す必要があります。
Oracleでは、データベース・サーバーとクライアント間の通信には、Oracle Net
Servicesというネットワーク・ライブラリを使用します。
 |
| リスナーとは、Oracle*Netの仕組み |
リスナーとは、データベースがクライアントからの初期接続要求を受け付けるアプリケーションです。リスナーは、クライアントからの要求を受け取ったあとデータベースへ要求を引き渡します。
 |
| リスナー・ポートを変更 |
 |
| リスナーの管理制限 |
その他、簡単に実現できるセキュリティを高めるための設定に関して、この章ではご紹介します。
 |
| ビューとストアド プロシージャによるセキュリティの管理 |
ビューを使用したセキュリティ
ビューとは、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」と入力して、をクリックして検索します。 |
|
 |
|