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

B.1 マトリクス操作関数

関数名

戻り値

説明

pgx_create_confidential_matrix(confidential_matrix_name varchar, comment text)

void

指定された名前の機密マトリクスを作成します。

作成された機密マトリクスは、commentとともにpgx_confidential_matrixテーブルに登録されます。

機密管理ロールに要求される資格を持つロールだけが、この関数を実行できます。この関数を実行したロールが、機密マトリクスの機密管理ロールです。機密マトリクス名を指定して実行するような関数は、実行したロールが、指定された機密マトリクスの機密管理ロールであることを要求します。詳細は、“7.2.2 機密管理ロールを決める”を参照してください。

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

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

他の関数に機密マトリクスの名前を指定するときには、この関数に指定した文字列と同じ文字列を指定しなければなりません。

多くのCREATE文とは違って、機密マトリクスの名前は大文字と小文字を区別することに注意してください。

pgx_copy_confidential_matrix(confidential_matrix_name varchar, source_confidential_matrix_name varchar)

void

source_confidential_matrix_nameで指定された複製元の機密マトリクスを、confidential_matrix_nameと名付けられた機密マトリクスに複製します。機密マトリクス、機密レベル、機密グループ、および、機密権限の詳細が複製されます。しかし、機密レベルに登録されている機密オブジェクト、機密グループに登録されているロールの情報は複製されません。

いずれかの機密マトリクスの機密管理ロールであれば、この関数を実行できます。

複製された機密マトリクスの所有者は、この関数を実行したロールです。

confidential_matrix_nameの文字列としての制限は、pgx_create_confidential_matrix関数と同じです。

コメントも複製されます。

pgx_alter_confidential_matrix(confidential_matrix_name varchar, alter_object json)

void

confidential_matrix_nameで指定された名前の機密マトリクスの属性を変更します。

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

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

'{
  "name":"matrix_foo",
  "comment":"This matrix is defined for foo.")
}'

name: 変更後の機密マトリクスの名前を指定してください。nullを指定できません。すでに存在する機密マトリクスの名前を指定すると関数は失敗します。

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

pgx_drop_confidential_matrix(confidential_matrix_name varchar, cascade bool, drop_role bool)

void

指定された名前の機密マトリクスを削除します。

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

cascadeにtrueを指定すると、この機密マトリクスに依存したオブジェクトを再帰的チェックして削除します。例えば、この機密マトリクスに登録されている機密グループと機密レベルを削除します。そして、その機密レベルに関連する機密権限を削除します。機密レベルを削除するときは、cascadeの値を指定してpgx_drop_confidential_level()を実行します。機密グループを削除するときは、cascadeとdrop_roleの値を指定してpgx_drop_confidential_group()を実行します。これらの関数の説明も参照してください。特に、機密オブジェクトの権限がどのように変更されるのかは重要です。

cascadeにfalseを指定すると、単に機密マトリクスだけを削除します。もし、この機密マトリクスに依存するオブジェクトが存在するならば、関数は失敗します。

drop_roleにtrueを指定すると、この機密マトリクスに登録された機密グループロールを削除します。当然ですが、cascadeがtrueのときにだけ意味があります。