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はサポートされていません。