liveBook · Manning

Chapter 8: Policy languages and frameworks

What you will learn in chapter 8 of Authorization in Action

ACME’s changing needs introduce four authorization approaches and show why PARC is useful for comparing their tradeoffs rather than declaring one winner.

After this chapter you will be able to

What it builds on

Section by section

Introduction

ACME’s changing needs introduce four authorization approaches and show why PARC is useful for comparing their tradeoffs rather than declaring one winner.

Key terms: XACML, OPA, Rego, OpenFGA, AWS IAM, relationship graph, PARC, externalize authorization logic, tradeoffs

8.1 XACML: The first policy language standard

Introduces XACML as an early standard for separate authorization policies and decision architecture, while explaining why its practical adoption lagged despite its lasting influence.

Key terms: XACML, declarative language, authorization policy, authorization reference architecture, Policy Decision Points (PDPs), Policy Enforcement Points (PEPs), XML syntax, centralized policy evaluation, structured decision logic, separation of enforcement and decision

8.1.1 A XACML simple example

This section uses a confidential-document example to explain basic XACML policy structure and evaluation, then shows how ALFA makes XACML policies easier to write without changing their meaning.

Key terms: XACML, <Target/>, <Rule/>, RuleCombiningAlgId, PEP, PDP, subject, resource, action, environment conditions

8.1.2 Applying the PARC model to XACML

The section maps XACML onto PARC and explains the strengths, modeling costs, and developer-experience limits of its attribute-based approach.

Key terms: PARC, subject, action:id, resource:id, environment, <Target/>, attribute-based access control, typed object models, relationships, profiles

8.1.3 Legacy and lessons

This section explains XACML’s lasting influence and the usability lesson ACME drew from its legacy deployment.

Key terms: XACML, enforcement, decision logic, ABAC, ACME, centralized policy, accessible, flexible

8.2 OPA and Rego: Policy for cloud-native systems

This section introduces OPA as a flexible policy engine for distributed systems and Rego as the language it evaluates.

Key terms: Open Policy Agent, OPA, decision engine, cloud-native applications, Rego, declarative, logic-based, JSON data structures

8.2.1 Rego policies example

The section illustrates a Rego rule for confidential-document access and explains why its Cedar equivalent has nearly the same logic.

Key terms: Rego policy, confidential, requesting principal, department, Cedar, scoping features, condition block

8.2.2 Comparing Rego with Cedar

This section contrasts how Rego and Cedar express policy scope and explains why Cedar’s structural scoping helps evaluation and auditing.

Key terms: Rego, Cedar, policy scope, rule body, policy head, structural filtering, prefilter, condition logic

8.2.3 Applying the PARC model to OPA and Rego

This section maps the PARC model onto OPA and Rego’s user-defined inputs and explains the benefits and costs of that flexibility.

Key terms: PARC, input.principal, input.action, input.resource, context, general-purpose, schema enforcement, scoping, rule bodies, infrastructure policy

8.2.4 Strengths and limitations

This section weighs OPA and Rego’s usefulness for infrastructure policy against the complexity and maintainability concerns some teams encounter when using them for access control.

Key terms: OPA, Rego, infrastructure policy, portable, testable, logic programming model, structure, types, validation, analysis

8.3 OpenFGA

This section introduces OpenFGA as a relationship-based way to handle ACME’s dynamic document-sharing permissions.

Key terms: OpenFGA, relationship-based access control (ReBAC), schema, relationship graph, Customer Collaboration platform, fine-grained sharing, relationships

8.3.1 How OpenFGA works

The section explains how OpenFGA defines permissions through a schema and stored relationships, then checks access by applying the schema’s rules to a relationship graph.

Key terms: policy as data, schema, types, relations, permissions, tuples, directed graph, schema rules, requested permission, conditional logic

8.3.2 Document access example

The section uses a document-access example to show how OpenFGA follows stored relationships to decide access and adapts when those relationships change.

Key terms: can_access, viewer, owner, manager, owner->manager, tuple, permission check, relationship graph, delegation, ACLs

8.3.3 Applying the PARC model to OpenFGA

Maps OpenFGA’s relationship-based authorization to PARC, explains its limits with contextual conditions, and introduces Topaz as a way to combine relationships with Rego policies.

Key terms: PARC, principal, action, resource, relationship tuples, schema, context, relationships, time-based access, security posture

8.4 AWS IAM

Introduces AWS IAM as an AWS-specific authorization system notable for its widespread use and scale.

Key terms: AWS Identity and Access Management, IAM, policy language

8.4.1 How IAM works

This section explains how AWS IAM represents permissions, evaluates requests, and trades portability for close integration with AWS.

Key terms: identity-based policies, resource-based policies, service control policies (SCPs), session policies, permission boundaries, deny rules, principals, actions, AWS API calls, resources

8.4.2 Example: Confidential document access

ACME’s example shows how AWS IAM uses identity and S3 object tags to control access to confidential documents by department.

Key terms: Identity Center, corporate directory, principal tag, owner-department, confidential, s3:GetObject, Condition block, aws:PrincipalTag/department, ${s3:ExistingObjectTag/owner-department}, policy variable

8.4.3 Applying the PARC model to AWS IAM

This section maps the PARC model to AWS IAM and explains how IAM’s AWS-specific design enables precise access control while limiting portability.

Key terms: Principal, Action, Resource, Context, ARNs, condition keys, domain-specific design, attribute-based access, principal and resource tags, portability

8.5 Comparing policy languages

The section frames the comparison of policy languages around choosing an authorization system that fits the situation.

Key terms: authorization system, policy

8.5.1 XACML

This subsection compares XACML’s attribute-based representation of access requests with its strengths and limitations as a policy language.

Key terms: Principal, Action, Resource, Context, attributes, ABAC, externalized authorization, XML, PDP/PEP architecture, compliance-focused environments

8.5.2 OPA/Rego

This section compares OPA/Rego’s flexibility across infrastructure with the work and complexity of defining authorization concepts yourself.

Key terms: Rego, general-purpose policy language, manual scoping, principal, action, resource, context, input, data

8.5.3 OpenFGA

This subsection compares OpenFGA’s relationship-based model with approaches that depend on attributes or runtime context.

Key terms: OpenFGA, relationship-based authorization, relationship tuples, named permissions, typed objects, context, fine-grained, attribute-based authorization decisions, contextual decisions

8.5.4 AWS IAM

This subsection maps AWS IAM to the PARC model and summarizes its strengths and AWS-only limitation.

Key terms: Principal, Action, Resource, Context, ARNs, condition keys, AWS IAM, fine-grained, context-aware, AWS-specific

8.5.5 Cedar

Compares Cedar’s capabilities and tradeoff with other policy systems, then explains how AuthZEN standardizes authorization requests independently of the policy engine.

Key terms: Cedar, schema-based type checking, structural policy scoping, portable runtime, AuthZEN, Policy Enforcement Point (PEP), Policy Decision Point (PDP), PARC model, decision API

8.5.6 From strengths to selection

This section turns a comparison of policy languages and frameworks into a practical, problem-led way to select one.

Key terms: PARC model, strength map, authorization models, portability, developer experience, AWS IAM, OpenFGA, Cedar, OPA/Rego, ALFA

8.6 Summary

Where this is used later

Concepts explained in this chapter

← Chapter 7: The building blocks of policy Chapter 9: Implementing policies with Cedar →

These guides are generated from the text of Manning books by Manning's knowledge graph and link to the sections they draw on. The full books are available on liveBook and at manning.com.