web-dev-qa-db-ja.com

グループの役割とログインの役割の違いは何ですか?

ログインロールに特権を直接割り当てることができないため、シングルユーザーの場合は、ログインロールを作成する必要があり、それぞれのグループロールよりも作成する必要があります。本当ですか?そのような分離の目的は何ですか?

また、私が理解しているように、認証はlogin roleでのみ可能です。 グループロールのパスワードフィールドの目的は何ですか?または、グループの役割として認証することは可能ですか?では、なぜ誰もがログインロールを必要とするのでしょうか。

また、pg_hbaでログインロールとグループロールの両方を設定できるようです。

8
Vlad

これらすべての質問は基本的に ドキュメント で回答されています。具体的には:

ロールは、データベースオブジェクトを所有し、データベース権限を持つエンティティです。役割は、その使用方法に応じて、「ユーザー」、「グループ」、またはその両方と見なすことができます。

これは、LOGINオプションを除いて、内部的にこれらの間に違いがないことを意味します。 LOGINを指定する場合(またはCREATE USERを使用):

CREATE ROLE dezso WITH LOGIN PASSWORD 'bla';

dezsoはログインロールになります。ログイン以外のロールのパスワードも指定できます。後でログインロールにする場合は、

CREATE ROLE non_login_role PASSWORD 'bla';

--later
ALTER ROLE non_login_role WITH LOGIN;

「ログインロールでの認証のみが可能です」と言ったのはあなたの言うとおりです。ただし、 passwordまたはmd5 認証方法以外を使用する場合、パスワードは必ずしも必要ではないことに注意してください。一方、これは、LOGINオプションが設定されていないロールは、いかなる方法でもログインできないことを意味します。

最後に、非ログインロールのルールをpg_hba.confに設定できますが、これは認証にのみ使用されるため、これらのロールは効果がありません(後で上記のようにログインを有効にしない限り)。

7
dezso