Skip to main content

Resource Groups Schema

Definition

spec:
resource-groups:
- mrn: string # Required: MRN identifier
name: string # Required: Human-readable name
description: string # Optional: Description
default: boolean # Optional: Is default group (default: false)
policy: string # Required: Policy MRN
annotations: # Optional: Key-value metadata
- name: string
value: string # JSON-encoded value

Fields

FieldTypeRequiredDescription
mrnstringYesUnique MRN identifier
namestringYesHuman-readable name
descriptionstringNoResource group description
defaultbooleanNoUse as default for unassigned resources
policystringYesMRN of policy to apply
annotationsarrayNoList of name/value objects for custom metadata

Usage

Resource groups associate policies with resources. When a resource specifies a group, that group's policy is evaluated during Phase 3 (resource phase).

Examples

Basic Resource Groups

resource-groups:
- mrn: "mrn:iam:resource-group:public"
name: public
description: "Publicly accessible resources"
policy: "mrn:iam:policy:allow-all"

- mrn: "mrn:iam:resource-group:default"
name: default
description: "Default for authenticated access"
default: true
policy: "mrn:iam:policy:authenticated-only"

- mrn: "mrn:iam:resource-group:sensitive"
name: sensitive
description: "Requires elevated permissions"
policy: "mrn:iam:policy:clearance-required"

With Annotations

resource-groups:
- mrn: "mrn:iam:resource-group:pii-data"
name: pii-data
description: "Personally identifiable information"
policy: "mrn:iam:policy:pii-access"
annotations:
- name: "compliance"
value: "\"GDPR\""
- name: "retention_days"
value: "365"
- name: "audit_required"
value: "true"

Using YAML Anchors

policies:
- mrn: &share-policy "mrn:iam:policy:share-by-clearance"
name: share-by-clearance
rego: |
package authz
# ... clearance-based policy

resource-groups:
- mrn: "mrn:iam:resource-group:classified"
name: classified
policy: *share-policy

Default Resource Group

Mark one resource group as default: true to apply it to resources that don't specify a group:

resource-groups:
- mrn: "mrn:iam:resource-group:default"
name: default
default: true
policy: "mrn:iam:policy:authenticated-only"