手を動かすPostgreSQL(6)-ユーザーとロール-
前回のあらすじ
前回はpostgresql.confの設定値(GUCパラメータ)の閲覧の方法について説明しました。
今回は設定の方法について説明しようと思ったのですが、スーパーユーザが項目にあるのを思い出したので、先にユーザとかロールとかの説明をしておこうと思います。
PostgreSQLのユーザとロール
そもそも、データベースのユーザとロールというのはPostgreSQLにおいては本質的に同じものです。
ossdb=# \du
でユーザ一覧を確認してみましょう。
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
Watary | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
postgres | | {}
このように、ユーザというのは本質的にAttributes(属性)の集合であることがわかります。では、ユーザとロールは何が違うのでしょうか。
ここに2つのユーザとロールを追加します。
ossdb=# CREATE USER user1;
CREATE ROLE
ossdb=# CREATE ROLE role1;
CREATE ROLE
両方ともCREATE ROLEとなっているのは置いておいて、とりあえずもう一度ユーザ一覧を確認してみます。
ossdb=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
Watary | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
postgres | | {}
role1 | Cannot login | {}
user1 | | {}
こんな感じで2つとも表示されていますが、role1の方には「Cannot Login」と書かれているのが分かります。
では、このrole1に「Login」属性を付与してみましょう。こういった属性の付与はGRANTコマンドではなくALTER ROLEコマンドで行います。
ossdb=# ALTER ROLE role1 LOGIN;
ALTER ROLE
ossdb=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
Watary | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
postgres | | {}
role1 | | {}
user1 | | {}
user1と同様の表示になりました。
逆に、今度はuser1からLOGIN属性を奪ってみましょう。上と同様に、REVOKEコマンドではなくNOLOGIN属性を付与するという扱いになります。
ossdb=# ALTER ROLE user1 NOLOGIN;
ALTER ROLE
ossdb=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
Watary | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
postgres | | {}
role1 | | {}
user1 | Cannot login | {}
最初のrole1と同じ状態になりました。ここから分かるように、ユーザには「Login」属性が最初からついており、ロールにはついていない、というだけの話です。
ということで、role1にスーパーユーザ権限を付与することでスーパーユーザとして運用できるようにしておきましょう。ついでにuser1もLOGINを付け直しておきます。
ossdb=# ALTER ROLE role1 SUPERUSER;
ALTER ROLE
ossdb=# ALTER ROLE user1 LOGIN;
ALTER ROLE
他にも属性は色々とありますが、スーパーユーザはこの辺の属性全てを持つ最強のロールです。故になんでも出来すぎてしまうので、通常の運用では所属させるユーザをある程度考える必要があります。
とりあえずこれでパラメータ変更の準備は整いました。
次回こそGUCパラメータを変更していきたいと思います。
宣伝
OSS-DB Goldの認定教材をリリースしました。
2023年2月時点で唯一のVer.3.0対応の教材です。
受験を検討されている方はぜひご検討の程をお願い致します。
次回の記事はこちら
この記事が気に入ったらサポートをしてみませんか?