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

B.6 ロール操作関数

関数名

戻り値

説明

pgx_add_role_to_confidential_group(confidential_matrix_name varchar, confidential_group_name varchar, role_name json)

void

機密グループにロールを追加します。

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

confidential_group_nameで指定された機密グループに、role_nameで指定されたロールを追加します。

追加されるロールに、機密権限よりも広い権限を付与されていたならば、機密権限に合わせて権限を剥奪します。

PUBLICへ権限を付与した機密オブジェクトをターゲットにするときには、注意が必要です。なぜならば、PUBLICへ権限を付与することは、機密マトリクスに登録されたすべてのロールへ権限を与えていることと同じだからです。もし、各ロールにPUBLICを利用して間接的に付与された権限が、そのロールに与えられるべきではないことが機密権限で定義されているならば、この関数は失敗します。同様に、機密マトリクスに登録されていないグループロールを利用して間接的に付与された権限も、この関数は検査します。このとき、継承のチェインを先祖まで検査します。

また、追加されるロールに、機密グループよりも強い属性が付与されていたならば、機密グループに合わせて属性を変更します。

機密マトリクスに登録されていないグループロールを利用して間接的に強い属性が付与されていたならば、この関数は失敗します。

role_nameは以下のように指定します。

'{["role1","role"]}'

pgx_remove_role_from_confidential_group(confidential_matrix_name varchar, confidential_group_name varchar, role_name json)

void

機密グループからロールを除去します。

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

confidential_group_nameで指定された機密グループから、role_nameで指定されたロールを除去します。

この関数は、内部的にREVOKE文を実行して、ロールを機密グループロールから除去します。

除去されるロールの属性や、そのロールに付与されている権限などは変更しません。

権限を継承できないように、単にグループから追放するだけです。

role_nameの指定方法は、pgx_add_role_to_confidential_group()と同じです。