「データ権限」グループは GrantForge 以外のデータシステムの権限を管理します。アーキテクチャは Apache Ranger に似ており、プラグインがサービスタイプを定義し、管理者がコンソールでポリシーを作成し、アクセス経路上のエージェントがポリシーをダウンロードしてローカルでアクセスを判定します。
flowchart LR C["コンソール:データサービスとポリシー"] --> S["GrantForge サーバー"] S -->|署名付きポリシースナップショット| A["ポリシー適用エージェント"] A -->|ハートビートとアクセス監査| S U["ユーザーのデータアクセス"] --> A
プラグイン
プラットフォーム管理 → プラグイン には、読み込まれたサービスタイプのプラグインが列挙されます。組み込みのプラグインはサーバーに同梱され、それ以外のプラグインは plugins ディレクトリに入れて「再スキャン」を押すだけです。各プラグインは独立して読み込まれるため、エラーが発生してもそのプラグインだけが無効化されます。プラグインの開発については プラグインとサービスタイプ を参照してください。

HDFS
配布パッケージには HDFS サービスタイプのプラグインが含まれます。インストール、接続設定、ディレクトリーの参照、パスポリシーは Apache Hadoop HDFS を参照してください。
MySQL
MySQL サービスプラグインは接続検証、データベース・テーブル・列の検索、およびアクセス、列マスキング、行フィルタリングのポリシー管理を担当します。MySQL を参照してください。別途配置する MySQL プロキシエージェント がポリシーを適用します。クライアントはプロキシの待受アドレスに接続し、プロキシがバックエンドの MySQL にアクセスします。MySQL サーバープロセス内にはインストールしません。バックエンドへの直接接続は GrantForge ポリシーを迂回します。
データサービス
データ権限 → データサービス:サービスは GrantForge が権限を管理する外部システムのインスタンス 1 つであり、たとえば HDFS クラスター 1 つです。サービスを追加するときにサービスタイプを選択し、プラグインが定義した設定項目に従って接続情報を入力します。先に 接続テスト を実行できます。パスワードなどの機密性の高い設定は暗号化して保存され、保存後は表示されません。

ポリシー
データ権限 → ポリシー は、誰がデータサービス内のどのリソースに対して何ができるかを決定します。
- アクセスポリシーはアクセスを許可または拒否します。
- マスキングポリシーはフィールドを覆い隠します。
- 行フィルタポリシーは一部の行だけを出します。
リソースの階層(MySQL のデータベース、テーブル、列など)、アクセスタイプ(select、update など)、条件は、すべてサービスタイプのプラグインから提供されます。リソースを入力するときは、対象システムに実際に存在するリソースを検索できます。ポリシーの対象はユーザー、ユーザーグループ、またはロールです。
参照できるレベル(HDFS のパスなど)には 参照 ボタンがあります。ディレクトリを階層ごとに開き、所有者・グループ・権限を確認しながら、複数のファイルやディレクトリをまとめて選べます。検索や参照に失敗すると理由(権限なし、接続できない、ディレクトリが大きすぎるなど)が表示され、再試行できます。

エージェント
データ権限 → エージェント:エージェントは対象システム内、または独立したネットワークプロキシとして配置され、トークンで定期的にハートビートを報告し、署名されたポリシーのスナップショットをダウンロードしてローカルでアクセスを判定します。ここではエージェントトークンを発行し(一度だけ表示されます)、各エージェントが最新のポリシーを使えているかを確認します。

アクセス監査
データ権限 → アクセス監査:エージェントが報告するアクセスの判定 1 件ごとに、誰がいつどこからどのリソースに対して何をしたか、許可されたか拒否されたか、どのポリシーが決定したかが記録されます。記録はデフォルトで 90 日間保持されます。

