機密管理ロールは、機密マトリクスに対するすべての操作を行います。そのため、機密管理ロールは、以下のいずれかの非常に強い権限を要求します。
以下のすべての権限を持つ
スーパーユーザー権限
機密レベルに属するデータベースオブジェクトの所有権
以下のすべての権限を持つ
CREATEROLE権限
拡張に含まれるすべてのテーブルへのSELECT権限、INSERT権限、UPDATE権限、および、DELETE権限
CREATE EXTENSIONを実行すると、publicにSELECT権限が付与されています。
機密レベルに属するデータベースオブジェクトの所有権
注意
機密管理ロールが所有者になると、前の所有者はGRANT文などを実行できなくなる可能性があることに注意してください。なぜならば、データベースオブジェクトの所有権は、異なるロールグループに属する複数のロールで共有することができないからです。これはPostgreSQLの仕様です。
機密管理ロールは複数の機密マトリクスを作成し管理することができますが、権限を分散した方が安全です。そのために、以下の優先順位で機密管理ルールを決めることをお勧めします。
機密マトリクスと機密管理ロールを1対1で作成する。
複数の機密管理ロールをメンバーに持つロールグループを作成する、あるいは複数の機密マトリクスをひとつの機密管理ロールが管理する。
スーパーユーザーが機密管理ロールを兼ねる。
注意
機密管理支援機能を使って管理するロールに、スーパーユーザーだけが付与できる属性を与える場合には、スーパーユーザーが機密管理ロールを兼ねる必要があります。例えば、REPLICATION属性が、そのような属性に該当します。詳細は、PostgreSQL Documentationのリファレンスを参照してください。
Fujitsu Enterprise Postgres 16ではCREATEROLE権限が変更されました。そのため、スーパーユーザー以外を機密管理ロールとして利用する場合には、機密グループの作成や更新で設定する権限(CREATEDB、BYPASSRLSなど)を、事前に機密管理ロールに対して付加しておく必要があります。これらの権限が設定されていない場合は機密グループの操作に失敗する場合があります。CREATEROLE権限の変更については、“PostgreSQL Documentation”の“Migration to Version 16”を参照してください。