「誰が何をしていいの?」を管理する名簿――PostgreSQLの『pg_roles』ってなんだろう?
こんにちは!データベースの世界へようこそ。
PostgreSQLを触り始めると、必ずと言っていいほど「ユーザー」や「権限」という壁にぶつかりますよね。「このデータは誰が見られるの?」「誰がデータを消せるの?」といったルールを決めるのは、データベース運用の基本中の基本です。
今日は、そんな複雑になりがちな「誰が、何ができるのか」を一目で教えてくれる、PostgreSQLの頼れる相棒『pg_roles』についてお話しします。
—
「pg_roles」をオフィスに例えてみよう
データベースの中に、ある一つの大きな「オフィス」があると想像してみてください。
オフィスには社長(スーパーユーザー)もいれば、特定のプロジェクトだけを担当するチームリーダー、そしてデータを見る専門の新人スタッフなど、いろんな役割の人が働いていますよね。
もし、オフィスの人数が増えてくると、こんな問題が起きませんか?
- 「あれ、今のメンバーって誰だっけ?」
- 「この人は入社したけど、何ができる人だっけ?」
- 「退職した人のアクセス権、ちゃんと消したかな?」
この「今のメンバーリスト」と「それぞれの役割」を完璧に記録してくれているのが、『pg_roles』というシステムビューなんです。
いわば、データベース界の「社員名簿」ですね。
—
なぜ「pg_roles」を覗く必要があるの?
普段、アプリを作っているだけだと、あまり意識しないかもしれません。でも、いざ運用が始まると「pg_roles」はめちゃくちゃ役に立ちます。
例えば、こんな時に便利です。
- セキュリティチェック: 「あれ、このユーザーっていつの間に管理者権限(スーパーユーザー)持ってたの!?」と気づくことができます。
- 棚卸し: 昔作ったテスト用のユーザーが残っていないか確認して、不要な入り口を塞ぐ(セキュリティを高める)ことができます。
- 権限の確認: 「この人はログインできる設定になっているかな?」といった素朴な疑問も、この名簿を見れば一発で解決です。
—
さっそく名簿を覗いてみよう!
難しいコマンドを覚える必要はありません。まずは、シンプルにこう入力してみてください。
SELECT rolname, rolsuper, rolcanlogin
FROM pg_roles;
これだけで、今のデータベースにいる「ユーザー(ロール)の一覧」と、「管理者かどうか(rolsuper)」、「ログインできるか(rolcanlogin)」という大事な情報がズラッと出てきます。
これを見るだけで、「ああ、この人は管理者なんだな」「お、この人はログイン不可の設定になっているんだな」と、データベースの人間関係が手に取るようにわかってきますよ。
—
初学者のあなたへ:怖がらなくて大丈夫
最初は「システムビュー」なんて聞くと、「何か壊しそうで怖い……」と感じるかもしれません。でも安心してください。
この `pg_roles` は、あくまで「名簿」です。名簿を見るだけで、データベースの中身が壊れることは絶対にありません。図書館の貸出カードを眺めるのと同じようなものだと思って、気軽に覗いてみてください。
「誰がこのオフィスに出入りしているのか」を知ることは、データベースを安全に管理するための第一歩です。
ぜひ、あなたの手元のPostgreSQLでも `SELECT FROM pg_roles;` を試してみてくださいね。どんなメンバーが登録されているか、確認してみると面白い発見があるはずですよ!
それでは、また次回の記事でお会いしましょう!Happy Querying!
コメント