【MariaDB】ユーザー権限の管理(付与/確認/取り消し/ロール 他)

【MariaDB】ユーザーの権限管理(付与/確認/取り消し/ロール 他)

ユーザーに与える権限はデータベースのセキュリティ安定性に直結する重要な要素です。適切な権限設定を行うことで以下のメリットが得られます。

  1. セキュリティの向上
  2. 誤操作の防止
  3. 責任範囲の明確化

最小権限の原則
各ユーザーには業務に必要な最低限の権限のみを付与し、セキュリティリスクを最小限に抑えることが重要です。

【MariaDB】rootユーザー

インストール直後に作成されるデフォルトのルートユーザー (root)は全ての権限を持っています。通常、このユーザーが新しいユーザーを作成し権限を設しします。

権限の付与

作成したユーザーに権限を付与する基本的なSQL構文は以下の通りです。

GRANT 権限 ON データベース名.テーブル名 TO 'ユーザー名'@'ホスト';
  • すべての権限を付与
GRANT ALL PRIVILEGES ON my_database.* TO 'example_user'@'localhost';
  • 特定の権限を付与
GRANT SELECT, INSERT ON my_database.my_table TO 'example_user'@'localhost';
  • 特定のデータベースのみにアクセスを許可
GRANT SELECT ON reports.* TO 'report_viewer'@'%';

権限の確認

  • 以下のコマンドで、ユーザーに付与されている権限を確認できます。
SHOW GRANTS FOR 'ユーザー名'@'ホスト';
  • 自分の権限を確認する場合
SHOW GRANTS FOR CURRENT_USER;

権限の取り消し

  • 不要な権限は以下のコマンドで削除します
REVOKE 権限 ON データベース名.テーブル名 FROM 'ユーザー名'@'ホスト';

【MariaDB】権限の種類

ユーザー作成に必要な権限

ユーザーを作成するには、CREATE USER 権限または SUPER 権限が必要です。

  • CREATE USER 権限
    • 新しいユーザーを作成するための基本的な権限です。

  • SUPER 権限
    • データベース全体を管理できる権限です。
      CREATE USERを含む全権限を持ちますが、運用上は特定の管理者にのみ付与します。

CREATE USER 権限を付与する方法
*.*:すべてのデータベースに対する権限(ユーザー作成に対しては通常これを指定します)

GRANT CREATE USER ON *.* TO 'user_admin'@'localhost';

基本権限

データベースやテーブルに対する基本的な操作を管理するための権限です。

権限名内 容
SELECTデータを読み取る権限
INSERTデータを挿入する権限
UPDATEデータを更新する権限
DELETEデータを削除する権限
CREATE新しいデータベース/テーブル/ビューなどを作成する権限
DROPインデックスを作成または削除する権限
INDEXインデックスを作成または削除する権限
ALTERテーブルの構造を変更する権限
EXECUTEストアドプロシージャや関数を実行する権限
10SHOW VIEWビューの定義を表示する権限
11CREATE VIEWビューを作成する権限

高度な権限

データベースの管理やシステムレベルの操作に関連します。

権限名内 容
1CREATE USER新しいユーザーを作成する権限
2DROP USERユーザーを削除する権限
3GRANT OPTION他のユーザーに権限を付与または取り消す権限
4RELOADシステム変数をリロードする権限(FLUSH操作が含まれる)
5PROCESSサーバーで実行中のプロセスを表示する権限
6FILEサーバーのファイルに読み書きする権限
7SUPERスーパーユーザー権限(すべての操作を実行可能)
8REPLICATION CLIENTバイナリログやリレーログの位置を確認する権限
9REPLICATION SLAVEマスターからスレーブへのデータ複製を許可する権限
10SHUTDOWNサーバーを停止する権限

セキュリティ関連の権限

セキュリティに関連する権限で、データの暗号化や認証に影響を与えるものです。

権限名内 容
CREATE ROLE新しいロールを作成する権限
DROP ROLEロールを削除する権限
APPLICATION_PASSWORD_ADMINアプリケーションパスワードの管理権限
SET PASSWORD他のユーザーのパスワードを設定/変更する権限

