おつおつー^^
今日は水曜に勉強したoracleDB勉強の続きからやっていきたいと思います!
前回の続き...
前回はユーザー作成のコマンドを記載してユーザー名とパスワードの規則についてまでやりました。
その続きの表領域のクオータから勉強開始です。
ユーザーおよびセキュリティの管理
表領域のクオータとは、ユーザーが使用可能な記憶域のサイズです。表領域ごとに設定が可能です。
ユーザーが使用する表領域には、必ず表領域のクオータを設定します。
表領域ついでですが、テーブル作成時、ユーザーデフォルト表領域は特に指定がなければデフォルト表領域になりますが、tablespace句で格納先表領域を指定することができます。
プロファイルは、セキュリティ強化のためユーザーが守るべきパスワードポリシーのルールをまとめたものです。
ユーザーにはいづれかのプロファイルを割り当てる必要があり、省略された場合は事前に作成され削除できないDEFAULTプロファイルが割り当てられます。
プロファイルで指定するパスワードポリシーには様々なパラメータがあります。
表に一覧をまとめました。
パラメータ | 説明 | デフォルト値 |
---|---|---|
PASSWORD_LIFE_TIME | パスワードの有効期間(日数) | 180日 |
PASSWORD_GRACE_TIME | パスワードの有効期間が終了した後、警告は出されるがログインパスワード変更で許可される執行猶予期間 | 7日 |
PASSWORD_REUSE_MAX | パスワードの再利用できるようになるまでの変更回数 | UNLIMITED |
PASSWORD_REUSE_TIME | パスワードを再利用できない日数 | UNLIMITED |
PASSWORD_VERIFY_FUNCTION | パスワードルールを実装したPL/SQL関数名を指定 | NULL |
FAILD_LOGIN_ATTEMPTS | 指定した回数連続してログイン失敗するとアカウントロック | 10回 |
PASSWORD_LOCK_TIME | FAIL_LOGIN_ATTEMPTSに指定された回数連続してログイン失敗したときにロックされる日数 | 1日 |
パスわード期限切れについてですが、PASSWORD EXPIREに指定するとパスワードの期限切れ状態にすることができます。
EXPIREに指定した場合、初回ログイン時に新しいパスワードを設定する必要があるため、データベース管理者にパスワードを知られずにパスワード設定が可能になります。
アカウントロックについて、ALTER USERコマンドでロックすることもできますし、アンロックした場合過去のログインパスワードでログインすることが可能になります。
ちなみにロックされたユーザーのオブジェクトは使用可能です。
また、ユーザー名以外ALTER USERコマンドで属性の変更が可能です。
ユーザー削除についでですが、DROP USERコマンドを使用しますが、ログイン中のユーザーは削除できないということや、ユーザーが表や索引などのオブジェクトを作成している場合、オブジェクトをあらかじめ削除しておくか、CASCADEで指定をしてコマンドを実行する必要があります。
CASCADEコマンドを指定しないといけない場合、していないとORA-01922としてエラーが出ます。
権限管理
基本的にユーザーには権限があり、権限が付与されて初めて操作が行えるようになります。
権限の分類としては、2種類に分けられます。システム権限とオブジェクト権限です。
システム権限はデータベースへのログインや表、表領域、 ユーザー作成。オブジェクト権限は検索、新規行挿入、既存値更新、既存行削除などです。
権限付与と取り消しはGRANTコマンドとREVOKEコマンドを使用します。
GRANT システム権限名 to 付与対象ユーザー; GRANT システム権限名 on オブジェクトto 付与対象ユーザー; REVOKE システム権限英 from 取り消し対象ユーザー; REVOKE システム権限英 on オブジェクト from 取り消し対象ユーザー;
システム権限はCREATE SESSIONが付与されていない場合、データベースにログインできず、CREATE TABLEが付与されていない場合、表作成はできません。
権限付与に関して、権限付与する側も権限が必要です。ADMINオプションを指定して付与権限を付与することができます。GRANT ANY PRIVILEGEシステム権限が付与されているとすべてのシステム権限を他ユーザーに付与できます。
オブジェクト権限はほかユーザーが所有しているオブジェクトに対しての操作権限です。自分が所有しているオブジェクトについては操作が可能です。
GRANTオプションを指定してオブジェクトに対する付与権限を付与でき、また、GRAND ANY OBJECT PRIVILEGEシステム権限を付与することですべてのオブジェクト権限を他ユーザーに付与できます。
余談ですが、自分のオブジェクトはすべての操作が可能と述べましたが、自分のパスワードについても同様です。
ロールについてです。
ロールとは複数権限を一つにまとめて取り扱いやすくしたものです。
ロールは権限をまとめて付与ができるため新規ユーザーへの付与も1つのロールで権限付与が可能です。
また、ロールに権限を追加やその逆で削除した場合はそのロールが付与されているユーザーに変更が反映されます。
ロールにロールを付与することも可能です。
GRANT ロール名 TO 付与対象ユーザー; REVOKE ロール名 FROM 取り消し対象ユーザー;
ロールと権限は別であるため、権限で付与されている権限がロールに含まれていたとしてもロールでの付与は可能です。
ロールから権限削除したの際も別途付与されていた場合は権限ありとなります。
データベース作成時にはいくつかのロールが自動で作成されます。それらのことを事前定義済みロールといいます。
以下の表にまとめました。
ロール | 説明 |
---|---|
CONNECT | CREATE SESSION権限のみ含まれている。oracle enterprise managerを使用してユーザーを作成するとロールは自動的にユーザーに付与される |
RESOURCE | スキーマオブジェクトの作成や変更、削除を可能にする |
DBA | デフォルトでSYSおよびSYSTEMユーザーに付与される。 |
SELECT_CATALOG_ROLE | データディクショナリないのオブジェクトに対するSELECT権限 |
EM_EXPRESS_BASIC | EM Expressに接続して、読取り専用モードでページを表示する権限 |
EM_EXPRESS_ALL | EM Expressに接続して、EM Expressによって提供されるすべての機能を使用できる権限。EM_EXPRESS_BASICを含む。 |
SYSユーザーにあるSYSDBA権限以外にSYSOPER権限などがあります。
どちらもインスタンスの起動停止やバックアップとリカバリの権限を持ちますが、SYSOPERはPUBLICユーザーで接続されユーザーのデータにはアクセス不可。そして、データベースの作成削除や不完全リカバリは実行不可となります。
管理権限を持つユーザーの接続についてですが、接続する際接続文字列にAS SYSDBAまたはAS SYSOPERを指定する必要があります。
インスタンスの起動を行う関係上、SYSDBA権限、SYSOPER権限のユーザーはデータベースの接続および認証を実行できる必要があります。
認証についてはOS認証とパスワードファイル認証があります。