機能フィールドの ACL 制御

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:3分
  • 機能フィールドへのアクセスを評価する場合、機能フィールド自体へのアクセスがチェックされるだけでなく、機能の貢献フィールドへのアクセスもチェックされます。貢献フィールドは、指定された機能の定義の引数として使用されるフィールドです。

    機能フィールドの詳細については、「機能フィールド」を参照してください。

    Rome 以前では、(他のフィールドと同様に) 機能フィールド自体へのアクセスをチェックします。そのフィールドの ACL でアクセスが許可されている場合、ユーザーが貢献フィールドへのアクセス権を持っているかどうかにかかわらず、ユーザーは結果の値を受け取ります。

    Zurich 以降では、機能フィールドへのアクセスを許可するには、すべての貢献フィールドへのアクセスも必要です。1 つ以上の貢献フィールド ACL でアクセスが拒否される場合、機能フィールドでもアクセスが拒否されます。

    新しい要件の影響を受ける操作は、読み取りと report_view のみです。report_view には独自の追加要件があります。

    操作 説明
    読み取り操作 ユーザーは、次の両方の条件に当てはまる場合にのみ、機能フィールドの読み取りアクセス権があります。
    • ユーザーは機能フィールドの読み取りアクセス権を持っている。
    • ユーザーは、機能で使用されるすべての貢献フィールドの読み取りアクセス権を持っている。
    report_view 操作 ユーザーは、次のすべての条件に当てはまる場合にのみ、機能フィールドの report_view アクセス権があります。
    • ユーザーは機能フィールドの report_view アクセス権を持っている。
    • ユーザーは、各貢献フィールドの report_view アクセス権を持っている。
    • 条件とスクリプトのないロールのみの読み取り ACL があり、ユーザーはそのロールを持っている。
    • ユーザーは、条件またはスクリプトのない ACL のみが許可されるように、貢献フィールドの読み取り専用アクセス権を持っている。

    前提:
    • テーブル:給与
    • 列:基本、ボーナス、合計 (この例ではすべて整数)
    • 機能フィールド:合計列は機能フィールドとしてマークされ、機能の定義は glidefunction:add (基本、ボーナス) です。
    • 貢献フィールド:機能の定義で使用されるため、基本とボーナス
    • ロール:salary_admin、bonus_admin
    表 : 1. 例 1:すべてのフィールドでアクセスが可能
    ACL 結果
    合計、基本、ボーナス:salary_admin ロールの場合、読み取りおよび report_view (条件またはスクリプトなし) 必要なロールを持っているため、salary_admin ロールを持つユーザーには、合計の読み取りと report_view アクセス権が付与されます。
    表 : 2. 例 2:貢献フィールドで読み取りアクセスが拒否される
    ACL 結果
    • 合計、基本:salary_admin ロールの場合、読み取りおよび report_view (条件またはスクリプトなし)
    • ボーナス:salary_admin ロールの場合、report_view (条件またはスクリプトなし)
    • ボーナス:bonus_admin ロールの場合、読み取り (条件またはスクリプトなし)
    salary_admin ロールではボーナスの読み取りアクセスが拒否されるため、salary_admin ロールを持つユーザーは、合計の読み取りと report_view アクセスは拒否されます。
    表 : 3. 例 3:貢献フィールド ACL にスクリプトがある
    ACL 結果
    • 合計、基本:salary_admin ロールの場合、読み取りおよび report_view (条件またはスクリプトなし)
    • ボーナス:bonus_admin ロールの場合、report_view (条件またはスクリプトなし)
    • ボーナス:salary_admin ロールの場合、読み取り、スクリプトあり (内容にかかわらず、スクリプトがあることのみが重要)
    すべてのフィールドに対する必要なロールを持っているため、salary_admin ロールを持つユーザーには、合計の読み取りアクセス権が付与されます。

    ただし、必要なロールを持っている場合でも、スクリプトのある ACL はデフォルトで読み取りアクセスを拒否するため、salary_admin ロールを持つ同じユーザーは report_view アクセスを拒否されます。