Identity & Access Management

ABAC

属性ベースアクセス制御

Category: Identity & Access Management / Updated: 2026-05-26

📖

Overview

ABAC(Attribute-Based Access Control:属性ベースアクセス制御)とは、ユーザー属性、リソース属性、環境属性、アクション属性といった複数の属性を組み合わせたポリシーに基づいてアクセス制御を行うモデルです。「営業部門の正社員が、業務時間内に、社内ネットワークから、顧客データを閲覧する」のように、複数の条件を柔軟に組み合わせた細粒度のアクセス制御が実現できます。

従来のRBAC(ロールベースアクセス制御)では対応が困難だった、コンテキストに応じた動的なアクセス制御が可能になることがABACの最大の利点です。時間帯、アクセス元のIPアドレス、デバイスの種類、リスクスコアなど、リアルタイムの環境情報を考慮した認可判断により、セキュリティと利便性を高い水準で両立できます。

ABACはNIST SP 800-162で標準的なフレームワークが定義されており、米国連邦政府や大規模企業を中心に採用が進んでいます。特にゼロトラストアーキテクチャにおいては、リクエストのたびに多角的な属性を評価して認可判断を行うABACの考え方が不可欠であり、次世代のアクセス制御モデルとして注目されています。

🔬

Details

ABACの4つの属性カテゴリ

ABACでは、アクセス制御の判断に4種類の属性を使用します。サブジェクト属性(ユーザー属性)は、ユーザーの部門、役職、セキュリティクリアランス、在籍年数などの情報です。リソース属性は、データの機密度レベル、作成者、分類カテゴリなど、アクセス対象のリソースに関する情報です。

アクション属性は、読み取り、書き込み、削除、実行など、リソースに対して実行しようとしている操作を表します。環境属性は、アクセス時刻、アクセス元のIPアドレス、デバイスの種類、ネットワークの信頼度、現在の脅威レベルなど、リクエスト時のコンテキスト情報です。

XACML(eXtensible Access Control Markup Language)

XACMLは、ABACポリシーを記述するための標準的なXMLベースの言語であり、OASIS(Organization for the Advancement of Structured Information Standards)によって策定されています。ポリシーの記述だけでなく、認可リクエストとレスポンスのフォーマットも標準化しており、異なるシステム間での相互運用性を確保します。

XACMLのポリシーは、Rule(ルール)Policy(ポリシー)PolicySet(ポリシーセット)の階層構造で定義されます。複数のルールの評価結果が競合する場合の解決方法(結合アルゴリズム)も規定されており、「すべて許可が必要(permit-unless-deny)」「1つでも許可があればOK(first-applicable)」などの戦略を選択できます。

ポリシー決定ポイント(PDP)とポリシー実施ポイント(PEP)

ABACアーキテクチャは、いくつかの主要コンポーネントで構成されます。PDP(Policy Decision Point:ポリシー決定ポイント)はアクセスリクエストを受け取り、ポリシーに基づいて許可・拒否の判断を行う中核的なコンポーネントです。PEP(Policy Enforcement Point:ポリシー実施ポイント)はPDPの判断結果を実際に適用し、アクセスを許可またはブロックします。

PAP(Policy Administration Point:ポリシー管理ポイント)はポリシーの作成・管理を担当し、PIP(Policy Information Point:ポリシー情報ポイント)はPDPが判断に必要な属性情報を外部ソース(LDAPディレクトリ、HR系システム、脅威インテリジェンスなど)から収集します。

動的認可(Dynamic Authorization)

動的認可は、ABACの強力な特徴の一つです。従来の静的なアクセス制御とは異なり、リクエストのたびにリアルタイムの属性情報を評価してアクセス可否を判断します。例えば、通常は社内からのアクセスのみを許可しているリソースに対して、出張中の社員がVPN経由でアクセスした場合には追加認証を要求するといった、状況に応じた柔軟な制御が可能です。

動的認可は、リスクベースアクセス制御(Risk-Based Access Control)とも連携します。ユーザーの行動パターン、デバイスのセキュリティ状態、現在の脅威レベルなどを総合的にスコアリングし、リスクが高い場合にはアクセスを制限したり、段階的な認証を要求したりします。

RBACとABACの比較

