kimberlite-abac: Attribute-Based Access Control
Provides context-aware access decisions based on user, resource, and environment attributes. Extends RBAC with fine-grained, dynamic access control.
Architecture
┌─────────────────────────────────────────────┐
│ Access Request │
│ (User + Resource + Environment Attributes) │
└─────────────────┬───────────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ ABAC Evaluator │
│ ├─ Evaluate rules by priority │
│ ├─ Match conditions against attributes │
│ └─ Return Allow/Deny decision │
└─────────────────┬───────────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ Decision │
│ - Effect (Allow/Deny) │
│ - Matched rule name │
│ - Human-readable reason │
└─────────────────────────────────────────────┘
Standard Policies
Pre-built policies for common compliance frameworks:
- HIPAA: PHI access only during business hours with clearance >= 2
FedRAMP: Deny access from outside the US- PCI DSS: PCI data only from server devices with clearance >= 2
Examples
use ;
use ;
use evaluator;
use DataClass;
use Utc;
// Create a policy that denies access outside business hours
let policy = new
.with_rule
.expect;
let user = new;
let resource = new;
let env = from_timestamp;
let decision = evaluate;
// Decision depends on whether it is currently business hours (UTC)