機密レベルの設計にしたがって、対象としているデータベースオブジェクトを適切な機密レベルに分類してください。以下の例では、schema1のtable1とschema1のtable2を同時にlevel1に追加しています。JSON形式の第3引数に、機密オブジェクトの型と機密オブジェクトの名前を指定します。機密オブジェクトの型ごとに登録したい複数のオブジェクトを列挙できます。この例では、table型だけを登録していますが、同時にschema型なども登録することができます。
select pgx_add_object_to_confidential_level ('matrix_foo', 'level1',
'[{
"type":"table",
"object":[
{
"schema":"schema1",
"table":["table1","table2"]
}
]
}]')rowsetを指定するときは、どのような行の集合であるかをrowset_expressionキーの値において宣言しなければなりません。指定方法の詳細は、“B.5 機密オブジェクト操作関数”を参照してください。
この関数を実行すると、機密管理支援機能が内部的にGRANT文またはCREATE POLICY文を使って、指定された機密オブジェクトへの権限を、機密マトリクスに設定されているすべての機密グループに付与します。GRANT文が作用した結果は、以下のように確認することができます。この例では、schema1のtable1とschema1のtable2に付与された権限を確認しています。
select pgx_get_privileges_on_object('matrix_foo',
'[{
"type":"table",
"object":[
"schema":"schema1",
"table":["table1","table2"]
]
}]')