リソース

/

ACP 実習ノート

[第3回] QueryPie ACPに最初のDBを接続する — 開発者の接続方法はどう変わるか

導入ガイド · DBアクセス制御

2026年11月7日

第2回ではMacにQueryPie ACP Community Editionを導入してログインした。今回はDBを接続し、実際にデータを参照する。

 

気になったのは開発者側の操作だ。管理者がDBを登録したら、開発者はどこでSQLを実行するのか。Webだけなのか、使い慣れたDBクライアントでも接続できるのか。

 

テスト用の注文DBを作り、まずQueryPieのWeb画面で参照した。続いてDBeaverにProxy接続情報を直接入力する方法と、PCにMulti Agentを導入して接続する方法も試した。三つの方法ですべて同じ5件の注文が返ることまで確認した。

 

使用したのはQueryPie ACP Community 11.6.7とMySQL 8.0.42。以下の画面にある顧客・注文はすべて実習用の架空データだ。

 

 

1. DBを接続して参照する

 

まずMySQLコンテナをもう一つ起動した。QueryPie内部のDBと混在しないよう、実習用DBを別に用意した。

 

DB名はorders_demoとした。customersに顧客4人、ordersに注文12件を入れた。配送待ち注文の検索や状態別件数の集計で、接続と参照を確認するには十分だ。

 

MySQLにorders_readerを作り、orders_demoへのSELECTだけを許可した。今回は参照のみなのでDBアカウントもその権限に限定した。これは後で設定するQueryPieユーザーの権限とは別だ。

 

準備ができたので、管理者としてDBを登録し、開発者アカウントに切り替えて接続する。

 

 

2. QueryPieにMySQLを登録する

 

管理者でログインし、Databases → Connection Management → DB ConnectionsでMySQL接続を作成した。入力値は次のとおりだ。

 

  • 接続名:Orders Demo MySQL

  • DB種別:MySQL

  • Host / Port: orders-db / 3306

  • Database Name: orders_demo

  • DBアカウント:orders_reader

 

Hostにはlocalhostではなくorders-dbを指定した。同じDockerネットワーク上なのでコンテナ名で接続できる。ここでlocalhostを指定するとQueryPieコンテナ自身を指してしまう。

 

社内DBを接続するときも先に確認したい。自分のPCから接続できるかより、QueryPieサーバーからそのDBへ到達できるかが重要だ。

 

画面1. Test Connectionを押すと接続成功のメッセージが表示された。
画面1. Test Connectionを押すと接続成功のメッセージが表示された。

 

DBアカウントとパスワードを入力し、Test Connectionで成功を確認して保存した。

 

下部のHide this credential from Connection List pageにもチェックを入れた。ユーザーの接続一覧で元DBの認証情報を隠す設定だ。開発者にパスワードがどう見えるかは、そのアカウントで確認することにした。

 

画面2. Orders Demo MySQLの登録完了。次はこのDBを使う開発者アカウントを作る。
画面2. Orders Demo MySQLの登録完了。次はこのDBを使う開発者アカウントを作る。

 

 

3. 開発者には読み取り専用権限を付与する

 

管理者だけで試すと開発者が実際に見る画面を見落としかねない。General → User Management → UsersでDemo Developer、ログインID demo-devを作成し、管理者ロールはNoneにした。

 

画面3. 既存管理者qp-adminの下に開発者demo-devを追加した。
画面3. 既存管理者qp-adminの下に開発者demo-devを追加した。

 

続いてDatabases → DB Access Control → Access Controlを開き、Demo Developerを選択した。Grant PrivilegeでOrders Demo MySQLへのRead-Onlyを付与した。

 

画面4. demo-devにOrders Demo MySQLのRead-Onlyを付与した。
画面4. demo-devにOrders Demo MySQLのRead-Onlyを付与した。

 

DB登録とユーザーへのアクセス権付与は別の作業だった。今回は一人へ直接付与したが、人数が増えればチームのグループ管理がよさそうだ。一時的なアクセスには有効期限も検討したい。

 

 

4. 開発者としてログインし、注文を参照する

 

demo-devでログインし、初回に求められたパスワード変更を済ませた。DatabasesのQueryPie Connectionsを展開するとOrders Demo MySQLが表示された。

 

接続を選択するとRead-Only (User)、Select権限、Active状態が表示された。ここまで開発者が元のMySQLパスワードを入力する場面はなかった。

 

画面5. 開発者画面でDBと権限を確認し、Connectを押した。
画面5. 開発者画面でDBと権限を確認し、Connectを押した。

 

