ColumnStoreデータベースのユーザー管理
基本ユーザー認証
MariaDB ColumnStoreはユーザーアカウントにパーミッションを設定することができます。それらの構文はMariaDBの標準の構文に従います(GRANT参照)。
rootユーザーは、ColumnStoreのあらゆる権限を有します。ユーザーアカウントを適切に設定または制限するためには、権限の設定または制限を適切に行う必要があります。ColumnStoreはクエリの処理でで使用するすべての一時テーブルの作成の際にinfinidb_vtableと呼ばれる専用のスキーマを使用します。rootユーザーはデフォルトでこのスキーマへの権限を有しますが、すべてのユーザーに対しても、この専用のスキーマに対するあらゆる権限を許可する必要があります。
grant ALL on infinidb_vtable.* to user_account;
ここで、user_accountはログインユーザー、サーバーそしてパスワード文字列です。
そして、さらなる権限または制限の設定を、あらゆるオブジェクト(テーブル、関数、プロシージャー、ビュー)に対して行うことができます。以下の例では、ユーザーに対しデータベース内の全テーブルへのパスワードによるフルアクセスを設定しています。
use mysql; grant ALL on my_schema.* to ‘someuser’@’somehost’ identified by ‘somepassword’; flush privileges;
また以下の例では、あるテーブルへのパスワードによる読み込みのみのアクセスを設定しています。
use mysql; grant SELECT on my_schema.table1 to ‘someuser’@’somehost’ identified by ‘somepassword’; flush privileges;
PAM認証
ColumnStore 1.0.8から、PAM(Pluggable Authentication Module)認証のサポートに必要となるプラグインを含んでいます。詳細は pam-authentication-plugin を参照してください。ここでは、OS認証を構成する際にColumnStoreで必要となる手順の概要を説明します。
最初に、mysqlが /etc/shadow ファイルの読み込み権限があることを確認してください。この例では、グループを利用して読み取り権限を付与しています。
$ sudo groupadd shadow $ sudo usermod -a -G shadow mysql $ sudo chown root:shadow /etc/shadow $ sudo chmod g+r /etc/shadow
unixのパスワード認証を構成するため、pam.dエントリを生成します。
$ vi /etc/pam.d/mysql auth required pam_unix.so account required pam_unix.so
auth_pam.soプラグインをロードし、ユーザーを作成します。
$ mcsmysql > INSTALL SONAME 'auth_pam'; > GRANT SELECT ON test.* TO david IDENTIFIED VIA pam; > GRANT ALL ON infinidb_vtable.* TO david;
mariadbサーバープロセスへ認証プラグインとグループの変更を反映させるため、ColumnStoreを再起動します。 Restart ColumnStore so that the mariadb server process picks up the auth plugin and group changes:
$ sudo su - $ mcsadmin restartSystem
設定が正しく行われたかを確認するために、ログイン操作を行い、アカウント(ここではdavid)に対するunixのパスワードを入力します。
$ mcsmysql -u david -p
もし失敗するようであれば、一度システムの再起動を実行し、再度ログイン操作を行ってみてください。