第7章 認証の構成

目次

ユーザー管理
ユーザーの作成
ユーザーの変更
ユーザーの削除
ユーザー・ステータス
ユーザー・ログイン
パスワード管理
セッション

認証とは、データ、リソースまたはアプリケーションを使用する必要があるユーザー、サーバーまたはその他のエンティティのIDを検証することを意味します。そのIDを検証することで、その後の対話のための信頼関係が確立されます。また、認証によってアクセスおよび処理を特定のIDにリンクすることが可能になるため、アカウンタビリティが有効になります。

セキュアなOracle NoSQL Database内では、データベースおよび内部APIへのアクセスが通常は認証済ユーザーに制限されます。セキュアなOracle NoSQL Databaseの初回起動時は、ユーザーが定義されておらず、管理インタフェースへのログインは認証なしで許可されます。ただし、データ・アクセス操作はユーザー認証なしでは実行できません。

ユーザー管理

Oracle NoSQL Databaseで、管理CLIを使用してユーザーを作成、変更または削除できます。ユーザーを操作する管理コマンドは、DDL APIを介してSQL形式で公開されています。特定のユーザー・アカウントに関する情報および登録済ユーザーの要約リストも表示できます。詳細は、各ユーザー管理操作を説明した次の各項を参照してください。

ユーザーの作成

ユーザーを作成するには、次のコマンドを使用します。

CREATE USER user_name IDENTIFIED BY password
[ACCOUNT LOCK|UNLOCK] [ADMIN] [PASSWORD EXPIRE]
[PASSWORD LIFETIME duration] 

説明:

  • user_name

    ユーザーの名前

  • IDENTIFIED Clause

    ONDBがユーザーを認証する方法を指定します(現在はパスワード)。

  • BY password

    ONDBローカル・ユーザーを作成し、そのユーザーがONDBへのログオン時にはパスワードを入力する必要があることを指定します。

    注意

    パスワードは、"123@abc"のように二重引用符で囲む必要があります。

  • ACCOUNT Clause

    ユーザーのアカウントをロックしてアクセスを無効にするACCOUNT LOCKを指定します。

  • ADMIN Clause

    デフォルトで"sysadmin"ロールを付与されるユーザーを作成するようADMINに指定します。

  • PASSWORD EXPIRE

    最初のログイン後すぐにユーザーのパスワードを失効させる場合にPASSWORD EXPIREを指定します。これを設定すると、このユーザーまたはsysadminロールを持つユーザーは、データベースにログインする前にパスワードを変更することが必須になります。

  • PASSWORD LIFETIME duration

    現在のパスワードを認証に使用できる期間を指定します。

    duration: [0-9]+ unit 
    unit: S | M | H | SECONDS | MINUTES | HOURS | DAYS

    "123"というパスワードを持つ管理者ユーザーKateを作成する簡単な例を示します。

    Kv-> execute 'CREATE USER Kate IDENTIFIED BY \”123\” ADMIN'

注意

Oracle NoSQL Databaseインスタンスで最初のユーザーを作成するには、匿名ユーザーとして管理CLIにログインし、"plan create-user"コマンドを使用する必要があります。これを実行するには、「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

    変更するユーザーの名前。

  • 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 
  • ACCOUNT Clause

    ユーザーのアカウントをロックしてアクセスを無効にするACCOUNT LOCKを指定します。

ユーザーの削除

DROP USER user_name 

指定したユーザー・アカウントを削除するには、DROP USER user_nameコマンドを使用します(ユーザーが自身を削除することはできません)。

ここで、user_nameは削除するユーザーの名前です。

次に例を示します。

kv->execute 'DROP USER Kate'

ユーザー・ステータス

SHOW [AS JSON] USERS| USER user_name 

システムに既存のユーザーをすべてリストするには、SHOW USERSコマンドを使用します。

ここで、user_nameは登録されているユーザーの名前です。

たとえば、システムに3つのユーザーが作成されている場合は、次のようになります。

kv-> execute 'SHOW USERS'
user: id=u1 name=Ken
user: id=u2 name=Kate
user: id=u3 name=Alice

注意

これらのIDは、一意性を保証するための内部メカニズムであり、1つずつ順に増分します。

ユーザー名を指定する場合は、SHOW USER user_nameコマンドでユーザーの詳細情報を表示します。次に例を示します。

kv->execute 'SHOW USER Kate'
id=u2 name=kate enabled=true type=LOCAL retain-passwd=inactive
granted-role=[public]

ユーザー・ログイン

-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システム・プロパティは、セキュリティ・ファイル・パスを指定するための代替メカニズムとして使用できます。このシステム・プロパティの設定は、コマンドラインへの-securityオプションの追加と同等です。このプロパティは、すべてのツールおよびKVStoreクライアント・ライブラリによってサポートされています。

パスワード管理

ユーザーは、ユーザーのパスワードの有効期間を構成することができ、すぐに失効する設定も可能です。パスワードが失効したユーザーは、パスワードを更新しないとOracle NoSQL Databaseにログインできません。パスワードの失効を管理するには、次の2つの方法があります。

  • 明示的な失効

    現在のパスワードと、保持パスワードが存在する場合はそれも、ただちに失効させます。このユーザーの場合、データベースへのログインを試行する前にパスワードを変更する必要があります。

    次に例を示します。

    kv->execute 'CREATE USER John IDENTIFIED BY \”123\” 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日後に失効します。失効後に、このユーザーがデータベースにログインしようとすると、パスワード変更を求める通知が表示されます。

    アプリケーションを実行したまま、その動作に影響せずにパスワードを変更できるように、保持パスワードが使用されます。システムがこれを記憶しているのは一定の期間(24時間)だけで、ユーザーごとに個別に期間を指定する方法はありません。保持パスワードの場合は、次のコマンドによる明示的な失効しかサポートされていません。

    kv->execute 'ALTER USER John CLEAR RETAINED PASSWORD'