ConnectでWeb SQLエディターが開いた。orders_demoから配送待ちの注文を検索した。

 

12345
SELECT order_id, customer_id, order_date, status, total_amountFROM ordersWHERE status = 'PENDING'ORDER BY order_date, order_idLIMIT 20;

 

画面6. 配送待ちの5件。注文番号は1001、1003、1006、1009、1012。
画面6. 配送待ちの5件。注文番号は1001、1003、1006、1009、1012。

 

一覧が正常に返ることを確認し、状態別の件数も集計した。

 

1234
SELECT status, COUNT(*) AS order_countFROM ordersGROUP BY statusORDER BY status;

 

画面7. CANCELLED 2件、DELIVERED 3件、PENDING 5件、SHIPPED 2件。合計12件で投入したデータと一致する。
画面7. CANCELLED 2件、DELIVERED 3件、PENDING 5件、SHIPPED 2件。合計12件で投入したデータと一致する。

 

開発者側の操作はQueryPieにログインし、DBを選び、SQLを実行する程度だった。MySQLのアカウントとパスワードを別途受け取らずに参照できた。

 

もちろん参照だけで業務は完結しない。このアカウントでは結果のコピー・エクスポートやトランザクション関連の権限は未チェックだった。実運用では必要な機能を許可し、別途検証する必要がある。

 

 

5. DBeaverでも接続する

 

次はDBeaverで同じ注文を参照した。QueryPie Proxyを経由すれば、既存のDBクライアントでもSQLを実行できる。

 

使ったのはAgentless Proxy。エージェントを別途導入せず、DBクライアントからQueryPie Proxyへ接続する方式だ。

 

管理者画面でDB接続詳細のProxy Usageを有効にし、Use QueryPie registered accountを選んで保存した。この設定でQueryPieは登録済みDBアカウントを使ってMySQLへ接続する。

 

画面8. Proxy Usageを有効にし、登録済みDBアカウントの利用を設定。Query AuditもOnと表示されている。
画面8. Proxy Usageを有効にし、登録済みDBアカウントの利用を設定。Query AuditもOnと表示されている。

 

開発者画面のProxy Infoには40000番ポートが割り当てられていた。Create Tokenで接続用UsernameとPasswordを発行した。DBeaverには元のMySQLパスワードではなく、このトークンを入力する。

 

トークンは発行時にしか表示されないため安全に保管した。紛失した場合は既存トークンを破棄して再発行する。以下は値を含まない案内画面だ。

 

画面9. Proxy Infoで接続ポートとトークン発行メニューを確認できる。
画面9. Proxy Infoで接続ポートとトークン発行メニューを確認できる。

 

DBeaverを開いてMySQL接続を新規作成した。

 

  • Host: 127.0.0.1

  • Port: 40000

  • Database: orders_demo

  • Username / Password:開発者アカウントで発行したProxyトークン

 

127.0.0.1はQueryPieとDBeaverが同じMacで動くための指定だ。社内で複数人が接続する場合は各PCから到達できるQueryPie Proxyのアドレスを使い、ファイアウォールでポートが許可されているかも確認する。

 

Test ConnectionでMySQL 8.0.42への接続を確認した。続いてWebで使った配送待ち注文のクエリをそのまま貼り付けた。

 

画面10. DBeaverにもWebと同じ5件が表示された。
画面10. DBeaverにもWebと同じ5件が表示された。

 

WebとDBeaverのSQLは同じだった。DBeaverではアドレス、ポート、認証情報だけをQueryPie Proxyに合わせた。少なくとも今回のMySQL参照ではDBツールを変えずに使えた。

 

 

6. PCにMulti Agentを導入して接続する

 

接続情報を直接入力するほかに、PCにエージェントを導入する方法もある。今回はQueryPie Multi Agentを導入し、そのDB一覧からDBeaverを開いた。

 

右上のプロフィールからDownload & Support → Multi-Agentを選択した。Mac・Windows・Linux向けがあり、自分のMacに合うApple Silicon版を取得した。このサーバーが提供するエージェントはv9だった。

 

画面11. OSに合うインストーラーを取得し、下部のQueryPieアドレスもコピーした。
画面11. OSに合うインストーラーを取得し、下部のQueryPieアドレスもコピーした。

 

取得したdmgを開き、QueryPieMultiAgentをApplicationsへコピーして導入した。

 

画面12. Macのインストール画面。アプリをApplicationsへ入れて起動する。
画面12. Macのインストール画面。アプリをApplicationsへ入れて起動する。

 

