ユーザー管理

管理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の正式な定義は、次のとおりです。
    ALPHA (ALPHA | DIGIT | UNDER)* ;
    各IDは、文字(a-zA-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オプションを使用できるとはかぎりません。
SQL 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]
SQL CLIでは、-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'