同じ方針を書き表すのに、役割なら109件の定義が要りました。属性の条件で書くと5件です。
代わりに、判定のたびに属性が要ります。属性が2%欠けるだけで本来通るはずの8件が拒否されました。
同じ方針を2通りで書き表して数えました。定義は大きく減りますが、判定のたびに属性が要ります。
ABACで何が減って何が増えるのかを、実際に走らせて数えました。用意したのは利用者200人・機能5で、属性は部署・職位・勤務地・雇用形態の4つです。
方針は現実に近い形にしました。支払の実行は経理課の正社員だけ、人事情報の閲覧は人事課の正社員で在宅以外といった条件です。
const should = (u, f) => {
if (f === '申請の作成') return true;
if (f === '申請の承認') return u.rank === '課長' || u.rank === '部長';
if (f === '支払の実行') return u.dept === '経理課' && u.emp === '正社員';
if (f === '契約の締結') return u.dept === '法務課' && u.rank !== '担当';
if (f === '人事情報の閲覧') return u.dept === '人事課' && u.emp === '正社員' && u.site !== '在宅';
return false;
};
持たせ方 管理する定義の数 属性で判定する 5件 機能ごとに条件を1つ書く 役割にまとめる 109件 実在する属性の組ごとに役割を作る (属性の組の理論値) 192件
上の表を見てください。属性の条件で書くと5件だったものが、役割にまとめると109件になりました。
役割は属性の組み合わせごとに1つ必要になります。部署8・職位4・勤務地3・雇用形態2なら、理論上は192通りです。
条件で書けば組み合わせを作りません。判定のときに属性を見て決めるので、機能の数だけで済みます。
欠けている属性の割合 正しく判定 誤って拒否 判定の総数
0% 1000 / 1000 0件 1000件
2% 992 / 1000 8件 1000件
5% 978 / 1000 22件 1000件
10% 961 / 1000 39件 1000件
20% 925 / 1000 75件 1000件
属性が2%欠けるだけで、本来通るはずの8件が拒否されました。20%なら75件です。
拒否は安全側の動きですが、業務は止まります。役割で持たせている場合、属性が取れなくても割り当ては残っているので、この止まり方はしません。
定義は減るが、判定に要るデータが増える。
The rules or policies that can be implemented in an ABAC model are limited only to the degree imposed by the computational language.原文NIST「Attribute Based Access Control」 この内容の有効期限2027-02-18
利用者や対象や状況の属性を見て、その場で可否を決めます。組み合わせを事前に作らない点が特徴です。
ABACは、属性を見てその場で可否を決める方式です。日本語では属性にもとづく制御と呼ばれます。
NISTの説明では、属性に対して規則を評価することで対象へのアクセスを制御する点で見分けがつく、論理的なアクセス制御の模型だとされています。
3番目が役割では表しにくい部分です。在宅からは見せないといった条件は、人の属性ではなく状況の属性になります。
書ける条件の幅も広く取られています。NISTは、ABACの模型で実装できる規則や方針は、計算のための言語が課す程度にしか制限されないとしています。
自由に書ける代わりに、誰がその条件を理解しているかという問題が残ります。役割の名前と違って、条件は読まないと分かりません。
属性の値が変われば、判定も自動的に変わります。NISTも、属性とその値は、主体や対象の生涯を通じて、個々を書き換えることなく変更できるとしています。
異動で部署が変われば、その瞬間から判定が変わります。権限の付け替え作業が要りません。
方針と属性の対応はこちらで置いた値です。実際の組織では条件がもっと複雑になり、規則の数も5件では済みません。ここで見せているのは、組み合わせを事前に作るかどうかで定義の数がどう変わるかという関係です。役割で持たせる方式はRBACの記事で扱っています。
ABAC is a logical access control model that is distinguishable because it controls access to objects by evaluating rules against the attributes原文NIST「Attribute Based Access Control」 この内容の有効期限2027-02-18
判定のたびに属性が要ります。属性が古い、欠けている、食い違っているといった問題が、そのまま可否に出ます。
ABACを入れる前に確かめるべきは、属性がいつでも正しく取れるかです。ここが崩れると判定も崩れます。
必要な属性 取れないと困る機能の数 部署 3件 / 5件 職位 3件 / 5件 勤務地 1件 / 5件 雇用形態 2件 / 5件
部署と職位は5つの機能のうち3つで使われています。この2つが取れないと、判定できる機能が大きく減ります。
規則の数は属性を足しても増えません。増えるのは判定のたびにそろえる必要があるデータのほうです。
1番目が止まると、判定の大半が止まります。人事の仕組みの稼働が、そのまま業務の稼働になります。
欠けている場合は拒否されるので気づけます。危ないのは古い値が残っている場合です。判定は通り、誰も異常に気づきません。
異動したのに部署の属性が前のままなら、前の部署の権限で通り続けます。属性の更新が遅れると、外し忘れと同じことが起きます。
欠けた属性は止まる。古い属性は通ってしまう。
attributes and their values may then be modified throughout the lifecycle of subjects, objects, and attributes without modifying each原文NIST「Attribute Based Access Control」 この内容の有効期限2027-02-18
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る