liveBook · Manning

Chapter 7: The building blocks of policy

What you will learn in chapter 7 of Authorization in Action

The introduction uses ACME’s real-time access decisions to show why rules are needed and introduces Cedar as a language for expressing them.

After this chapter you will be able to

What it builds on

Section by section

Introduction

The introduction uses ACME’s real-time access decisions to show why rules are needed and introduces Cedar as a language for expressing them.

Key terms: access policies, graph of relationships, real time, Cedar, ReBAC, ABAC, contextual conditions

7.1 Introducing Cedar

Introduces Cedar as a purpose-built access-control language and explains the four strengths that led ACME to choose it.

Key terms: Cedar, fine-grained access control, Expressive, Performant, critical path, real-time decisions, Analyzable, static analysis, Open and embeddable, open source

7.2 Policy structure: Effect, scope, and conditions

Introduces the three conceptual parts of a Cedar policy and explains why the book uses Cedar to illustrate broader authorization concepts.

Key terms: effect, scope, conditions, Cedar, running example

7.2.1 Effect: What the policy does

This section explains how a Cedar policy’s effect permits or forbids an action and how a forbid takes precedence over a permit.

Key terms: effect, permit, forbid

7.2.2 Scope: When the policy applies

Explains how a Cedar policy’s scope identifies the requests to which the policy applies.

Key terms: scope, principal, action, resource, policy header

7.2.3 Conditions: Under what circumstances

This section explains how optional Boolean conditions make a policy depend on context without putting those rules in its scope.

Key terms: conditions, Boolean expressions, scope, dynamic contexts

7.2.4 Putting it together

Shows how effect, scope, and conditions fit together in a complete Cedar policy for document access.

Key terms: effect, scope, conditions, principal, resource, managed device

7.3 The PARC model in Cedar: Understanding policy evaluation

Introduces the four parts of a Cedar access request and shows how they correspond to a policy’s scope and conditions.

Key terms: PARC, Principal, Action, Resource, Conditions, policy structure, scope, request’s context

7.3.1 Cedar’s representation of PARC

This section shows how an application turns runtime information into a Cedar PARC request and how Cedar evaluates that request against a policy using supplied entity data.

Key terms: PARC model, access request, principal, action, resource, context, scope, when clause, permit effect, is_managed

7.3.2 Evaluating policies

This section explains how Cedar gathers relevant policies, checks which ones apply to a request, and uses typed data and attribute-access syntax during evaluation.

Key terms: policy stores, policy set, decision cycle, scope matching, condition evaluation, principal, action, resource, when, strongly typed

7.3.3 Combining results from multiple policies

This section explains how Cedar combines evaluated policies into one access decision and why its deny-overrides rules are useful.

Key terms: deny-overrides model, forbid, permit, deny by default, safety-first defaults, policy guardrails, order independence

7.3.4 PARC as the bridge

This section presents PARC as the shared language connecting Cedar requests, policies, and evaluation, and as a way to compare authorization languages.

Key terms: PARC, Cedar, four elements, principal, action, resource, conditions

7.4 Cedar’s unique design

This section explains why Cedar is deliberately specialized for authorization rather than general-purpose programming.

Key terms: Cedar, authorization logic, safety, ease of analysis, speed

7.4.1 Strong data types

This subsection explains how Cedar’s data types and schema-based type checking make policy conditions safer and catch errors before evaluation.

Key terms: strongly typed, statically validated, schema, type-checked, primitive types, composite types

7.4.2 Rich entity model

This subsection explains how Cedar’s structured entity references let policies express relationships using entity data loaded at runtime.

Key terms: first-class entity references, principal, resource.owner, entity data, rich entities, strong typing, relationships

7.4.3 Clear namespace and type safety

This subsection explains how Cedar namespaces keep policy domains distinct and help catch invalid policy expressions.

Key terms: namespace, :: delimiter, fully qualified, entity type, attribute definitions, type error, type-safe policy logic

7.4.4 What Cedar doesn’t include

This section explains why Cedar deliberately limits its policy language and how those limits make evaluation predictable and policies easier to assess.

Key terms: regular expressions, loops, external calls, pure, deterministic evaluation, guaranteed performance limits, declarative feature set, Booleans, strings, sets, entity references

7.4.5 Minimal operators with maximum effect

This section shows how Cedar’s small operator set expresses practical authorization conditions for device names, time limits, and IP ranges.

Key terms: operators, authorization logic, like operator, wildcard matching, context, time-based constraints, policy condition, clientIP, ip() operator, CIDR block specification

7.4.6 Safe and analyzable by design

Explains how Cedar’s bounded design supports fast, safe evaluation and mathematical analysis of policy behavior before deployment.

Key terms: scope filtering, compact evaluation model, sub-millisecond policy evaluation, declarative, side effects, strong typing, structured entity model, deterministic evaluation semantics, symbolic reasoning, Cedar Symbolic Compiler

7.5 Cedar’s distinctive strengths

This section explains how Cedar’s design gives ACME a consistent way to express varied access rules and makes policies easier to manage over time.

Key terms: PARC, effect, scope, conditions, deny-overrides, entity model, type system, namespaces, limited operator set, structured

7.6 Summary

Where this is used later

Concepts explained in this chapter

← Chapter 6: Dynamic authorization models Chapter 8: Policy languages and frameworks →

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.