ユーザー管理
管理CLIを使用して、Oracle NoSQL Databaseでユーザーを作成、変更または削除できます。管理CLIでは、ユーザーを操作するためのコマンドは、DDL APIを介してSQL形式で公開されます。特定のユーザー・アカウントに関する情報を表示することも、登録済ユーザーのサマリー・リストを取得することもできます。詳細は、各ユーザー管理操作を説明した次の各項を参照してください。
すべてのユーザー・パスワードは、パスワード・セキュリティ・ポリシーに従う必要があります。詳細は、パスワードの複雑度ポリシーを参照してください。
ユーザーの作成
ユーザーを作成するには、次のコマンドを使用します。
CREATE USER user_name
(IDENTIFIED EXTERNALLY | IDENTIFIED BY password
[PASSWORD EXPIRE | PASSWORD LIFETIME duration_time_unit])
[ACCOUNT LOCK|UNLOCK]
[ADMIN]
説明:
-
user_name
ユーザーを識別するために名前を割り当てます。Kerberosユーザーを作成する場合、user_nameは、サイトのキー配布センター(KDC)で作成された完全修飾プリンシパル名と一致する必要があります。ユーザー名は、表名と同様にIDです。各IDの正式な定義は、次のとおりです。
各IDは、文字(ALPHA (ALPHA | DIGIT | UNDER)* ;
a-z
、A-Z
)で開始し、その後に他の文字、数値(0 - 9
)およびアンダースコア(_
)を続ける必要があります。含まれる文字数に対するIDのサイズ制限はありません。IDは、その長さに対応するために必要なメモリーと同じ文字数で構成できます。実際には、ほとんどのサイトには名前の長さに関する推奨がありますが、Oracle NoSQL Databaseによってチェックされることも強制されることもありません。既存ユーザーの認証タイプは変更できないため、Kerberosユーザーの名前は、既存のユーザーとは異なる必要があります。
-
IDENTIFIED EXTERNALLY
Oracle NoSQL Databaseでユーザーの認証に外部メカニズムが使用されることを示します。現在、Oracle NoSQL Databaseでは、外部認証サービスとしてKerberosのみがサポートされています。
-
IDENTIFIED BY "password"
Oracle NoSQL Databaseで、割り当てたパスワードにより新しいユーザーを認証することを示します。新規ユーザーはそのパスワードを使用してログオンする必要があります。
注意:
ユーザー・パスワードは、引用符で囲んで指定する必要があります(例: "password")。
-
PASSWORD EXPIRE
割り当てられているパスワードがすでに期限切れであることを示します。この設定により、ユーザーは、最初にログインするとすぐに指定されたパスワードを変更するよう強制されます。Oracle NoSQL Databaseにアクセスする前に、選択したパスワード(すべてのサイト要件を満たすもの)を入力する必要があります。
-
PASSWORD LIFETIME {INT duration_time_unit}
time_unit
を入力します。time_unit : (SECONDS | MINUTES | HOURS | DAYS)
いずれかの時間単位でゼロ(0)を使用することにより、パスワードに有効期限がないことを指定します。負の値を入力すると、エラーが発生します。PASSWORD LIFETIME time_unitを指定しない場合は、グローバル構成の有効期間が使用されます。このパラメータのデフォルトは180日です。
次に、新しいユーザーKateを作成する基本的な例を示します。
IDENTIFIED BY
で、Kateに割り当てるパスワード(この場合には"password")を指定し、PASSWORD LIFETIME
期間で、30 DAYS
として整数の時間単位を指定しています。これを実際に使用することはお薦めしません。kv-> execute 'CREATE USER Kate IDENTIFIED BY \”password\” PASSWORD LIFETIME: 30 DAYS'
-
ACCOUNT {LOCK | UNLOCK}
ユーザーのアカウントをロックしてアクセスを無効にするには、
ACCOUNT LOCK
を指定します。管理者は、このオプションを使用してユーザーからアクセス権を削除できますが、アカウントは保持されます。その後、必要に応じて、ACCOUNT UNLOCK
を指定してユーザー・アカウントを復元します。 -
ADMIN Clause
ユーザーに
sysadmin
ロールを自動的に付与するには、ADMIN
を指定します。
注意:
Oracle NoSQL Databaseインスタンスで最初のユーザーを作成するには、匿名ユーザーとして管理CLIを起動し、plan create-user
コマンドを使用する必要があります。ただし、初期ユーザーの作成は、セキュアなサイトを設定するためのいくつかのステップのうちの1つにすぎず、ここでは説明しません。詳細は、Oracle NoSQL Databaseのセキュア・インストールの実行を参照してください。
ユーザーの変更
ユーザーを変更するには、次のコマンドを使用します。
ALTER USER user_name [IDENTIFIED BY password
[RETAIN CURRENT PASSWORD]] [CLEAR RETAINED PASSWORD] [PASSWORD EXPIRE]
[PASSWORD LIFETIME duration] [ACCOUNT UNLOCK|LOCK]
説明:
-
user_name
変更するユーザーの名前。Kerberosユーザーを指定する場合は、ACCOUNT句オプションのみを変更できます。
-
IDENTIFIED Clause
ユーザーに新しいパスワードを指定する場合は、
BY password
を指定します。 -
RETAIN CURRENT PASSWORD
BY password
句と一緒に使用します。指定した場合、ユーザーに定義された現在のパスワードが、限られた期間(デフォルトでは24時間)またはパスワードが明示的に消去されるまで、有効な代替パスワードとして記憶されます。一度に保持できる代替パスワードは1つのみです。このオプションにより、アプリケーションの操作に影響を与えずに引き続き実行しながら、パスワードを変更できます。 -
CLEAR RETAINED PASSWORD Clause
現在の代替保持パスワードを消去します。
-
PASSWORD EXPIRE
ユーザーのパスワードをただちに失効させ、このユーザーまたはsysadminロールを持つユーザーが失効後にデータベースにログインしようとするときパスワードの変更が必須になります。
-
PASSWORD LIFETIME duration
現在のパスワードを認証に使用できる期間を指定します。
duration: [0-9]+ unit unit: S | M | H | SECONDS | MINUTES | HOURS | DAYS
PASSWORD LIFETIMEに0の時間単位を指定すると、パスワードが有効期限なしになります。
-
ACCOUNT Clause
ユーザーのアカウントをロックしてアクセスを無効にするACCOUNT LOCKを指定します。ユーザーを有効にするには、ACCOUNT UNLOCKを指定します。
既存ユーザーのパスワードを更新する場合、新しいパスワードはパスワード・セキュリティ・ポリシーに準拠する必要があります。詳細は、パスワードの複雑度ポリシーを参照してください。
ユーザーの削除
DROP USER user_name [CASCADE]
DROP USER user_name
コマンドを使用して、指定したユーザー・アカウントを削除します(ユーザーが自分自身を削除することはできません)。ここで、user_name
は、削除するユーザーの名前です。
ユーザーに既存の表がある場合、最初に各表を削除してから、ユーザーを削除します。または、オプションのCASCADE
オプションを使用して、ユーザーとともにユーザー表を削除します。
次に例を示します。
kv-> execute 'DROP USER Kate CASCADE'
ユーザーの削除は即座に発生します。ユーザーが所有する表に別のユーザーがアクセスしていた場合、これらの表に対するDML操作やDDL操作はできなくなります。
ユーザー・ステータス
SHOW USER[S] [-name user_name] [-json | -json-v1]
SHOW USERS
コマンドのS
は、execute
でコールするDDL文を除き、管理CLIではオプションです。DDLの場合、"SHOW USER -name user_name"
は1人のユーザーに関する情報を表示し、SHOW USERS
はすべてのユーザーに関する情報を表示します。
注意:
SHOW USERS
コマンドは、管理CLIとSQL CLIの間で異なります。この項では、可能なかぎり差異について説明します。たとえば、すべての管理CLIコマンドに対してJSONオプションを使用できるとはかぎりません。
-json
フラグのいずれかを追加します。
管理CLIの場合、システム内の既存のすべてのユーザーをリストするには、SHOW USERS
を追加の修飾なしで使用します。たとえば、システム内に次の3人のユーザーが存在するとします。
kv-> execute 'SHOW USERS'
user: id=u1 name=Ken
user: id=u2 name=Kate
user: id=u3 name=Alice
注意:
ユーザーID値は、各ユーザーを追加するたびに順番に増分されます。これらは、各ユーザーが一意になるようにするための内部メカニズムです。
管理CLIから、SHOW USERS -name user_name
を指定すると、特定のユーザーに関する詳細情報が表示されます。
kv-> execute 'SHOW USERS -name Kate'
id=u2 name=kate enabled=true auth-type=LOCAL retain-passwd=inactive
granted-role=[public]
-name
フラグを省略できます。 sql-> show user Kate
このCLIからSHOW USER name
と入力すると、nameは、自動的にuser_name
と解釈されます。
管理CLIからKerberosユーザーを指定する場合、返されるauth-type
値はEXTERNAL
です。
kv-> execute 'SHOW USERS krbuser@EXAMPLE.COM'
user: id=u4 name=krbuser@EXAMPLE.COM enabled=true auth-type=EXTERNAL
retain-passwd=inactive granted-roles=[readwrite, public, sysadmin]
ユーザー・ログイン
-username <user>
または-security <path to security file>
のいずれかのrunadmin引数を使用して、管理CLIにログインできます。
-
-username <user>
ログインするユーザー名を指定します。このオプションは、oracle.kv.transportなどのセキュリティ・プロファイルと組み合せて使用します。
-
-security <path-to-security-file>
ログイン用のプロパティ設定が含まれるセキュリティ・ファイルを指定します。セキュリティ・ファイル内の相対ファイル名参照は、セキュリティ・プロパティ・ファイルの場所に対して相対的に解釈されます。たとえば、セキュリティ・プロパティ・ファイルに
oracle.kv.ssl.truststore=client.trust
という設定が含まれる場合、client.trustファイルはセキュリティ・プロパティ・ファイルと同じディレクトリにある必要があります。ファイルを絶対パスで指定する場合、ファイル・システムの任意の場所に置くことができます。前の章で説明したSSL通信プロパティに加えて、次のプロパティをファイルに設定できます。
oracle.kv.auth.username oracle.kv.auth.wallet.dir oracle.kv.auth.pwdfile.file
ここで、このファイル内のoracle.kv.auth.wallet.dirおよびoracle.kv.auth.pwdfile.fileプロパティは、それぞれEEウォレット・ディレクトリまたはCEパスワード・ストア・ファイルの場所を示します。
注意:
oracle.kv.security Javaシステム・プロパティは、セキュリティ・ファイル・パスを指定するための代替メカニズムとして使用できます。このシステム・プロパティの設定は、管理CLIのコマンドラインに
-security
オプションを追加することと同等です。このプロパティは、すべてのツールおよびKVStoreクライアント・ライブラリによってサポートされています。
パスワード管理
管理者は、様々な時間単位についてユーザーのパスワードの有効期間を構成したり、パスワードをただちに失効させることができます。パスワードが失効したユーザーがOracle NoSQL Databaseにログインするには、パスワードを更新する必要があります。すべてのユーザー・パスワードは、パスワード・セキュリティ・ポリシーに従う必要があります。詳細は、パスワードの複雑度ポリシーを参照してください。
パスワードの失効を管理するには、次の2つの方法があります。
-
明示的な失効
現在のパスワードと、保持パスワードが存在する場合はそれも、ただちに失効させます。このユーザーの場合、データベースへのログインを試行する前にパスワードを変更する必要があります。
次に例を示します。
kv-> execute 'CREATE USER John IDENTIFIED BY \”password\” PASSWORD EXPIRE'
-
パスワード有効期間の構成
Johnのアカウントでデータベースにログインするユーザーは、Johnの新しいパスワードを入力する必要があります。
Logged in admin as John The password of John has expired, it is required to change the password. Enter the new password: Re-enter the new password:
パスワードの有効期間は、現在のパスワードを認証に使用できる期間を制限します。
注意:
この構成は、現在のパスワードに対して機能しますが、保持パスワードに対しては機能しません。
次に例を示します。
kv-> execute 'ALTER USER John PASSWORD LIFETIME 15 days'
上の例では、ユーザーJohnの現在のパスワードが15日後に失効します。失効後に、ユーザーJohnがデータベースにログインしようとすると、パスワードを変更するための通知が表示されます。
アプリケーションを実行したまま、その動作に影響せずにパスワードを変更できるように、保持パスワードが使用されます。システムにこれが保存されるのは一定の期間(24時間)だけで、ユーザーごとに個別に期間を指定する方法はありません。保持パスワードの場合は、次のコマンドによる明示的な失効しかサポートされていません。
kv->execute 'ALTER USER John CLEAR RETAINED PASSWORD'