TimesTenユーザーの管理
データベース・ユーザーを管理するためのTimesTen機能があります。
データベース・ユーザーの作成または識別
ADMIN
権限を持つユーザーは、内部ユーザーの作成、外部ユーザーの識別またはユーザーの変更を行うことができます。これらのアクションは、TimesTenの直接接続または暗号化されたクライアント/サーバー接続を介して実行できます。 (このガイドの「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, 2021-02-25 12:00:17.027100, <NULL>, <NULL> > 1 row found.
ノート:
TLSが使用されている場合にのみ、クライアント/サーバー接続を介してCREATE
またはALTER USER … IDENTIFIED BY
SQL文を実行できます。パスワードは、TLS接続を介して送信される場合にのみ暗号化されます。
『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.
クライアント/サーバー・ユーザーとパスワードの指定
ユーザー名とパスワードを指定する推奨方法は、Oracleウォレットに両方を格納することです。ただし、クライアントDSNまたは接続属性を使用して、ユーザー名とパスワードを指定することもできます。ウォレットに資格証明を指定することは、クライアントDSNまたは接続文字列でパスワードを指定するよりも安全です。
最初に、CREATE USER
またはALTER USER
SQL文を使用してパスワードを設定または変更します。「データベース・ユーザーの作成または識別」を参照してください。
設定または変更後、次のいずれかの方法で、TimesTenサーバーにユーザーおよびパスワードを指定できます。
Oracleウォレットでのユーザー名とパスワードの指定
接続時に資格証明を提供する最も安全な方法は、ユーザーのパスワードをOracleウォレットに格納することです。接続時に、ユーザー名とウォレットを指定して、接続の資格証明を指定します。ユーザー名を指定すると、ウォレット内から取得するユーザーのパスワードが識別されます。
ユーザー管理およびシステム管理のOracleウォレットがあります。システム管理ウォレットは、ユーザーが作成できるウォレットですが、内部プロシージャ用に内部的に使用されます。この項では、TimesTenデータベースへの接続に使用されるユーザー管理ウォレットについて説明します。
接続時に資格証明を提供するためのユーザー管理ウォレットを作成するには:
-
ウォレットを格納するディレクトリを作成します。たとえば、ユーザー管理ウォレットが格納される
/wallets
などのディレクトリを作成できます。 -
ttUser
ユーティリティには、新しいOracleウォレットを作成するか、既存のウォレットを指定するためのフル・ディレクトリ・パスが必要です。ウォレットの名前は指定できません。したがって、ウォレットは一意のフル・ディレクトリ・パスで指定されます。前述で作成したウォレット・ディレクトリの名前と、そのディレクトリ(1つのウォレットをttUser
ユーティリティに配置する場所)にあるサブディレクトリの一意の名前を指定します。
ノート:
-
単一のOracleウォレット内に複数のユーザーの資格証明を格納できます。たとえば、
/wallets/dsn1wallet
ディレクトリにウォレットを作成できます。/wallets/dsn1wallet
で指定されるウォレットに複数のユーザー資格証明を追加できます。 -
ウォレットに存在できるのは、1人のユーザーの資格証明のみです。したがって、単一のユーザーで別のDSNへの接続に異なるパスワードを使用する場合は、異なるウォレット内で資格証明をそれぞれ指定します。たとえば、ユーザーTerryに
dsn1
に接続するためのパスワードと、dsn2
に接続するための別のパスワードがある場合、/wallets/dsn1wallet
ディレクトリのウォレットおよび/wallets/dsn2wallet
ディレクトリのウォレットに、それぞれTerryのパスワードを追加できます。各ウォレットに、各DSNに接続するための適切なパスワードが格納されます。
ttUser
ユーティリティは、次を実行します:
-
場所がまだ存在しない場合、TimesTenは指定されたサブディレクトリとウォレットを、指定されたウォレット・ディレクトリの場所に作成します。資格証明がOracleウォレットに追加されます。
-
ウォレットは存在するが、ユーザーがウォレットに存在しない場合、
ttUser
ユーティリティはユーザーとパスワードをウォレットに追加します。 -
ユーザー資格証明がすでに既存のウォレットに追加されている場合は、指定されたユーザー名のパスワードが変更されます。
次の例は、ウォレットを格納する/wallets
ディレクトリを作成するユーザーを示しています。この例では、/wallets/dsn1wallet
が存在しないことを前提としています。したがって、ttUser
ユーティリティはdsn1wallet
サブディレクトリを作成し、/wallets/dsn1wallet
ディレクトリにOracleウォレットを作成します。ttUser
ユーティリティは、ウォレットに追加される、ユーザーterry
のパスワードの入力を求めます。
% mkdir /wallets
% ttUser -setPwd -wallet /wallets/dsn1wallet -uid terry
Enter password:
次の例は、ユーザーterry
の資格証明を複数のウォレットに追加して、複数のTimesTenデータベースにアクセスする方法を示しています。たとえば、DSN1 (terry
、pwd1
)およびDSN2 (terry
、pwd2
)のTimesTen資格証明を、wallets
ディレクトリの下の個別のサブディレクトリに存在する2つの異なるウォレットに格納します。
$ ttUser -setPwd -wallet /wallets/dsn1wallet -uid terry
Enter password:
$ ttUser -setPwd -wallet /wallets/dsn2wallet -uid terry
Enter password:
『Oracle TimesTen In-Memory Databaseリファレンス』のttUserを参照してください。
データベースに接続するユーザーを認証するときには、UID
およびPwdWallet
接続属性を使用して、ユーザーの名前および対応するウォレットの場所を指定します。UID
接続属性は、指定されたPwdWallet
を使用して認証するユーザーを指定します。
connect “dsn=mydb;uid=terry;PwdWallet=/wallets/dsn1wallet”;
クライアント/サーバー接続の場合、ウォレットはクライアントに存在する必要があります。『Oracle TimesTen In-Memory Databaseリファレンス』のPwdWalletを参照してください。
クライアントまたはサーバー上のすべてのウォレットを保護および管理する必要があります。ウォレットは、接続元の場所に移動できます。ユーザー資格証明が不要になったら、ttUser
-removePwd
を使用してウォレットからこれらの資格証明を削除できます。
ウォレットが存在しないか、PwdWallet
接続属性が指定されていない場合、指定された資格証明を検索する優先順位は、接続文字列、DSNの順です。
接続属性でのユーザー名とパスワードの指定
UID
、PWD
またはPWDCrypt
一般接続属性を使用して指定できます。TimesTenは、接続認証用のユーザー名とパスワードを検索するときに、次の優先順位を使用します:
-
ユーザー名およびパスワードを持つOracleウォレット。「Oracleウォレットでのユーザー名とパスワードの指定」を参照してください。
-
接続文字列で指定される
UID
、PWD
またはPWDCrypt
接続属性。 -
クライアントDSNで指定される
UID
、PWD
またはPWDCrypt
接続属性。
UID
、PWD
およびPWDCrypt
接続属性は次のとおりです:
-
UID
: 直接またはクライアント/サーバー接続を使用してデータベースへの接続に使用されるユーザー名を指定します。インスタンス管理者として、または外部ユーザーとして接続する場合、ユーザー名を指定する必要はありません。ユーザー名を指定しない場合、TimesTenはUID
がオペレーティング・システムで指定されたユーザー名であると想定します。 -
PWD
: 指定されているUID
に対応するパスワードを指定します。内部ユーザーの場合、指定したDSNのodbc.ini
ファイルで、または接続文字列でPWD
属性を設定しないと、パスワードを要求されます。外部ユーザーの場合は、オペレーティング・システムによって検証されるので、パスワードを指定する必要はありません。クライアント/サーバー接続を開始すると、接続用に送信されるパスワードはすべて、クライアント/サーバー・プロトコルで暗号化されます。
-
PWDCrypt
:PWD
のかわりに、指定したUID
に対応する暗号化されたパスワードを指定します。ノート:
一般接続属性
UID
、PWD
およびPWDCrypt
の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のUIDとPWDを参照してください。『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のTimesTenでの認証を参照してください。
クライアント/サーバー接続のユーザー名とパスワードを定義した後、UID
およびPWD
接続属性を使用して、その接続属性を指定してデータベースに接続します。
-
接続文字列。
-
odbc.ini
ファイルのクライアントDSN。
次の例は、ユーザー名をTerry
、パスワードをttpwd
として接続属性に指定するdatabase1
への接続リクエストです。
% ttIsql "DSN=database1;UID=terry;PWD=ttpwd"
クライアントDSNでのユーザー名とパスワードの指定
クライアントDSNでユーザー名およびパスワードを指定できます。
Windowsでは、「Oracle TimesTen Client DSN Setup」ダイアログで接続属性を指定します。このダイアログでは、User ID
、Password
およびPWDCrypt
接続属性を指定できます。このダイアログでパスワードを指定する場合は、Password
またはPWDCrypt
接続属性を使用します。『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のWindowsでのクライアントDSNの作成を参照してください。
LinuxおよびUNIXの場合、接続属性はodbc.ini
ファイルで指定します。odbc.ini
ファイルのクライアントDSNでは、UID
、PWD
、PWDCrypt
またはPwdWallet
接続属性を指定できます。パスワードを指定するには、Password
、PWDCrypt
またはPwdWallet
のいずれかの接続属性のみを使用します。
次に、odbc.ini
ファイル内のクライアントDSNの構文を示します:
[ODBC Data Sources]
Client_DSN=TimesTen 22.1 Client Driver
『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のLinuxおよびTimesTen Classic用のUNIXでのDSNの作成を参照してください。
TimesTenユーティリティのユーザーとパスワードの指定
ユーザー名とパスワードは、Oracleウォレット、接続属性またはodbc.ini
ファイルで指定できます。
TimesTenユーティリティが接続文字列を取得する場合、Oracleウォレットでユーザー名とパスワードを指定できます。コマンドラインでUID
およびPWD
接続属性を指定するかわりに、PwdWallet
接続属性にウォレットの場所と名前を指定します。
TimesTenユーティリティのUID
接続属性の設定が指定されていても、PWD
属性の設定が接続文字列またはodbc.ini
ファイルで指定されていない場合は、TimesTenによってパスワードの入力を求めるプロンプトが表示されます。
『Oracle TimesTen In-Memory Databaseリファレンス』のUIDおよびPWDを参照してください。
ノート:
-
このプロンプトでパスワードを入力しても、入力した内容は表示されません。
-
PWD
の値をコマンドラインで指定することはお薦めしません。
データベースからのユーザーの破棄
ADMIN
権限を持つユーザーは、DROP USER
文を使用してデータベースから内部または外部ユーザーを削除できます。 『Oracle TimesTen In-Memory Database SQLリファレンス』のDROP USERを参照してください。
たとえば、次のように指定します:
Command> DROP USER terry; User dropped.
ノート:
-
データベースに接続しているユーザー、またはそのユーザーが所有するデータベース・オブジェクトをすべて削除する前のユーザーは破棄できません。
-
TimesTenでは、
DROP USER CASCADE
はサポートされていません。