TimesTenアクセス制御の1つの側面は、パスワードを使用した各データベース・ユーザーの認証です。この章では、TimesTenのユーザーとパスワードについて説明します。内容は次のとおりです。
ノート: この章の例では、Command> プロンプトで示されるTimesTen ttIsql ユーティリティを使用します。 |
TimesTenデータベースへのアクセスを保護するには、適切なパスワードを使用してユーザーを作成する必要があります。
TimesTenには、次のタイプのユーザーがあります。
管理ユーザー: インスタンス管理者は、TimesTenインスタンスを作成したユーザーです。インスタンス管理者は、TimesTenユーザー・グループのメンバーであり、インスタンス内でのすべての権限を持っている必要があります。詳細は、Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイドのインスタンス管理者およびTimesTenユーザー・グループの理解を参照してください。
その他のユーザーは、ADMIN
権限を付与されることで、管理機能を持つことができます。これは、インスタンス管理者またはADMIN
権限を持つ他のユーザーが付与できます。
TimesTenシステム・ユーザー: システム・ユーザーSYSTEM
(内部使用用)、SYS
(システム・オブジェクトのスキーマ)、およびTTREP
(レプリケーション用)は、内部使用のみを目的としてTimesTenのインストール時に作成されます。
内部ユーザー: 内部ユーザーおよび関連パスワードは、TimesTenデータベース内で定義されます。ユーザーは、指定されたパスワードでそのデータベースへのアクセスを認証される必要があります。CREATE USER
文で内部ユーザーを作成できます。
外部ユーザー: 外部ユーザーはオペレーティング・システム内で作成されますが、TimesTenユーザー・グループのメンバーである必要があります。外部ユーザーは、オペレーティング・システムへのログイン時に認証されていることが前提であるため、データベースにパスワードは格納されていません。TimesTenは、外部ユーザーのオペレーティング・システム資格証明を使用して、そのユーザーとしてTimesTenに接続できるようにします。外部ユーザーは、CREATE USER ... IDENTIFIED EXTERNALLY
文を使用してデータベースに識別される必要があります。
クライアントとサーバーが同一ホスト上にある場合を除き、外部ユーザーは、TimesTen Client/Serverに対して使用できません。
ノート:
|
この項では、データベース・ユーザーを管理するためのTimesTenの機能について説明します。内容は次のとおりです。
インスタンス管理者またはADMIN
権限を持つユーザーは、内部ユーザーの作成、外部ユーザーの識別またはユーザーの変更を行うことができます。これらのアクションは、TimesTenの直接接続を介してのみ実行できます。(これらの文の詳細は、Oracle TimesTen In-Memory Database SQLリファレンスのCREATE USERおよびALTER USERを参照してください。)
内部ユーザーを作成するには、CREATE USER
文でユーザー名とパスワードを指定します。次の例では、パスワードsecret
を持つ内部ユーザーterry
を作成します。
Command> CREATE USER terry IDENTIFIED BY secret; User created.
外部ユーザーを識別するには、CREATE USER ... IDENTIFIED EXTERNALLY
文でユーザー名を指定します。次の例では、外部ユーザーpat
をTimesTenデータベースで識別できるようにします。
Command> CREATE USER pat IDENTIFIED EXTERNALLY; User created.
外部ユーザーpat
を内部ユーザーに変更するには、次のALTER USER
文を実行します。
Command> ALTER USER pat IDENTIFIED BY secret;
内部ユーザーpat
を外部ユーザーに変更するには、次のALTER USER
文を実行します。
Command> ALTER USER pat IDENTIFIED EXTERNALLY;
次のシステム・ビューでSELECT
文を実行すると、作成したユーザーを確認できます。
SYS.ALL_USERS
では、現在のユーザーに目視確認できるデータベースのすべてのユーザーが表示されます。
SYS.USER_USERS
では、データベースの現在のユーザーが示されます。
SYS.DBA_USERS
では、データベースのすべてのユーザーが示されます。このビューでSELECT文を実行するには、適切な権限が付与されている必要があります。
たとえば、現在のユーザーを表示するには、次の文を実行します。
Command> SELECT * FROM sys.user_users; < PAT, 4, OPEN, <NULL>, <NULL>, USERS, TEMP, 2020-02-25 12:00:17.027100, <NULL>, <NULL> > 1 row found.
これらのビューの詳細は、Oracle TimesTen In-Memory Databaseシステム表およびビュー・リファレンスのSYS.ALL_USERS、SYS.USER_USERSおよびSYS.DBA_USERSを参照してください。
内部ユーザーは、ALTER USER
文のIDENTIFIED BY
句を使用してパスワードを変更できます。
ADMIN
権限を持つユーザーは、すべてのユーザーのパスワードを変更できます。
たとえば、内部ユーザーTERRY
のパスワードを12345
に変更するには、次のようにします。
Command> ALTER USER terry IDENTIFIED BY 12345; User altered.
TimesTen Client/Server接続のユーザー名およびパスワードを定義した後、UID
およびPWD
接続属性を使用して、次の方法でそれらを指定してデータベースに接続できます。
odbc.ini
ファイルのクライアントDSN。
接続文字列。
詳細は、Oracle TimesTen In-Memory DatabaseリファレンスのUIDおよびPWDを参照してください。
ノート: クライアント/サーバーは、TLSを使用する接続に対してのみ、(CREATE USER 、ALTER USER またはttCacheUidPwdSet 組込みプロシージャを使用して)パスワードの設定または変更をサポートします。 |
TimesTenユーティリティのUID
接続属性の設定が指定されていても、PWD
属性の設定が接続文字列またはodbc.ini
ファイルで指定されていない場合は、TimesTenによってパスワードの入力を求めるプロンプトが表示されます。
詳細は、Oracle TimesTen In-Memory DatabaseリファレンスのUIDおよびPWDを参照してください。
ノート:
|
インスタンス管理者またはADMIN
権限を持つユーザーは、DROP USER
文を使用してデータベースから内部または外部ユーザーを削除できます。この文の詳細は、Oracle TimesTen In-Memory Database SQLリファレンス・ガイドのDROP USERを参照してください。
次に例を示します。
Command> DROP USER terry; User dropped.
注意:
|
TimesTen Cacheを使用するには、Oracle Databaseに次のユーザーを作成する必要があります。
TimesTenデータベース用のキャッシュ環境の管理および特定のキャッシュ・グループ・タイプの定義済動作の実行に使用される情報を格納するOracle Databaseオブジェクトを作成、所有および保持するキャッシュ管理ユーザー。
TimesTenデータベースにキャッシュされるOracle Database表を所有する1人以上のスキーマ・ユーザー。既存ユーザーまたは新規ユーザーをスキーマ・ユーザーにすることができます。
TimesTenキャッシュを使用するには、TimesTenデータベースに次のユーザーを作成する必要があります。
キャッシュ・グループ処理を実行するキャッシュ・マネージャ・ユーザー。TimesTenのキャッシュ・マネージャ・ユーザーのユーザー名は、キャッシュされたOracle Database表にアクセスできるキャッシュに対して作成されたOracle Databaseユーザーの名前と同じである必要があります。このOracle Databaseユーザーは、コンパニオンOracle Databaseユーザーとして識別され、キャッシュ管理ユーザー、スキーマ・ユーザーまたはその他の既存ユーザーにすることができます。使いやすくするために、Oracle Databaseキャッシュ管理ユーザーをTimesTenキャッシュ・マネージャ・ユーザーのコンパニオン・ユーザーにすることをお薦めします。キャッシュ・マネージャ・ユーザーのパスワードは、コンパニオンOracle Databaseユーザーとは別のパスワードにすることができます。
キャッシュ表を所有する1人以上のキャッシュ表ユーザー。TimesTenデータベースにキャッシュされるOracle Database表を現在所有しているか、または今後所有することになる各Oracle Databaseスキーマ・ユーザーと同じユーザー名でTimesTenキャッシュ表ユーザーを作成する必要があります。キャッシュ表ユーザーのパスワードは、同じ名前を持つOracle Databaseスキーマ・ユーザーとは別のパスワードにすることができます。
TimesTenキャッシュ表の所有者および名前は、対応するキャッシュされたOracle Database表の所有者および名前と同じです。
キャッシュ環境を設定するための前提条件の1つは、Oracleデータベース内のキャッシュ管理ユーザーの名前とパスワードをTimesTenデータベースに通知することです。
ttIsql
ユーティリティを起動して、cache1
DSN (この例の場合)にキャッシュ・マネージャ・ユーザーとして接続し、次のように設定します。
キャッシュ・マネージャ・ユーザー名を指定するUID
接続属性。
キャッシュ・マネージャ・ユーザーのパスワードを指定するPWD
接続属性。
コンパニオンOracleデータベース・ユーザーのパスワードを指定するOraclePWD
接続属性。
この例では、ttIsql
を使用して接続します。ここで、cacheuser
はパスワードtimesten
を持つキャッシュ・マネージャ・ユーザーです。この例では、キャッシュ管理ユーザー(パスワードはoracle
)は、キャッシュ・マネージャ・ユーザーのコンパニオン・ユーザーであるため、パスワードが指定されています。
% ttIsql "DSN=cache1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
ttCacheUidPwdSet
組込みプロシージャを(1回のみ)使用して、Oracleデータベース内のキャッシュ管理ユーザーの名前とパスワードをTimesTenデータベースに通知します。
キャッシュ管理ユーザー名はcacheuser
で、パスワードはoracle
です。
Command> call ttCacheUidPwdSet('cacheuser','oracle');
TimesTen Cacheのユーザーの作成の詳細は、Oracle TimesTen Application-Tier Database Cacheユーザーズ・ガイドのOracle DatabaseおよびTimesTen Classicシステムの設定およびキャッシュ・インフラストラクチャの設定を参照してください。
キャッシュ管理ユーザー、キャッシュ・マネージャ・ユーザーおよびキャッシュ・ユーザーに必要な権限の詳細は、キャッシュ・グループの権限を参照してください。
この項では、認証のために実装可能なセキュリティのレベルを向上するTimesTenのパスワード管理の機能とメカニズムについて概要を示します。内容は次のとおりです。
この項では、TimesTenデータベースのセキュリティを強化するパスワード管理機能の概要を示します。
ユーザーが同じパスワードを継続して使用できる期間と、その期間の経過後の猶予期間を制限できます。この猶予期間中、パスワードは引き続き許可されて認識されますが、警告が表示されます。
パスワード存続期間を制限するとシステムのセキュリティが強化されますが、ユーザーは以前のパスワードを頻繁に再利用できるため有効性が低下します。ユーザーがパスワードを変更するときに、管理者は次の事項を指定できます。
以前のパスワードが再利用できるようになるまでの最短経過期間。
以前のパスワードが再利用できるようになるまでに必要なパスワードの変更回数。
パスワードを再利用できるようにするには、この両方を満たしている必要があります。たとえば、PASSWORD_REUSE_TIME
が30、PASSWORD_REUSE_MAX
が10の場合は、そのパスワードが最近使用した10個のパスワードでないときに、30日後に再利用できます。
そのどちらか一方を無制限に設定した場合は、パスワードの再利用ができなくなりますが、その両方を無制限に設定した場合は、パスワードの再利用ができるまでの間隔に制限がなくなります。
ハッカーは、パスワードが通用するまで何度もパスワードを推測して、TimesTenへのアクセスを試行することがあります。試行の失敗の許容回数と、その最大回数に達した後にアカウントをロックする期間を制限できます。
TimesTenでは、前の項で説明した機能(PASSWORD_LIFE_TIME
、PASSWORD_GRACE_TIME
、PASSWORD_REUSE_TIME
、PASSWORD_REUSE_MAX
、FAILED_LOGIN_ATTEMPTS
およびPASSWORD_LOCK_TIME
)に対するパスワード管理パラメータの設定を指定するためにプロファイルを採用しています。
複数のユーザーに同じプロファイルを使用できます。また、デフォルトのプロファイルもあります。プロファイルが割り当てられていないユーザーには、デフォルト・プロファイルが使用されます。また、プロファイルのパラメータにDEFAULT
を設定すると、デフォルト・プロファイルの値が使用されるようになります。
プロファイルは、CREATE PROFILE
SQL文で作成します。既存のプロファイルをユーザーに割り当てる場合は、CREATE USER
文にPROFILE
を指定します。
パスワード管理パラメータの詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス』のCREATE PROFILEまたはALTER PROFILEを参照してください。ユーザーの作成時または変更時にプロファイルを指定する方法の詳細は、「CREATE USER」または「ALTER USER」を参照してください。