特定の操作に関連する権限

特定の機能や操作に関連する権限です。

権限名内 容
1LOCK TABLESテーブルをロックする権限
2REFERENCES外部キー制約を設定する権限
3EVENTイベントスケジューラを管理する権限
4TRIGGERトリガーを作成または削除する権限
5CREATE TEMPORARY TABLES一時テーブルを作成する権限

グローバルレベルで利用可能な権限

この権限はサーバー全体に影響を与える権限です。

権限名内 容
ALL PRIVILEGESすべての権限を付与(個別の権限を指定する代わりに使用する)

【MariaDB】ロール

MariaDBのロール (Role)は、ユーザーの権限管理を簡素化するための仕組みです。複数の権限をロールにまとめ、ロールをユーザーに割り当てることで権限の付与や管理を効率的に行うことができます。これは特に、多くのユーザーが異なる権限を持つような環境で便利です。

ロールの特徴

  • 権限のグループ化:
    • ロールに権限を付与し、そのロールをユーザーに割り当てることでユーザー個別に権限を管理する必要がなくなります。
  • 柔軟性:
    • 複数のロールを1人のユーザーに割り当てることが可能です。
    • ロール自体にも権限を付与したり削除したりできます。
  • 有効化と無効化:
    • ロールをアクティブ(有効化)または非アクティブ(無効化)にすることができます。

ロールの作成

新しいロールを作成するには、CREATE ROLEコマンドを使用します。

CREATE ROLE 'role_name';

ロールへの権限付与

ロールに権限を付与するには、GRANTコマンドを使用します。

GRANT 権限名 ON データベース名.テーブル名 TO 'role_name';

ロールのユーザーへの割り当て

ユーザーにロールを割り当てるには、GRANTコマンドを使用します。

GRANT 'role_name' TO 'username'@'host';

ロールの有効化

割り当てたロールを有効化するには、SET ROLEコマンドを使用します。

SET ROLE 'role_name';
  • 複数のロールを有効化
SET ROLE 'role_name1', 'role_name2';
  • すべてのロールを有効化
SET ROLE ALL;

ロールを無効化

SET ROLE NONE コマンドを使用します。

SET ROLE NONE;

ロールの権限確認

現在のロールに付与されている権限の確認はSHOW GRANTS コマンドを使用します。

SHOW GRANTS FOR 'role_name';

ロールの削除

ロールを削除するには、DROP ROLEコマンドを使用します。

DROP ROLE 'role_name';

ロールの利用例

  • データベース:company_db
  • ユーザー:employeeとmanager
  • 要件
    • employeeは読み取り専用アクセスが必要。
    • managerはすべての
  • ロールの作成と権限の付与
CREATE ROLE 'read_only';
CREATE ROLE 'full_access';
GRANT SELECT ON company_db.* TO 'read_only';
GRANT ALL PRIVILEGES ON company_db.* TO 'full_access';
  • ロールの割り当て
GRANT 'read_only' TO 'employee'@'localhost';
GRANT 'full_access' TO 'manager'@'localhost';
  • employeeのロールの有効化
    employee接続時にロールを有効化
SET ROLE 'read_only';
  • managerのロールの有効化
    manager接続時にロールを有効化
SET ROLE 'full_access';

ロールの注意事項

  • ロールはデフォルトでは無効
    • 割り当てたロールを使用するには、SET ROLEで有効化が必要です。
  • ロールと直接権限の競合
    • ユーザーに直接付与された権限とロールによる権限が競合する場合、どちらも有効になります。
  • 最小権限の原則
    • セキュリティの観点から不要な権限をロールに含めないようにします。

まとめ

ユーザー権限やロールは、MariaDBでアクセス制御や操作範囲を効率的に管理する手段です。
権限はユーザーごとに細かく設定でき、ロールを利用すれば複数のユーザーに共通の権限を一括で付与・管理可能です。

便利な一方で、最小権限の原則を守り不必要な権限やロールを付与しないことが重要です。また、定期的に権限やロールを監査し不要な設定を削除することでセキュリティリスクを軽減できます。適切な設定により運用効率と安全性の向上を図りましょう。

タイトルとURLをコピーしました