Skip to content

Realm Settings

Use these resources after a Realm exists and you need to shape how that realm behaves in production. They cover audit logging, user onboarding requirements, custom profile fields, signing keys, default scopes, and client policy enforcement.

API Reference

Working YAML Examples

RealmEvents

Use RealmEvents to configure audit logging for user events such as LOGIN and LOGOUT, plus admin event tracking.

apiVersion: realm.keycloak.crossplane.io/v1alpha1
kind: RealmEvents
metadata:
  name: realm-events
spec:
  deletionPolicy: Delete
  forProvider:
    adminEventsDetailsEnabled: true
    adminEventsEnabled: true
    enabledEventTypes:
      - LOGIN
      - LOGOUT
    eventsEnabled: true
    eventsExpiration: 3600
    eventsListeners:
      - jboss-logging
    realmIdRef:
      name: "dev"
      policy:
        resolve: Always
  providerConfigRef:
    name: "keycloak-provider-config"

RequiredAction

Use RequiredAction to enable tasks users must complete, such as setting a password, verifying email, or registering WebAuthn.

apiVersion: realm.keycloak.crossplane.io/v1alpha1
kind: RequiredAction
metadata:
  name: required-action
spec:
  deletionPolicy: Delete
  forProvider:
    alias: webauthn-register
    enabled: true
    name: Webauthn Register
    realmIdRef:
      name: "dev"
      policy:
        resolve: Always
  providerConfigRef:
    name: "keycloak-provider-config"

UserProfile

Use UserProfile to define custom user attributes with validation, permissions, and grouping.

apiVersion: realm.keycloak.crossplane.io/v1alpha1
kind: UserProfile
metadata:
  name: userprofile
spec:
  deletionPolicy: Delete
  forProvider:
    attribute:
      - displayName: ""
        group: ""
        multiValued: false
        name: username
      - displayName: ""
        group: ""
        multiValued: false
        name: email
      - annotations:
          foo: bar
        displayName: Field 1
        enabledWhenScope:
          - offline_access
        group: group1
        multiValued: false
        name: field1
        permissions:
          - edit:
              - admin
              - user
            view:
              - admin
              - user
        requiredForRoles:
          - user
        requiredForScopes:
          - offline_access
        validator:
          - name: person-name-prohibited-characters
          - config:
              error-message: Nope
              pattern: ^[a-z]+$
            name: pattern
    group:
      - annotations:
          foo: bar
          foo2: '{"key":"val"}'
        displayDescription: A first group
        displayHeader: Group 1
        name: group1
    realmIdRef:
      name: "dev"
      policy:
        resolve: Always
    unmanagedAttributePolicy: ENABLED
  providerConfigRef:
    name: "keycloak-provider-config"

RealmLocalization

Use RealmLocalization to override the localized message texts a realm serves for a given locale. Each entry in texts maps a message key to its translation.

apiVersion: realm.keycloak.crossplane.io/v1alpha1
kind: RealmLocalization
metadata:
  name: realm-localization-de
spec:
  deletionPolicy: Delete
  forProvider:
    realmIdRef:
      name: "dev"
      policy:
        resolve: Always
    locale: "de"
    texts:
      Hello: "Hallo"
      loginTitle: "Willkommen"
  providerConfigRef:
    name: "keycloak-provider-config"

KeystoreRsa

Use KeystoreRsa to manage RSA signing keys used for token signing and verification.

apiVersion: realm.keycloak.crossplane.io/v1alpha1
kind: KeystoreRsa
metadata:
  name: keystore-rsa
spec:
  deletionPolicy: Delete
  forProvider:
    active: true
    algorithm: RS256
    certificateSecretRef:
      key: cert
      name: rsa-key
      namespace: dev
    enabled: true
    name: my-rsa-key
    priority: 100
    privateKeySecretRef:
      key: priv
      name: rsa-key
      namespace: dev
    providerId: rsa
    realmIdRef:
      name: "dev"
      policy:
        resolve: Always
  providerConfigRef:
    name: "keycloak-provider-config"

DefaultClientScopes

Use DefaultClientScopes to define which client scopes are assigned automatically to new clients in the realm.

apiVersion: realm.keycloak.crossplane.io/v1alpha1
kind: DefaultClientScopes
metadata:
  name: dev-default-scopes
spec:
  deletionPolicy: Delete
  forProvider:
    realmId: "dev"
    defaultScopes:
      - profile
      - email
      - roles
      - web-origins
      - phone
  providerConfigRef:
    name: "keycloak-provider-config"

OptionalClientScopes

Use OptionalClientScopes to define which scopes clients may request optionally.

apiVersion: realm.keycloak.crossplane.io/v1alpha1
kind: OptionalClientScopes
metadata:
  name: dev-optional-scopes
spec:
  deletionPolicy: Delete
  forProvider:
    realmId: "dev"
    optionalScopes:
      - acr
      - role_list
  providerConfigRef:
    name: "keycloak-provider-config"

ClientPolicyProfile

Use ClientPolicyProfile to define policy profiles with executors that enforce standards on clients.

apiVersion: realm.keycloak.crossplane.io/v1alpha1
kind: ClientPolicyProfile
metadata:
  name: client-policy-profile
spec:
  deletionPolicy: Delete
  forProvider:
    executor:
      - configuration:
          auto-configure: "true"
        name: intent-client-bind-checker
      - name: secure-session
    name: my-profile
    realmIdRef:
      name: "dev"
      policy:
        resolve: Always
  providerConfigRef:
    name: "keycloak-provider-config"

ClientPolicyProfilePolicy

Use ClientPolicyProfilePolicy to define the conditions that trigger one or more client policy profiles.

apiVersion: realm.keycloak.crossplane.io/v1alpha1
kind: ClientPolicyProfilePolicy
metadata:
  name: client-policy-profile-policy
spec:
  deletionPolicy: Delete
  forProvider:
    condition:
      - configuration:
          protocol: openid-connect
        name: client-type
    description: Some desc
    name: my-policy
    profilesRefs:
      - name: client-policy-profile
    realmIdRef:
      name: "dev"
      policy:
        resolve: Always
  providerConfigRef:
    name: "keycloak-provider-config"

Key Fields

ResourceKey fieldsDescription
RealmEventsrealmIdRef, eventsEnabled, enabledEventTypes, eventsListeners, adminEventsEnabled, adminEventsDetailsEnabled, eventsExpirationControls user and admin audit event capture and retention.
RequiredActionrealmIdRef, alias, name, enabledEnables built-in actions users must complete during account lifecycle flows.
UserProfilerealmIdRef, attribute, group, unmanagedAttributePolicyDefines custom profile schema, validation, permissions, and grouping.
RealmLocalizationrealmIdRef, locale, textsOverrides localized message texts for a realm and locale.
KeystoreRsarealmIdRef, name, providerId, algorithm, active, enabled, priority, privateKeySecretRef, certificateSecretRefManages RSA key material used by the realm.
DefaultClientScopesrealmId, defaultScopesDeclares scopes assigned automatically to new clients.
OptionalClientScopesrealmId, optionalScopesDeclares scopes clients can request optionally.
ClientPolicyProfilerealmIdRef, name, executorDefines reusable client policy executors.
ClientPolicyProfilePolicyrealmIdRef, name, description, condition, profilesRefsBinds policy conditions to one or more client policy profiles.

Related Resources