グラフへのアクセスの制限は、グラフを構成するデータベースオブジェクトに対するアクセス制御により実現します。アクセス制限の設定は、Fujitsu Enterprise Postgresの機密管理支援機能を使用して行います。グラフは、スキーマオブジェクトと1対1に対応するため、以下のように機密管理支援機能を使用してそのスキーマに対するアクセス権を指定することで、グラフへのアクセスを許可、または拒否できます。
“セキュリティ運用ガイド”の“機密管理支援機能”を参照して、機密管理ロール、機密マトリクス、機密レベル、機密グループを定義します。
スキーマに対する機密権限を機密グループに付与します。
SELECT pgx_grant_confidential_privilege('rag_matrix', 'level1', 'group1', '{"schema":["USAGE"]}');
グラフに対応するスキーマを機密オブジェクトとして機密レベルに追加します。
SELECT pgx_add_object_to_confidential_level ('rag_matrix', 'level1', '[{ "type":"schema", "object":[ { "schema":"new_graph" } ] }]');
作成した機密グループにロールを追加して、グラフへのアクセス権を設定します。
SELECT pgx_add_role_to_confidential_group('rag_matrix', 'group1', '["rag_user"]');
グラフの検索のみ許可し、更新できないようにするなどの細かなアクセス権を設定したい場合は、SQL文を利用し、グラフを構成するテーブルなどのデータベースオブジェクトに対するアクセス権を直接設定します。
グラフのアクセスに必要な権限は以下のとおりです。
グラフを作成するために必要な権限
データベースに対するCREATE権限
ノードとエッジを新規作成、削除するために必要な権限
グラフ名と同名のスキーマに対するCREATE権限、USAGE権限
ノードを追加する場合、グラフ名と同名のスキーマ配下の_ag_label_vertex テーブルの所有権
エッジを追加する場合、グラフ名と同名のスキーマ配下の_ag_label_edge テーブルの所有権
グラフ名と同名のスキーマ配下の_label_id_seqのUPDATE権限
既存のラベルを使用したノードとエッジを作成、削除するために必要な権限
グラフ名と同名のスキーマに対するUSAGE権限
ノードを追加する場合、グラフ名と同名のスキーマ配下の権限
_ag_label_vertexテーブル、もしくは追加するラベル名と同名のテーブルに対するINSERT権限(作成)、SELECT権限とUPDATE権限(削除)
_ag_label_vertex_id_seqシーケンス、もしくは追加するラベル名と同名のシーケンスに対するUSAGE権限
エッジを追加する場合の権限
グラフ名と同名のスキーマ配下の_ag_label_edgeテーブルもしくは追加するラベル名と同名のテーブルに対するINSERT権限(作成)、SELECT権限とUPDATE権限(削除)
_ag_label_edge_id_seqシーケンス、もしくは追加するラベル名と同名のシーケンスに対するUSAGE権限
グラフを検索するために必要な権限
ag_catalogスキーマに対するUSAGE権限
グラフ名と同名のスキーマに対するUSAGE権限
グラフ名と同名のスキーマ内のテーブルオブジェクトに対するSELECT権限
参考
グラフデータ構造には行や列の概念がないため、PostgreSQLの行レベルセキュリティ機能や列単位のアクセス制御機能は適用できません。