TimesTenユーザーの管理

データベース・ユーザーを管理するためのTimesTen機能があります。

データベース・ユーザーの作成または識別

インスタンス管理者またはADMIN権限を持つユーザーは、内部ユーザーの作成、外部ユーザーの識別またはユーザーの変更を行うことができます。これらのアクションは、TimesTenの直接接続または暗号化されたクライアント/サーバー接続を介して実行できます。 (このガイドの「TimesTenユーザーの概要」および『Oracle TimesTen In-Memory Database SQLリファレンス』CREATE USERALTER 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_USERSSYS.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データベースへの接続に使用されるユーザー管理ウォレットについて説明します。

接続時に資格証明を提供するためのユーザー管理ウォレットを作成するには:

  1. ウォレットを格納するディレクトリを作成します。たとえば、ユーザー管理ウォレットが格納される/walletsなどのディレクトリを作成できます。

  2. 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 (terrypwd1)およびDSN2 (terrypwd2)の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の順です。

接続属性でのユーザー名とパスワードの指定

一般接続属性は接続ごとに設定され、接続が継続している間存在します。各同時接続には別の値を設定できます。ユーザー名とパスワードは、UIDPWDまたはPWDCrypt一般接続属性を使用して指定できます。

TimesTenは、接続認証用のユーザー名とパスワードを検索するときに、次の優先順位を使用します:

UIDPWDおよびPWDCrypt接続属性は次のとおりです:

  • UID: 直接またはクライアント/サーバー接続を使用してデータベースへの接続に使用されるユーザー名を指定します。インスタンス管理者として、または外部ユーザーとして接続する場合、ユーザー名を指定する必要はありません。ユーザー名を指定しない場合、TimesTenはUIDがオペレーティング・システムで指定されたユーザー名であると想定します。

  • PWD: 指定されているUIDに対応するパスワードを指定します。内部ユーザーの場合、指定したDSNのodbc.iniファイルで、または接続文字列でPWD属性を設定しないと、パスワードを要求されます。外部ユーザーの場合は、オペレーティング・システムによって検証されるので、パスワードを指定する必要はありません。

    クライアント/サーバー接続を開始すると、接続用に送信されるパスワードはすべて、クライアント/サーバー・プロトコルで暗号化されます。

  • PWDCrypt: PWDのかわりに、指定したUIDに対応する暗号化されたパスワードを指定します。

    ノート:

    一般接続属性UIDPWDおよび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 IDPasswordおよびPWDCrypt接続属性を指定できます。このダイアログでパスワードを指定する場合は、PasswordまたはPWDCrypt接続属性を使用します。『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』WindowsでのクライアントDSNの作成を参照してください。

LinuxおよびUNIXの場合、接続属性はodbc.iniファイルで指定します。odbc.iniファイルのクライアントDSNでは、UIDPWDPWDCryptまたはPwdWallet接続属性を指定できます。パスワードを指定するには、PasswordPWDCryptまたは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はサポートされていません。