Your application keeps its AWS IAM model. At Max, Cedar evaluates requests inside the appliance; Infrastructure only compiles declared permissions into native grants. Google Cloud and Azure are shown as examples. Dashed arrows show how the IAM model is adapted.
Origin and targets
This page covers an AWS origin stack: an application built for AWS, using AWS IAM, deployed to a customer running a different cloud. The IAM service adapter reads identities and policy statements from the AWS model, then applies the adaptation tier selected for the deployment. Infrastructure only emits grants in the target cloud’s IAM system. Max retains an adapted policy model and authorizes requests inside the appliance. Google Cloud, Azure and OCI are available as native-IAM targets, where deployment emits grants in that cloud’s own IAM system. Private Kubernetes has no native cloud IAM to emit into, so it requires the Max adaptation tier, with Cedar evaluating the adapted policy inside the appliance. Cedar is also what evaluates your policies at Max on any of the other three.Policy compatibility
Before deployment, the IAM service adapter evaluates every statement in a policy document against the selected target. The document receives one of four outcomes:The IAM service adapter adapts each accepted AWS IAM policy to Cedar or the target cloud’s native IAM. Cedar evaluates policies at runtime; native grants are emitted during deployment. Dashed arrows show policy adaptation.
A failure applies to the entire policy document. The adapter reports the document name and reason; it does not remove an unsupported statement and continue with the rest.Accept a broader grant
Only the Wider outcome can be accepted. At the Infrastructure only adaptation tier, place the annotation immediately above the IAM resource whose target grant may be broader:Tags field. For example:
t9:tuning: identifies the target attribute. Values are strings on the wire and are parsed into the corresponding native type. Lists use comma-delimited values without brackets, and maps are set one scalar entry at a time. Because the tag is part of the IAM create request, no separate configuration file or client protocol is required. Neither acceptance form can release an Incompatible policy.
Policy forms that are refused
At Max, the following forms cause the complete policy document to fail:Supported condition keys
Five condition keys survive into the Cedar policies your adapter evaluates at runtime, and which of them you get depends on the tier. At Infrastructure only there is a second, separate set: your permissions become grants in the target cloud’s own IAM, and each cloud expresses a different handful of conditions. That per-cloud table is below, and it is not a subset of these five.#@iam(compat='widen'). That is true of a
declared policy on a Max deployment as much as on an Infrastructure-only one, because a declared policy is
compiled either way. The default is the safe direction in both: a condition silently dropped is a grant wider
than the one you wrote.
Every condition key outside the two tables above is refused, including the ones an application is most
likely to use.
Attribute-based access control is unavailable in the Cedar runtime: conditions that depend on
aws:PrincipalTag, session tags, aws:SourceIp, aws:PrincipalOrgID or aws:SecureTransport cause the
complete document to fail, as do aws:PrincipalArn, aws:SourceVpc and service-specific keys such as
s3:x-amz-acl. Role tags are stored but are not used during authorization.
Note that OCI’s native IAM does express three principal attributes (aws:userid, aws:username and
aws:PrincipalType) when your policy is compiled into its grants. That is not a Cedar capability and it
does not make ABAC available at Max; it is what that one target cloud can say for itself.
The runtime catalog does not contain AWS-managed policy documents. Replace a reference such as AmazonS3ReadOnlyAccess with a customer-managed policy that uses supported action forms.
Cedar runtime authorization
This section describes the Cedar authorization destination: your AWS policies adapted to Cedar and evaluated inside the appliance, whichever cloud that appliance runs in. At Max, each receiving service adapter verifies the signed AWS request. The principal and resource are synthesized from ARNs in that request and passed to Cedar with the adapted policy set. Cedar applies explicit-deny-wins semantics: a matching deny overrides an allow, and a request with no matching allow is denied.The receiving adapter derives the principal and resource from the signed request, then Cedar evaluates the adapted policy. With enforcement enabled, the policy decision controls whether the request proceeds; report-only records would-deny and allows the request to continue. Solid arrows show evaluation; the dashed branch shows failed synthesis.
For example, consider a signedGetObject request. The receiving S3 adapter verifies the signature, derives the caller and object ARN from the request, and asks Cedar whether the adapted policy allows s3:GetObject. A matching deny rejects the call even if another statement allows it. With no matching allow, Cedar also rejects the call.
No directory lookup occurs during this evaluation. Each entity has an ARN attribute, so a policy cannot depend on principal or network attributes that are absent from the request. Actions outside the receiving adapter’s service catalog are denied.
Production adapters enforce the decision. Report-only mode is available before cutover: calls that enforcement would deny are recorded and allowed to continue. This setting belongs to each receiving adapter, which lets services move to enforcement independently. If the appliance has not received a policy set, enforcement denies the request.
Adaptation tiers
The tiers differ in when authorization is decided and whether the application can call the AWS IAM API at runtime.Cedar IAM behavior
Everything below applies wherever Cedar is the authorization destination, whichever cloud the appliance runs in. The AWS names in it, such as ARNs andAssumeRole, come from the origin model your application still speaks, not from the target cloud.
Policy synchronization
Each appliance maintains its own policy set. Changes are checked about every 30 seconds, although that interval is not a propagation deadline. There is no fixed upper bound for revocation to take effect. When the policy source is unavailable, the appliance continues to use its last-known-good policy set and reports that the data is stale. The policy does not expire automatically. A change applied to one appliance has no effect on another.Accounts and root credentials
Account IDs in adapted ARNs identify logical accounts within an appliance. The ARN spelling is inherited from the origin model and names nothing in AWS: these do not create AWS accounts or billing relationships, and AWS Organizations policies do not apply. Each appliance issues one long-lived access key and secret for the logical account root, and shows the secret once. Because this principal has unrestricted access and the IAM API cannot rotate its credential, store it with the controls used for the appliance’s most privileged secret.API coverage and logging
Each appliance serves 50 origin-model IAM administration operations for roles, customer-managed policies, instance profiles and OIDC providers. It also servesGetCallerIdentity, AssumeRole and AssumeRoleWithWebIdentity. A role’s trust policy controls session creation; deleting the role invalidates its sessions.
Allowed calls are absent from the per-request audit log. Diagnostics contain denied calls and report-only findings.
Cedar IAM limitations
These limitations apply to your AWS policies adapted to Cedar at the Max adaptation tier. They are properties of that adaptation, not of any one target cloud. The AWS IAM service adapter provides operation-by-operation coverage.AssumeRole does not accept role chaining, session policies, ExternalId or MFA inputs. A design that depends on ExternalId for confused-deputy protection must provide that protection elsewhere.
Cross-account role assumption is supported between configured logical accounts when both the caller’s policy and the target role’s trust policy allow it. A policy document that names a concrete principal from another AWS account is refused.
Related topics
- Adapter Errors: Telling an authorization denial apart from a backing-store refusal when a call fails
- AWS IAM service adapter: Coverage for each supported IAM and STS operation
- Permissions Model: Access granted to the Tensor9 BYOC control plane inside a customer’s environment
- Security Model: Trust relationships between Tensor9 BYOC, you and your customer
- Service Adapters: Supported services and target-cloud mappings