このトピックでは、AnalyticDB for PostgreSQLでデータベースアカウントのアクセス許可を管理する方法について説明します。
前提条件
データベースアカウントが作成されます。 詳細については、「データベースアカウントの作成」をご参照ください。
権限管理
データベースアカウントを作成した後、次の操作を実行できます。
ALTER ROLEステートメントを実行して、データベースロールを変更します。
GRANTステートメントを実行してユーザーアクセス権限を付与するか、REVOKEステートメントを実行してユーザーアクセス権限を取り消します。
GRANTステートメントを実行して、データベースオブジェクトに対する権限を付与します。
データベースロールの変更
データベースロールを変更します。 サンプル文:
ALTER ROLE jsmith WITH PASSWORD 'passwd123'; ALTER ROLE admin VALID UNTIL 'infinity'; ALTER ROLE jsmith LOGIN; ALTER ROLE jsmith RESOURCE QUEUE adhoc; ALTER ROLE jsmith DENY DAY 'Sunday';
データベースロールのsearch_pathなどのサーバー設定を構成します。
ALTER ROLE admin SET search_path TO myschema, public;
ユーザー権限の付与
CREATE ROLEステートメントを実行して、LOGIN権限を持たないロールを作成すると、そのロールはグループと見なされます。 グループを使用して、ユーザーのグループの権限を管理できます。 CREATEROLEおよびCREATEDB権限を持つadminという名前のグループを作成します。 例:
CREATE ROLE admin CREATEROLE CREATEDB;
ユーザーjohnとsallyをグループに追加します。 例:
GRANT admin TO john, sally;
グループからボブを削除します。 例:
REVOKE admin FROM bob;
グループにデータベースオブジェクトの権限を付与します。 グループ内のすべてのユーザーが権限を継承できます。
GRANT ALL ON TABLE mytable TO admin; GRANT ALL ON SCHEMA myschema TO admin; GRANT ALL ON DATABASE mydb TO admin;
データベースオブジェクトに対する権限の付与
データベース、スキーマ、テーブル、ビュー、シーケンス、関数などのデータベースオブジェクトが作成されると、オブジェクトのすべての権限はオブジェクトの所有者に属します。 既定では、オブジェクトの所有者とRDS_SUPERUSERユーザーのみが、オブジェクトに対する操作を実行する権限を持っています。 他のユーザーがオブジェクトに対して操作を実行する場合は、必要な権限が必要です。 次の表に、さまざまなデータベースオブジェクトに対する権限を示します。
データベースオブジェクト | 権限 |
テーブル、ビュー、およびシーケンス | SELECT INSERT UPDATE DELETE RULE ALL |
外部テーブル | ルールをすべて選択 |
データベース | CONNECT CREATE TEMPORARY | TEMP ALL |
関数 | EXECUTE |
手続き言語 | 使用法 |
スキーマ | すべての使用を作成する |
各タイプのオブジェクトに個別に権限を付与する必要があります。 たとえば、データベースに対してgrant ALL権限を付与すると、データベース内のテーブルにアクセスできなくなります。 CONNECT、CREATE、およびTEMP権限があるのは、データベースのみです。
mytableのINSERT権限をjsmithに付与します。 例:
GRANT INSERT ON mytable TO jsmith;
table2のcol1列に対するSELECT権限をjsmithに付与します。 例:
GRANT SELECT (col1) on TABLE table2 TO jsmith;
jsmithからmytableのすべての権限を取り消します。 例:
REVOKE ALL PRIVILEGES ON mytable FROM jsmith;
テーブルの所有者またはRDS_SUPERUSERユーザーの場合は、テーブルの所有者を変更したり、所有者からテーブルに対する権限を削除したりできます。
サリーがボブに所有する
REASSIGN OWNED BY sally TO bob;
DROP OWNED BY visitor;