エージェントに登録するのはDBではなくQueryPieのWebアドレスだ。今回はhttp://localhost:8000を登録した。既存ホストがある場合はSettings → Add New Hostから追加できる。複数のQueryPieサーバーを登録できるためMulti Agentという名前だ。

 

画面13. QueryPie Hostに実習サーバーのアドレスを入力した。
画面13. QueryPie Hostに実習サーバーのアドレスを入力した。

 

サーバーを選ぶとログイン画面が開いた。Webと同じ開発者アカウントdemo-devでログインした。

 

画面14. エージェントでも開発者自身のQueryPieアカウントでログインする。
画面14. エージェントでも開発者自身のQueryPieアカウントでログインする。

 

管理者が先に行う設定もある。エージェント用Proxyアドレスをサーバーに登録する必要がある。同じMacで動かす今回は公式初期設定ガイドに従って127.0.0.1を登録した。社内サーバーなら社員PCから到達できるIPやドメインを指定する。これは管理者の初期設定であり、開発者が個々のDBで行うものではない。

 

DatabasesのQueryPie Connectionsを展開するとOrders Demo MySQLが表示され、その下にorders-dbとRead-Only (User)があった。Webで付与した権限をエージェントでも確認できた。

 

画面15. 開発者に許可したDBと参照権限がエージェントの一覧に表示された。
画面15. 開発者に許可したDBと参照権限がエージェントの一覧に表示された。

 

orders-dbを右クリックしてOpen Connection With → DBeaverを選ぶと、DBeaverにOrders Demo MySQL接続が追加された。Webでトークンを発行し、接続情報を一つずつ入力する必要はなかった。

 

画面16. DB一覧から直接DBeaverを開ける。
画面16. DB一覧から直接DBeaverを開ける。

 

追加された接続を開き、新しいSQLエディターで同じ配送待ちクエリを実行した。今回も1001、1003、1006、1009、1012が返った。

 

画面17. Multi Agentが作成した接続での結果。先ほどの5件と一致する。
画面17. Multi Agentが作成した接続での結果。先ほどの5件と一致する。

 

違いは接続準備にあった。エージェントなしではトークンと接続情報を手入力した。Multi Agentではログイン後、DBを選んでDBeaverで開くだけだった。毎日多くのDBに接続するチームなら、両方試して比較する価値がありそうだ。

 

 

7. 社内利用に向けてさらに確認すること

 

実際に接続すると、導入時に誰と何を話すべきかが少し具体的になった。

 

まずDB登録と権限付与の担当を決める必要がある。今回は一人で役割を切り替えたが、社内では開発者の申請を誰が承認・付与するか決めておかなければならない。異動や退職時の取り消しも同じだ。

 

実際に使うツールでの検証も必要だ。今回はMySQLとDBeaverで簡単なSELECTを実行した。DataGripや別DBを使うならその組み合わせで試す必要がある。大量参照やトランザクションでも同じ結果になるかは未確認だ。

 

セキュリティ機能も設定画面だけでは判断できない。Read-Onlyが実際に変更を防ぐか、権限を取り消すと接続済みセッションはどうなるかを試したい。Query AuditはOnだったが、ユーザーとSQLがどう記録されるかは次回確認する。

 

 

8. DBへの直接接続経路も確認する

 

ここで第1回の「侵入後の制御」を思い出した。QueryPie経由では接続できたが、元DBへ直接入れる経路が残っていたらどうだろう。

 

今回の環境にもその経路が残っている。比較・点検用にMacの127.0.0.1:13306からMySQLへ直接接続できるようにした。DBeaverで使ったQueryPie Proxyは40000番だ。

 

社内導入ではここも整理したい。接続元を制限し、元のDBアカウントを誰が持つか確認する。接続一覧の認証情報を隠すだけでは、直接アクセスまで遮断されるわけではない。

 

DBパスワードや開発者PCが侵害されてもQueryPieの制御を通すには、このような接続経路まで管理する必要があると感じた。

 

 

次は変更クエリを試す

 

今回はDB登録、開発者ログイン、WebとDBeaverでの注文参照を行った。DBeaverでは手入力とMulti Agentの両方を試した。使い慣れたツールでSQLを実行しながら、QueryPieで付与された権限でDBを利用できた。

 

第4回では、読み取り専用で変更しようとしたときのメッセージ、権限取り消し後の接続、記録の場所を確認する。元DBもSELECT限定なので、どちらの層で遮断されるかも切り分ける予定だ。

 

参考ドキュメント: Database Proxyの有効化 · エージェントなしでのProxy接続 · Multi Agentユーザーガイド · インストール後の初期設定