RBACはロール(役割)を中心とした比較的シンプルなモデルであり、導入・管理が容易です。しかし、複雑な制御要件に対応するためにロールが増殖する「ロール爆発」が課題となります。一方、ABACは属性の組み合わせで柔軟なポリシーを定義でき、ロール爆発の問題を解消しますが、ポリシーの設計・管理が複雑になります。

実運用では、RBACを基本としつつABACで補完するハイブリッドアプローチが一般的です。基本的な権限はロールで管理し、コンテキスト依存の細粒度な制御はABACポリシーで実装することで、管理の効率性と制御の柔軟性を両立できます。

🛡️

Security Measures

  • 01
    属性データの信頼性と整合性の確保:ABACの精度は属性データの品質に直結します。ユーザー属性の情報源(HR系システム、ディレクトリサービス)が最新かつ正確であることを保証してください。属性の更新が遅延すると、退職者がアクセスを維持したり、異動後も旧部門の権限が残存したりするリスクがあります。
  • 02
    ポリシーの体系的な設計とテスト:ABACポリシーは複雑になりやすいため、ポリシーの命名規則、階層構造、結合アルゴリズムを体系的に設計してください。新しいポリシーを導入する前に、テスト環境でシミュレーションを実施し、意図しないアクセス許可や拒否が発生しないことを確認しましょう。
  • 03
    デフォルト拒否ポリシーの採用:ABACシステムの基本ポリシーとして「明示的に許可されていないアクセスはすべて拒否する」というデフォルト拒否(Deny-by-Default)の原則を採用してください。ポリシーの評価エラーや属性取得の失敗時にもアクセスが拒否されるフェイルセーフ設計を徹底しましょう。
  • 04
    ポリシー決定の監査ログ記録:PDPが行ったすべての認可判断(許可・拒否とその理由、使用された属性値)を監査ログに記録してください。異常なアクセスパターンの検出、インシデント調査、コンプライアンス監査に必要な情報を確保しましょう。
  • 05
    PDPとPEPの高可用性設計:ABACのPDPやPEPが停止すると、すべてのアクセス制御が機能しなくなります。冗長化、負荷分散、キャッシュ戦略を適切に設計し、ABACインフラの高可用性を確保してください。PDP障害時のフェイルオーバー方針(フェイルクローズ)を明確に定めましょう。
  • 06
    定期的なポリシーレビューと最適化:ABACポリシーは時間とともに増加・複雑化する傾向があります。定期的にポリシーを棚卸しし、使用されていないポリシーの削除、矛盾するポリシーの解消、パフォーマンスに影響する複雑なポリシーの最適化を行ってください。
⚠️

Incidents

📋 AWS IAMポリシーの設定不備による大規模データ公開(複数事例)

AWS環境では、IAMポリシー(ABACの一形態)の設定不備によるS3バケットのデータ公開事故が繰り返し発生しています。ポリシー条件(Condition)の記述ミスにより、本来は社内からのアクセスに限定すべきデータが、インターネット上で誰でもアクセス可能な状態になるケースが頻発しました。

代表的な事例として、米国防総省のS3バケットに18億件のソーシャルメディア投稿の監視データが公開状態で放置されていた事例があります。ABACポリシーの設計では、属性条件の記述が正確であること、デフォルト拒否の原則が守られていることの検証が不可欠です。

📋 医療データプラットフォームにおける属性汚染による不正アクセス

ある医療データ共有プラットフォームにおいて、ABACの属性情報源であるユーザーディレクトリが侵害され、攻撃者が自身のアカウントの属性(所属部門、役職)を不正に変更する「属性汚染攻撃」が発生しました。変更された属性により、攻撃者は本来アクセスできない患者の医療記録にアクセスしました。

この事例は、ABACシステムにおける属性データの信頼性がセキュリティの根幹であることを示しています。属性情報源の保護、属性変更の監査ログ、属性値の妥当性検証といった多層的な対策が必要です。

📋 金融機関におけるABACポリシー競合による取引データ漏洩

ある金融機関で、ABACの導入過程でポリシーの競合が発生し、意図しないアクセス許可が生まれたことで、特定の取引データが権限のない部門からアクセス可能になる事態が発生しました。複数のポリシーが異なる結合アルゴリズムを使用しており、個別には正しいポリシーが組み合わさった際に予期しない結果を生じました。

この問題は内部監査によって発見されましたが、発見までに数ヶ月を要しました。ポリシーの結合テスト、コンフリクト検出ツールの活用、段階的なポリシー導入プロセスの重要性を示す事例です。

🔗

Related Terms