認証機能は、データベースにアクセスするためにログインするユーザーの身元を検証し、そのユーザーが特定のデータベースユーザーと関連付けられるかどうかを確認し、関連付けられたデータベースユーザーの権限に基づいて、そのユーザーのデータベース内でのデータアクセス活動をセキュリティ制御するために使用されます。本記事では主に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の一致に基づいてユーザーのログインを制御します。