ServiceNow CAD 無料問題 3 / 10 ・ 分野3: Security and Restricting Access
あるインシデント管理アプリで、read操作のACLルールが「特定ロール保持」「割り当てグループのメンバーであること」「dot-walkで部門を判定するスクリプト」の3要素を全て使っている。パフォーマンスを意識したチューニング担当者が、1つのACLルール内でこれらが評価される順序を確認したい。単一のACLルール内での評価順序として正しいものはどれか。
- テーブルレベルACL → フィールドレベルACLの順であり、1ルール内に評価順序という概念は存在しない
- 条件(Condition) → Requiresロール → スクリプト(Script)の順に評価される
- スクリプト(Script) → 条件(Condition) → Requiresロールの順に評価される
- Requiresロール → 条件(Condition) → スクリプト(Script)の順に評価される
正解と解説を見る
正解: D
正解の理由
1つのACLの中では、必要ロール → 条件(Condition) → スクリプト(Script)の順に評価される。
ロールの判定はキャッシュが効くので最も軽く、条件はレコードの値を読み、スクリプトは実際にコードを走らせるので最も重い。軽いものから落とす設計になっている。
違う選択肢
「条件 → ロール → スクリプトの順」… ロールより条件が先に来ることはない。重い処理を先にやる形になってしまう。
「スクリプト → 条件 → ロールの順」… 最も重いスクリプトを先頭で走らせる順序にはならない。
「1ルール内に評価順序という概念は無い」… テーブルレベルとフィールドレベルの二段構えは確かに存在するが、それとは別に1つのルールの中にも評価順がある。「1ルール内に順序が無い」というのが誤り。
補足
3つはANDで結合される。どれか1つでも偽ならそのルールは通らない。ただし必要ロールの一覧が空なら、ロールの条件は true として扱われる。