ページの先頭行へ戻る
Enterprise Postgres 15 セキュリティ運用ガイド

B.3 機密グループ操作関数

関数名

戻り値

説明

pgx_create_confidential_group(confidential_matrix_name varchar, confidential_group_name varchar, options json, comment text)

void

機密グループを作成し、機密マトリクスに登録し、指定されたcommentやoptionsに指定された属性とともにpgx_confidential_groupテーブルに追加します。

指定された機密マトリクスの機密管理ロールだけが、この関数を実行できます。ただし、後に述べるように、一部の属性を設定するときにはスーパーユーザー権限が必要です。したがって、必然的に、それらの属性を設定するならば、機密管理ロールはスーパーユーザーでなければなりません。

この関数は、内部的にCREATE ROLE文を使って機密グループロールを作成します。

confidential_group_nameの長さは、64文字未満でなければなりません。単位がバイトではないことに注意してください。

confidential_group_name名に使える文字に制限はありません。

他の関数に機密グループの名前を指定するときには、この関数に指定した文字列と同じ文字列を指定しなければなりません。

多くのCREATE文とは違って、機密グループの名前は大文字と小文字を区別することに注意してください。

optionsには以下のように、機密グループの属性を指定します。もしNULLを指定したならば、各属性のデフォルト値が設定されます。

'{
  "SUPERUSER":false,
  "CREATEDB":true,
  "CREATEROLE":false,
  "REPLICATION":false,
  "BYPASSRLS":false
}'

指定できる属性は、データへのアクセス権限に関係している、SUPERUSER属性、CREATEDB属性、CREATEROLE属性、REPLICATION属性およびBYPASSRLS属性だけです。

これらの属性は、CREATE ROLE文に指定できるロールの属性の一部です。属性の意味とデフォルト値は、CREATE ROLE文の仕様と同じです。

CREATE ROLE文の説明で述べられているように、スーパーユーザー以外が、SUPERUSER属性、REPLICATION属性、および、BYPASSRLS属性にtrue指定すると、この関数は失敗します。

pgx_alter_confidential_group(confidential_matrix_name varchar, confidential_group_name varchar, alter_object json);

void

機密グループの属性を変更します。

指定された機密マトリクスの機密管理ロールだけが、この関数を実行できます。pgx_create_confidential_group()で説明したように、一部の属性を設定するときにはスーパーユーザーでなければなりません。

この関数は、内部的にALTER ROLE文を使って機密グループロールの属性を変更します。

alter_objectには以下のように、変更したい属性と変更後の値をkey-value形式で指定します。

'{
  "name":"group_new",
  "comment":"Members of this group have the highest confidential clearance.",
  "CREATEDB":false
}'

name: 変更後の機密グループの名前を指定します。nullを指定できません。

comment: 変更後のコメントを指定してください。nullを指定できます。

その他の属性は、pgx_create_confidential_group()のoptionsと同じです。指定されなかった属性は変更されません。

例えば、CREATEDBをfalseへと変更するように、より弱い属性へと変更した場合には、機密グループに登録されたロールの属性も同じように弱めます。

pgx_drop_confidential_group(confidential_matrix_name varchar, confidential_group_name varchar, cascade bool, drop_role bool)

void

機密マトリクスから機密グループを除去し、機密グループを削除します。

指定された機密マトリクスの機密管理ロールだけが、この関数を実行できます。

cascadeにtrueを指定すると、この機密グループにロールが登録されていても機密グループを削除することができます。

cascadeにfalseを指定すると、ロールが登録されているような機密グループを削除できません。

drop_roleにtrueを指定すると、機密グループロールを削除します。機密グループに登録されたロールは、そのまま残ります。drop_roleにfalseを指定すると、機密グループロールを削除しません。

機密グループロールを残すときには、機密グループロールから権限を剥奪します。剥奪する権限は、機密権限に定義された権限です。