Overview
Xloud Orchestration introduces unique security considerations beyond standard service policies. Templates can create users, assign roles, and invoke webhooks on behalf of the submitting user — making trust delegation and template validation critical security controls. This page covers the stack domain model, trust-based authorization, policy configuration, and template injection prevention.Stack Domain Users
Why a Separate Domain Is Needed
When a stack contains resources that require long-running credentials — such asWaitCondition signal URLs, auto-scaling webhooks, or software deployment agents —
the Orchestration engine cannot use the submitting user’s token (which expires).
Instead, it creates a short-lived stack domain user scoped to the stack’s project.
Domain User Lifecycle
| Event | Action |
|---|---|
| Stack created | Stack domain user created in the heat domain, scoped to the stack project |
| Stack deleted | Stack domain user is deleted automatically |
| User token expires | Domain user credentials are refreshed automatically — the stack continues to function |
Trust-Based Authorization
Xloud Orchestration uses Xloud Identity to delegate the submitting user’s permissions to the engine for resource provisioning.How Trusts Work
- When a stack is submitted, the engine requests a trust from Xloud Identity.
- The trust grants the engine the submitting user’s roles within the stack’s project.
- The engine uses the trust to authenticate when calling compute, networking, and storage APIs on behalf of the stack.
- The trust is tied to the stack — deleting the stack revokes the trust.
Reviewing Active Trusts
List trusts for the current user
Show trust detail
Policy Configuration
Orchestration API access is governed by policies defined inpolicy.yaml. The default
policy restricts stack management to project members and administration to users with
the admin role.
Default Policy Summary
| Operation | Default Policy |
|---|---|
| Create stack | rule:project_member — any project member |
| Update stack | rule:project_member — stack owner or admin |
| Delete stack | rule:project_member — stack owner or admin |
| List stacks (all projects) | rule:admin_required — admin only |
| Show stack in other project | rule:admin_required — admin only |
| Abandon stack | rule:admin_required — admin only |
| Validate template | rule:deny_stack_user — not stack domain users |
Overriding Policies
policy.yaml override example
/etc/xavs/orchestration/policy.yaml.
Template Injection Prevention
Orchestration templates are powerful — a malicious or misconfigured template can
create users, assign roles, consume large quota, and trigger webhooks to external
systems. Never execute untrusted templates from unknown sources.
Security Controls for Template Execution
| Control | Description |
|---|---|
| Policy enforcement | Templates execute with the submitting user’s roles. A project member cannot create resources outside their quota or project. |
| Quota limits | heat_max_stacks_per_tenant and heat_max_resources_per_stack prevent runaway resource creation. |
| Template validation | Run openstack orchestration template validate before deploying untrusted templates to inspect all declared resources. |
| Allowed resource types | Configure allowed_resources in the engine configuration to restrict which resource types can be used. |
| Restricted properties | restricted_metadata_keys prevents templates from setting arbitrary instance metadata. |
Review Template Before Execution
Validate and inspect a template
Next Steps
Configuration
Configure the stack domain, quotas, and service settings
Architecture
Understand the trust delegation and engine processing flow
Admin Troubleshooting
Resolve stack domain and authorization failures
Xloud Identity
Manage domains, trusts, and role assignments in Xloud Identity