web-dev-qa-db-ja.com

postgresRDSサーバーでのrds_superuserロール

(ダッシュボードを介して)awsに新しいpostgres RDS instaceを作成し、デフォルトのユーザーを指定して、彼を「ジャック」と呼びましょう。

インスタンスにログインすると、作成したユーザー「jack」が表示され、そのユーザーには「rds_superuser」という役割が付加されていました。 (したがって、通常のpostgresサーバーでスーパーユーザーを使用して行っていたのと同じことができると思いました)。

documentation を確認しましたが、それは不可能でした。

デフォルトユーザー「stan」としてログインしたので、「stan」のような新しいデータベースユーザーを作成し、所有者がユーザー「stan」である新しいデータベースを作成したかったのですが、できませんでしたか?

私はこのようなものを入力しました:

CREATE DATABASE foobar WITH OWNER = stan;

しかし、次のようなエラーが発生しました。

エラー:ロール「stan」のメンバーである必要があります

そこで、私が行ったことは、ロールを「stan」にし、デフォルトユーザー「jack」としてログアウトし、「stan」としてRDSインスタンスにログインし、彼を所有者としてそのデータベースを作成することでした。

3人の異なるユーザーがいたので、その最後のステップを3回繰り返さなければなりませんでした。

私の質問は、RDS postgresの作成中に作成したデフォルトのユーザーを「ジャック」にして、新しいデータベース(通常のpostgresサーバーインストールのスーパーユーザーなど)を作成し、次のようなさまざまな所有者に提供できるようにする方法はありますか?

CREATE DATABASE foobar WITH OWNER = stan;

Tnx、トム

3

そのためには、stanrds_superuserに付与することになっています。あなたがした:

rds=> create user stan;
CREATE ROLE
rds=> CREATE DATABASE foobar WITH OWNER = stan;
ERROR:  must be member of role "stan"

あなたがすべき:

rds=> grant stan to su_rdsadm;
GRANT ROLE
rds=> CREATE DATABASE foobar WITH OWNER = stan;
CREATE DATABASE

私はrdsスーパーユーザーとしてそれをしました:

rds=> \du+ su_rdsadm
                                  List of roles
  Role name  |          Attributes           |      Member of       | Description
-------------+-------------------------------+----------------------+-------------
 su_rdsadm | Create role, Create DB       +| {rds_superuser,stan} |
             | Password valid until infinity |                      |

rds=> select current_user;
 current_user
--------------
 su_rdsadm
(1 row)

これをさらに知るのは良いことです。所有権/付与などに対するrds_superuserのこの制限は、操作するオブジェクトの(または付与する代わりに)ロールをrdsスーパーユーザーに付与するまで影響を与え続けます。

1
Vao Tsun