リソース

/

ACP 実習ノート

[第34回] 同じサーバーのDBも業務別に権限を分ける

DBアクセス制御

2026年11月9日

同一サーバーに複数業務DBがあっても注文担当へ精算まで許可する必要はない。QueryPieで参照可能DBを定めた。

 

以前のテーブル制限と違いDB自体を分ける。一つのMySQL上の注文と精算のうち、注文だけを許可した。

 

 

まず両DBを参照できると確認する

 

route_labと同じサーバーにep34_financeと架空精算3件を追加し、DB Schema Scope Labを登録した。

 

最初はHost単位のRead-Onlyを付け、Webエディターで注文と精算34002の両方を同じ接続で取得した。

 

画面1. 分離前は同じ接続で精算も参照できた。
画面1. 分離前は同じ接続で精算も参照できた。

 

登録DBアカウントは両テーブルを読める。その権限を維持し、QueryPie利用者の範囲だけ変更した。

 

 

付与時に注文DBを指定する

 

事前接続を切りHost権限を回収して、Grant PrivilegeでSchema (Logical DB)を選んだ。

 

接続とHost Level Privilege Read-Onlyを選び、Add Itemでroute_labのSelectを追加した。MySQLではテーブルまで指定せずDB名でよい。

 

画面2. 論理DB単位で業務DBはroute_labだけを追加した。
画面2. 論理DB単位で業務DBはroute_labだけを追加した。

 

初期表示のinformation_schema・mysqlのSelectは維持し、ep34_financeは追加しなかった。

 

保存後のSchema Level一覧にDBとSelectが残り、利用者側も同じ範囲を確認できた。

 

 

注文は参照でき、精算は制限される

 

開発者で新規接続し同じ注文SQLを実行すると、27002、SHIPPED、18,500ウォンが返った。

 

画面3. 許可注文DBでは必要データを引き続き参照できた。
画面3. 許可注文DBでは必要データを引き続き参照できた。

 

同じ精算SQLは「No permission to execute SELECT statement」となり、新たなDB範囲で以前の参照が制限された。

 

画面4. 注文DBだけの許可で精算SELECTが止まった。
画面4. 注文DBだけの許可で精算SELECTが止まった。

 

再度注文を見ても正常で、精算拒否後も業務は続けられた。

 

登録DBアカウントで別確認すると両方読めた。元アカウントを維持し利用者別に範囲を絞れると分かった。

 

 

どのDBを参照したかも記録される

 

人と接続でQuery Auditを絞ると、前2件・変更後3件の計5件が集まった。

 

精算はFailure・Preventedで、詳細に人、時刻、ep34_reader、ep34_financeのsettlements、SQL、拒否文が残った。

 

画面5. 制限参照の人、DB、SQL、エラーを確認した。
画面5. 制限参照の人、DB、SQL、エラーを確認した。

 

最後の注文はSuccessでSchema Level route_labのSelectも表示され、使った権限まで分かった。

 

 

権限の変更履歴も確認する

 

Access Control Logsに付与・回収、人、権限、時刻、Action By管理者が残った。実習後の回収も続いて表示された。

 

画面6. 同じ接続名で付与と回収をまとめて確認した。
画面6. 同じ接続名で付与と回収をまとめて確認した。

 

DBサーバーを増やさず担当業務に合わせて注文と精算を分けられた。設定と実参照を併せて確認できる点も有用だった。

 

QueryPie Community 11.6.7、MySQL 8.0.42のWeb SQLエディターでテスト人員・データを使った。

 

参考: Access Control · Privilege Type · Query Audit