認証機能は、データベースにアクセスするユーザーの身元を検証し、そのユーザーが特定のデータベースユーザーと関連付けられるかどうかを確認するために使用されます。また、関連付けられたデータベースユーザーの権限に基づいて、ユーザーのデータベース内でのデータアクセス活動をセキュリティ制御します。本記事では主にMySQLモードの認証機能について説明します。
OceanBaseデータベースのユーザー認証とは、クライアントがOceanBaseサーバーへのアクセスを試みる際に有効なユーザー資格情報を提供することを指します。OceanBaseサーバーが提供された資格情報が有効であることを確認した場合、クライアントにOceanBaseデータベースへのアクセスを許可します。OceanBaseデータベースは、MySQL Authentication Protocol(MAPI)と呼ばれるプロトコルを使用してユーザー認証を行います。これは、クライアントマシン上のMySQLクライアントアカウントに基づいて身元を検証するものであり、正しいユーザー名とパスワードを持つクライアントのみがOceanBaseサーバーに接続できます。クライアントが接続リクエストを送信すると、OceanBaseサーバーはランダムな識別コードをクライアントに送信します。クライアントは正しいユーザー名とパスワードを使用してこの識別コードをデコードし、その結果をサーバーに送り返さなければなりません。結果が正しい場合、OceanBaseサーバーはクライアントのサーバーへの接続を許可します。
例
MySQLモードでは、userはuser_nameとhostのコンポジットから構成されます。次のステートメントを使用して、同一のユーザー名を持つ3人のユーザーを作成します。
例:
create user 'u1'@'%' identified by '*******';
create user 'u1'@'10.xxx.xxx.1' identified by '*******';
create user 'u1'@'10.xxx.xxx.2' identified by '*******';
その中で:
%:任意のクライアントIPアドレスからのテナントへの接続を許可することを表します。10.xxx.xxx.1:10.xxx.xxx.1というIPアドレスからのみテナントへの接続を許可することを表します。10.xxx.xxx.2:10.xxx.xxx.2というIPアドレスからのみテナントへの接続を許可することを表します。
ユーザーがログインする際、OBServerノードはuser_name、client_ip、passwordに基づいて一致を照合し、ユーザーのログインを制御します。