認証とは、データ、リソースまたはアプリケーションを使用する必要があるユーザー、サーバーまたはその他のエンティティの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'