本記事では、OceanBaseデータベースのOracleモードにおけるユーザーの識別と認証の仕組みについて説明します。ユーザー認証、ユーザー識別情報の構成、および認証プラグインの使用方法が含まれます。
ユーザーの識別と認証の機能は、データベースにログインするユーザーの身元を確認し、そのユーザーがデータベースのユーザーと関連付けられるかどうかを検証し、関連付けられたユーザーの権限に基づいてデータアクセス活動をセキュリティ制御するために使用されます。認証プラグイン(Authentication Plugin)は、ユーザーパスワードの検証プロセスで使用されます。Oracleモードでは、OceanBaseデータベースは認証プラグインを通じてパスワードのハッシュ計算と検証方式を制御することをサポートしています。
機能の適用性
このドキュメントはOceanBaseデータベースのOracleモードにのみ適用されます。現在、OceanBaseデータベースCommunity版はMySQLモードのみを提供しています。MySQLモードにおける認証については、認証を参照してください。
ユーザー認証
Oracleモードでは、OceanBaseのユーザー認証とは、OceanBaseのユーザー名とパスワードを用いてユーザーの身元を識別し、ユーザーがアクセス可能な機能やリソースなどを特定することです。OceanBaseデータベースでは、すべてのユーザーが正しいユーザー名とパスワードを使用してログインする必要があり、これによりデータベースのセキュリティが保護されます。
ユーザー識別情報
Oracleモードでは、テナント内でのユーザー名は一意ですが、異なるテナントのユーザーは同名であっても構いません。そのため、ユーザー名@テナント名 の形式でシステム全体でユニークにユーザーを特定できます。
SYSユーザーを使用して、クラスタのOracleテナントにログインします。obclient -usys@oracle -h10.xxx.xxx.1 - P2881 -P*******以下のコマンドを実行して、ユーザー
u1を作成します。obclient> CREATE USER u1 IDENTIFIED BY ******; Query OK, 0 rows affected (0.064 sec)以下のコマンドを実行して、ユーザー
u1にデータベース接続権限を付与します。obclient>GRANT CREATE SESSION TO u1; Query OK, 0 rows affected (0.045 sec)u1ユーザーを使用して、クラスタにログインします。$obclient -h10.xxx.xxx.1 -P2881 -uu1@oracle001 -p****** -A Welcome to the OceanBase. Commands end with ; or \g. Your OceanBase connection id is 3221707914 Server version: OceanBase 4.0.0.0 (r101000022022120716-0d7927892ad6d830e28437af099f018b0ad9a322) (Built Dec 7 2022 16:22:15) Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. obclient [U1]>
認証プラグイン
注意
OceanBaseデータベースは、OracleモードではV4.4.2 BP2バージョンからパスワード認証プラグインメカニズムをサポートしています。
ユーザー作成時や変更時に、
caching_sha2_password認証プラグイン(SHA-256アルゴリズムベース)を明示的に指定することで、より高いセキュリティレベルを実現できます。- ユーザー作成時に認証プラグインを指定しなかった場合、デフォルトで
ob_native_password(mysql_native_passwordと同等で、SHA-1アルゴリズムを使用)が使用されます。caching_sha2_passwordをデフォルトの認証プラグインに設定するには、システム変数 default_authentication_plugin を設定します。
- ユーザー作成時に認証プラグインを指定しなかった場合、デフォルトで
ob_sm3_password:このプラグインは、認証プロトコルとステートマシンを
caching_sha2_passwordと完全に共有します(AuthSwitch、高速認証/完全認証、TLS/RSAによるパスワードの暗号化送信)。ただしアルゴリズムとメタデータは独立しています。このプラグインには以下の特徴があります:- SM3ハッシュアルゴリズム(GB/T 32905-2016):パスワードストレージと認証検証において、SHA-256に代わって使用されます。
- 2種類の認証モード:高速認証(メモリキャッシュ)+ 完全認証(ディスクに保存された文字列 + SSL/RSAによるパスワードの暗号化送信)。
- 反復回数の調整:システム変数 ob_sm3_password_digest_rounds を使用して、
ob_sm3_password認証プラグインがパスワード認証文字列を生成する際のSM3反復回数を制御できます(デフォルトは5000)。
説明
V4.4.2バージョンでは、V4.4.2 BP3バージョンから認証プラグイン
ob_sm3_passwordがサポートされています。
コンポーネントとドライバーのバージョン要件
caching_sha2_password 認証プラグインを使用する場合、データベースコンポーネントとクライアントドライバーは以下のバージョン要件を満たしている必要があります:
コンポーネント/ドライバー |
バージョン要件 |
|---|---|
| OceanBase データベースプロキシ(ODP) | V4.4.0 以降 |
| OBClient | V2.2.13 以降 |
| OB-JDBC | V2.4.18 以降 |
| OBCI | V2.1.1.3 以降 |
caching_sha2_password および ob_sm3_password 認証プラグインを使用する場合、データベースコンポーネントとクライアントドライバーは以下のバージョン要件を満たす必要があります。
コンポーネント/ドライバー |
caching_sha2_password |
ob_sm3_password |
|---|---|---|
| OceanBase データベースプロキシ (ODP) | V4.4.0 以降 | V4.4.2.0 以降 |
| OBClient | V2.2.13 以降 | V2.2.14 以降 |
| libobclient | V2.2.13 以降 | V2.2.14 以降 |
| OB-JDBC | V2.4.18 以降 | V2.4.20 以降 |
| OBCI | V2.1.1.4 以降 | V2.1.1.4 以降 |
例
ユーザー作成時や変更時に、IDENTIFIED WITH auth_plugin 構文を使用して認証プラグインを指定できます。
ユーザー
user1を作成し、認証プラグインを明示的に指定しません(デフォルトでob_native_passwordが使用されます)。obclient> CREATE USER user1 IDENTIFIED BY "******";ユーザー
user2を作成し、caching_sha2_passwordの使用を明示的に指定します。obclient> CREATE USER user2 IDENTIFIED WITH caching_sha2_password BY "******";ユーザー
user1の認証プラグインをcaching_sha2_passwordに変更します。obclient> ALTER USER user1 IDENTIFIED WITH caching_sha2_password BY "******";ユーザー
sm3_userを作成し、ob_sm3_passwordの使用を明示的に指定します。obclient> CREATE USER sm3_user IDENTIFIED WITH ob_sm3_password BY "******";ユーザーの認証プラグイン情報を確認します。
obclient> SELECT username, plugin FROM dba_users WHERE username LIKE '%USER%';
関連ドキュメント
IDENTIFIED WITH 構文の詳細については、CREATE USER を参照してください。