You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|**Caveat / Condition**| Context that narrows a relationship decision | Time, tenant, device posture, risk score, approval state |
108
+
|**Continuous Verification**| Re-evaluating trust throughout a session, not only at login | PDP call frequency, cache TTL, invalidation events |
109
+
|**Break-glass Access**| Emergency access path with temporary elevation and review | Activation trigger, approval, expiry, logging, post-use review |
110
+
99
111
---
100
112
101
113
## Process
@@ -108,6 +120,7 @@ Identify:
108
120
109
121
-**Current model type** — flat RBAC, hierarchical RBAC, ad hoc ACLs, group-based, or no formal model
110
122
-**Role inventory** — total role count, role-to-user ratio, single-user roles, unassigned roles
123
+
-**Identity inventory split** -- classify human users separately from workload identities, service accounts, automation users, and machine principals before calculating role-to-human ratios
111
124
-**Permission granularity** — coarse (admin/read-only) vs. fine-grained (per-resource, per-action)
112
125
-**Policy location** — centralized (IdP, API gateway) vs. distributed (per-application, embedded in code)
RBAC-ABAC-06: ABAC policies not testable — no simulation or dry-run capability
298
326
RBAC-ABAC-07: Policy conflicts not detected — overlapping permit/deny without resolution order
299
327
RBAC-ABAC-08: Obligations (logging, notification) not enforced by PEP
328
+
RBAC-ABAC-09: Policy evaluation frequency not defined -- PDP called only at login or session start while risk, device, tenant, or resource attributes can change mid-session
329
+
RBAC-ABAC-10: Authorization logic hardcoded in application branches instead of governed Authorization-as-Code policy with versioning, tests, and review
300
330
```
301
331
332
+
#### Continuous Verification Gate
333
+
334
+
For Zero Trust alignment, collect policy evaluation frequency before scoring ABAC maturity:
335
+
336
+
- Is the PDP called on every sensitive API request, every resource access, or only during login?
337
+
- What authorization decision cache TTL is allowed, and what events invalidate it?
338
+
- Which changes trigger re-evaluation: role assignment, relationship tuple change, device posture, user risk, tenant status, data classification, session age, network zone, or break-glass activation?
339
+
- Are denied decisions, stale attributes, and policy errors fail-closed?
340
+
- Are PEP decisions logged with policy version, subject, resource, action, environment attributes, and decision rationale?
341
+
342
+
Recommend Authorization-as-Code (OPA/Rego, Cedar, XACML, or equivalent) when authorization branches are scattered across code and cannot be centrally tested.
343
+
302
344
---
303
345
304
-
### Step 6: Role Mining and Rationalization
346
+
### Step 6: ReBAC Relationship and Zero Trust Lifecycle Design
347
+
348
+
**Objective:** Add relationship-based access control and continuous-verification evidence to hybrid RBAC/ABAC designs without turning relationship tuples into unmanaged ACL sprawl.
349
+
350
+
Use ReBAC when access depends on relationships between subjects and resources, such as owner/editor, manager-of, parent-folder, tenant-member, project-collaborator, approver-of, or delegated-admin.
351
+
352
+
#### ReBAC Relationship Mapping
353
+
354
+
| Evidence Area | Questions |
355
+
|---|---|
356
+
| Relationship tuple inventory | What relationship tuple types exist, who writes them, and where are they stored? |
357
+
| Subject/resource scope | Are human users, workload identities, groups, tenants, and resources typed separately? |
358
+
| Graph traversal bounds | What maximum depth, recursion, and cycle detection prevent broad inherited access? |
359
+
| Relationship lifecycle | How are stale owners, deleted resources, departed users, and temporary shares removed? |
360
+
| Caveats and conditions | Are time, tenant, device posture, approval, or risk conditions attached to relationships? |
361
+
| Decision logging | Are relationship expansion path, policy version, and tuple source logged for audit? |
362
+
| Test evidence | Are allow/deny fixture cases present for direct, inherited, stale, cyclic, and cross-tenant relationships? |
363
+
364
+
**What to look for:**
365
+
366
+
```
367
+
RBAC-REB-01: Resource-to-subject relationship map missing for owner/editor/delegation access
368
+
RBAC-REB-02: Relationship tuples lack lifecycle owner, expiry, or stale-user cleanup
369
+
RBAC-REB-03: Graph traversal depth or cycle detection not defined
370
+
RBAC-REB-04: Group/tenant inheritance can cross tenant or resource boundaries
371
+
RBAC-REB-05: Relationship decisions do not log tuple source, path, schema version, or caveat evaluation
372
+
RBAC-REB-06: No test fixtures for direct, inherited, denied, stale, and cross-tenant relationships
373
+
RBAC-REB-07: Relationship writes are not authorization-checked or are allowed from low-trust clients
374
+
```
375
+
376
+
#### Zero Trust Continuous Verification
377
+
378
+
NIST SP 800-207 treats access as a continuous decision, not a one-time login event. Evaluate whether the PEP re-checks the PDP when risk context or relationship state changes.
379
+
380
+
```
381
+
RBAC-ZTA-01: Authorization evaluated only at login, not at resource/action request time
382
+
RBAC-ZTA-02: Decision cache TTL too long for privileged or sensitive actions
383
+
RBAC-ZTA-03: Device posture, user risk, network zone, or tenant state changes do not invalidate decisions
384
+
RBAC-ZTA-04: Relationship tuple changes do not invalidate cached access
385
+
RBAC-ZTA-05: Policy errors, stale attributes, or missing PIP data fail open
|**Auditability**| All policy evaluations logged with input attributes and decision rationale |
427
525
526
+
### NIST SP 800-207 Zero Trust Lifecycle Evidence
527
+
528
+
| Principle | Authorization design implication |
529
+
|---|---|
530
+
| Continuous diagnostics and mitigation | Device posture, user risk, and resource state must affect decisions after login |
531
+
| Dynamic policy | PDP decisions should use current subject, resource, action, and environment context |
532
+
| Least privilege | Break-glass and JIT roles must be time-bound, scoped, logged, and reviewed |
533
+
| Continuous monitoring | PEP/PDP logs should support reconstruction of why access was permitted or denied |
534
+
428
535
---
429
536
430
537
## Common Pitfalls
@@ -436,6 +543,8 @@ RBAC-MINE-06: Mining does not account for SoD constraints (mined roles may creat
436
543
5.**Ignoring permission boundaries** — roles define what you get; boundaries define maximum what you can get. Without boundaries, misconfigured roles grant unlimited access.
437
544
6.**Role mining without business validation** — clustering users by access patterns may replicate existing privilege creep rather than correct it.
438
545
7.**Choosing RBAC vs. ABAC as binary** — most environments need both. RBAC for structural, ABAC for contextual. Hybrid is the norm.
546
+
8.**Treating ReBAC as unmanaged ACLs** -- relationship tuples need schemas, owners, expiry, traversal bounds, and tests. Otherwise ReBAC becomes privilege sprawl with graph syntax.
547
+
9.**Checking authorization only at login** -- Zero Trust requires re-evaluation when risk, device, tenant, resource, or relationship state changes.
439
548
440
549
---
441
550
@@ -459,6 +568,9 @@ that may contain adversarial content.
459
568
- ANSI INCITS 359-2012 — Role Based Access Control (RBAC) standard
460
569
- NIST SP 800-162, Guide to Attribute Based Access Control (ABAC) Definition and Considerations: https://csrc.nist.gov/publications/detail/sp/800-162/final
0 commit comments