セキュリティ・ID

ABACとは|定義は109件から5件に、代わりに属性が欠けると拒否される

ABACとは何をする方式か役割で持たせるのと何が違うのか属性が取れないとどうなるのか

同じ方針を書き表すのに、役割なら109件の定義が要りました。属性の条件で書くと5件です。

代わりに、判定のたびに属性が要ります。属性が2%欠けるだけで本来通るはずの8件が拒否されました。

この記事の要点

  • 役割なら109件、属性の条件なら5件
  • 属性の組の理論値は192件
  • 属性が2%欠けると8件が誤って拒否
  • 20%欠けると75件

定義は109件から5件に、代わりに属性が欠けると拒否される

同じ方針を2通りで書き表して数えました。定義は大きく減りますが、判定のたびに属性が要ります。

ABACで何が減って何が増えるのかを、実際に走らせて数えました。用意したのは利用者200人・機能5で、属性は部署・職位・勤務地・雇用形態の4つです。

方針は現実に近い形にしました。支払の実行は経理課の正社員だけ、人事情報の閲覧は人事課の正社員で在宅以外といった条件です。

javascript
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;
};
text
持たせ方              管理する定義の数
属性で判定する                       5件  機能ごとに条件を1つ書く
役割にまとめる                     109件  実在する属性の組ごとに役割を作る
(属性の組の理論値)                  192件

上の表を見てください。属性の条件で書くと5件だったものが、役割にまとめると109件になりました。

なぜここまで差が出るのか

役割は属性の組み合わせごとに1つ必要になります。部署8・職位4・勤務地3・雇用形態2なら、理論上は192通りです。

条件で書けば組み合わせを作りません。判定のときに属性を見て決めるので、機能の数だけで済みます。

属性が欠けると拒否される

text
欠けている属性の割合  正しく判定  誤って拒否  判定の総数
        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件です。

拒否は安全側の動きですが、業務は止まります。役割で持たせている場合、属性が取れなくても割り当ては残っているので、この止まり方はしません。

定義は減るが、判定に要るデータが増える。

単位: 件属性の組の理論値192件役割にまとめる109件属性で判定する5件利用者200人・機能5・属性4種での実測。属性が2%欠けると8件が誤って拒否された。
図1 ── 同じ方針を書き表すのに必要な定義の数
出典NIST「Attribute Based Access Control」2026-08-18 確認
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とは何をする方式か

利用者や対象や状況の属性を見て、その場で可否を決めます。組み合わせを事前に作らない点が特徴です。

ABACは、属性を見てその場で可否を決める方式です。日本語では属性にもとづく制御と呼ばれます。

何を見て決めるのか

NISTの説明では、属性に対して規則を評価することで対象へのアクセスを制御する点で見分けがつく、論理的なアクセス制御の模型だとされています。

  1. 利用者の属性。部署、職位、雇用形態
  2. 対象の属性。文書の区分、持ち主、機密の度合い
  3. 状況の属性。時刻、場所、端末
  4. 操作の種類。閲覧か、変更か、削除か

3番目が役割では表しにくい部分です。在宅からは見せないといった条件は、人の属性ではなく状況の属性になります。

規則の書き方に上限がない

書ける条件の幅も広く取られています。NISTは、ABACの模型で実装できる規則や方針は、計算のための言語が課す程度にしか制限されないとしています。

自由に書ける代わりに、誰がその条件を理解しているかという問題が残ります。役割の名前と違って、条件は読まないと分かりません。

変更のときの動き

属性の値が変われば、判定も自動的に変わります。NISTも、属性とその値は、主体や対象の生涯を通じて、個々を書き換えることなく変更できるとしています。

異動で部署が変われば、その瞬間から判定が変わります。権限の付け替え作業が要りません

余談 この計測での注意

方針と属性の対応はこちらで置いた値です。実際の組織では条件がもっと複雑になり、規則の数も5件では済みません。ここで見せているのは、組み合わせを事前に作るかどうかで定義の数がどう変わるかという関係です。役割で持たせる方式はRBACの記事で扱っています。

出典NIST「Attribute Based Access Control」2026-08-18 確認
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を入れる前に確かめるべきは、属性がいつでも正しく取れるかです。ここが崩れると判定も崩れます。

どの属性が要るか

text
必要な属性        取れないと困る機能の数
部署                       3件 / 5件
職位                       3件 / 5件
勤務地                      1件 / 5件
雇用形態                     2件 / 5件

部署と職位は5つの機能のうち3つで使われています。この2つが取れないと、判定できる機能が大きく減ります。

規則の数は属性を足しても増えません。増えるのは判定のたびにそろえる必要があるデータのほうです。

属性はどこから来るか

  1. 人事の仕組み。部署・職位・雇用形態
  2. 認証の仕組み。端末・場所・認証の強さ
  3. 対象の側。文書の区分、持ち主
  4. その場の状況。時刻、経路

1番目が止まると、判定の大半が止まります。人事の仕組みの稼働が、そのまま業務の稼働になります

古い属性のほうが危ない

欠けている場合は拒否されるので気づけます。危ないのは古い値が残っている場合です。判定は通り、誰も異常に気づきません。

異動したのに部署の属性が前のままなら、前の部署の権限で通り続けます。属性の更新が遅れると、外し忘れと同じことが起きます。

欠けた属性は止まる。古い属性は通ってしまう。

充足 2 / 4属性の取得元が止まらない作りになっている属性が2%欠けるだけで、本来通る8件が拒否された属性の更新の遅れを把握している古い値のままだと判定は通り、誰も異常に気づかない属性が取れないときの動きを決めていない拒否するか通すかで、業務が止まるか穴が開くかが変わる組み合わせが少ないのに条件で書いている組が少なければ役割で足りる。条件は読まないと分からない利用者200人・機能5・属性4種での実測にもとづく。定義の数は5件と109件だった。
図2 ── ABACを入れるときの点検項目
出典NIST「Attribute Based Access Control」2026-08-18 確認
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

よくある質問

役割で持たせるのと何が違うのですか
組み合わせを事前に作らない点です。役割は属性の組ごとに必要ですが、条件で書けば機能ごとに1つで済みます。
属性が取れないとどうなりますか
判定できないので拒否になります。この計測では2%欠けるだけで8件、20%で75件が誤って拒否されました。
属性を増やすと規則も増えますか
規則の数は変わりません。増えるのは、判定のたびにそろえる必要があるデータのほうです。
どちらを選べばよいですか
属性の組み合わせが少なければ役割で足ります。組み合わせが掛け算で増えるなら、条件で書くほうが管理しやすくなります。

まとめ

  • 属性からその場で可否を判定する方式
  • 定義の数は109件から5件
  • 属性が欠けると誤って拒否される
  • 属性データの正確さがそのまま可否になる

今日から始められること

  1. 判定に使いたい属性を書き出す
  2. その属性が、いつでも正しく取れるか確かめる
  3. 取れない場合に拒否してよいかを決める
  4. 組み合わせの数を数えて、役割で足りるか判断する

実務で組んだABACのワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る