Skip to content

cfgate.iocfgate v0.2.0-alpha.11 · Release documentation

CloudflareAccessPolicy schema

These fields come from the released CRD. Required means required when its parent object is present. Schema defaults do not describe every runtime fallback.

FieldTypeRequired in parentSchema defaultDescription
FieldTypeRequired in parentSchema defaultDescription
“objectnononeCloudflareAccessPolicy is the Schema for the cloudflareaccesspolicies API.

CloudflareAccessPolicy manages a reusable account-level Cloudflare Access Policy.
CloudflareAccessApplication attaches reusable policies to Gateway API targets.

Access rules are organized into implementation tiers based on IdP requirements:
- P0: IP, IPList, Country, Everyone, ServiceToken, AnyValidServiceToken (no IdP)
- P1: Email, EmailList, EmailDomain, OIDCClaim (basic IdP required)
- P2: GSuiteGroup (Google Workspace required)
- P3: not in current product scope (Certificate, CommonName, Group, GitHub, Azure, Okta, SAML, etc.)

Status conditions:
- Ready: policy is synced and service tokens are ready when configured
- CredentialsValid: Cloudflare credentials have been validated
- ServiceTokensReady: all service tokens have been created
- PolicySynced: reusable Access policy exists in Cloudflare
FieldTypeRequired in parentSchema defaultDescription
apiVersionstringnononeAPIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
FieldTypeRequired in parentSchema defaultDescription
kindstringnononeKind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
FieldTypeRequired in parentSchema defaultDescription
metadataobjectnonone
FieldTypeRequired in parentSchema defaultDescription
specobjectnononeCloudflareAccessPolicySpec defines a reusable Cloudflare Access policy.

CloudflareAccessPolicySpec manages account-level reusable Access policies. Applications
attach these policies through CloudflareAccessApplication policyRefs.

Validation for spec:

x-kubernetes-validations:
- message: include rules are required
rule: size(self.include) > 0
FieldTypeRequired in parentSchema defaultDescription
spec.approvalGroupsarraynononeApprovalGroups defines who can approve access.

Validation for spec.approvalGroups:

maxItems: 10
FieldTypeRequired in parentSchema defaultDescription
spec.approvalGroups[]objectnononeApprovalGroup defines who can approve access requests for approval-required policies.

ApprovalGroup specifies approvers by email address or email list UUID. When a
policy requires approval, users matching this group can approve or deny access requests.

Validation for spec.approvalGroups[]:

x-kubernetes-validations:
- message: at least one approver (emails or emailListUuid) must be specified
rule: (has(self.emails) && size(self.emails) > 0) || has(self.emailListUuid)
FieldTypeRequired in parentSchema defaultDescription
spec.approvalGroups[].approvalsNeededintegerno1ApprovalsNeeded is number of approvals required.

Validation for spec.approvalGroups[].approvalsNeeded:

minimum: 1
FieldTypeRequired in parentSchema defaultDescription
spec.approvalGroups[].emailListUuidstringnononeEmailListUUID is a Cloudflare Access email list UUID whose members can approve.

Validation for spec.approvalGroups[].emailListUuid:

maxLength: 36
FieldTypeRequired in parentSchema defaultDescription
spec.approvalGroups[].emailsarraynononeEmails of approvers.

Validation for spec.approvalGroups[].emails:

maxItems: 50
FieldTypeRequired in parentSchema defaultDescription
spec.approvalGroups[].emails[]stringnonone
FieldTypeRequired in parentSchema defaultDescription
spec.approvalRequiredbooleannofalseApprovalRequired requires approval from specific users.
FieldTypeRequired in parentSchema defaultDescription
spec.cloudflareRefobjectyesnoneCloudflareRef references Cloudflare credentials.
FieldTypeRequired in parentSchema defaultDescription
spec.cloudflareRef.accountIdstringnononeAccountID is the Cloudflare account ID.

Validation for spec.cloudflareRef.accountId:

maxLength: 32
FieldTypeRequired in parentSchema defaultDescription
spec.cloudflareRef.accountNamestringnononeAccountName is the Cloudflare account name (looked up via API).

Validation for spec.cloudflareRef.accountName:

maxLength: 255
FieldTypeRequired in parentSchema defaultDescription
spec.cloudflareRef.namestringyesnoneName of the secret containing credentials.

Validation for spec.cloudflareRef.name:

maxLength: 253
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.cloudflareRef.namespacestringnononeNamespace of the secret (defaults to policy namespace).
FieldTypeRequired in parentSchema defaultDescription
spec.cloudflareRef.secretKeysobjectnononeSecretKeys selects credential data keys; omitted keys use their defaults.
FieldTypeRequired in parentSchema defaultDescription
spec.cloudflareRef.secretKeys.apiTokenstringno"CLOUDFLARE_API_TOKEN"APIToken is the key name for the Cloudflare API token.

Validation for spec.cloudflareRef.secretKeys.apiToken:

maxLength: 253
FieldTypeRequired in parentSchema defaultDescription
spec.decisionstringyes"allow"Decision is the policy action.

Allowed values for spec.decision: ["allow","deny","bypass","non_identity"].

FieldTypeRequired in parentSchema defaultDescription
spec.excludearraynononeExclude rules (if ANY match, policy does not apply).

Validation for spec.exclude:

maxItems: 25
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[]objectnononeAccessRule defines identity matching criteria for Access policies.

AccessRule specifies conditions that identify users or services. Rules are organized
into implementation tiers based on IdP requirements:
- P0 (no IdP): IP, IPList, Country, Everyone, ServiceToken, AnyValidServiceToken
- P1 (basic IdP): Email, EmailList, EmailDomain, OIDCClaim
- P2 (Google Workspace): GSuiteGroup
- P3 (not in current product scope): Certificate, CommonName, Group, GitHub, Azure, Okta, SAML, etc.

Selector types map to the Cloudflare API: IPRule, IPListRule, CountryRule,
EveryoneRule, ServiceTokenRule, AnyValidServiceTokenRule, EmailRule, DomainRule,
EmailListRule, AccessOIDCClaimRule, GSuiteGroupRule.

Validation for spec.exclude[]:

x-kubernetes-validations:
- message: exactly one rule type must be specified
rule: "[has(self.ip), has(self.ipList), has(self.country), has(self.everyone),
has(self.serviceToken), has(self.anyValidServiceToken), has(self.email),
has(self.emailList), has(self.emailDomain), has(self.oidcClaim),
has(self.gsuiteGroup), has(self.group)].filter(x, x).size() == 1"
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].anyValidServiceTokenbooleannononeAnyValidServiceToken matches any valid service token. When present, it must be true.
Omit the rule to disable it.
SDK: AnyValidServiceTokenRule

Validation for spec.exclude[].anyValidServiceToken:

x-kubernetes-validations:
- message: must be true; omit the rule to disable it
rule: self == true
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].countryobjectnononeCountry matches source country codes (ISO 3166-1 alpha-2).
SDK: CountryRule
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].country.codesarrayyesnoneCodes are ISO 3166-1 alpha-2 country codes.

Validation for spec.exclude[].country.codes:

maxItems: 50
minItems: 1
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].country.codes[]stringnonone
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].emailobjectnononeEmail matches specific email addresses.
SDK: EmailRule
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].email.addressesarrayyesnoneAddresses to match.

Validation for spec.exclude[].email.addresses:

maxItems: 50
minItems: 1
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].email.addresses[]stringnonone
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].emailDomainobjectnononeEmailDomain matches email domain suffix.
SDK: DomainRule
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].emailDomain.domainstringyesnoneDomain suffix (e.g., “example.com”).
Max 253: RFC 1035 section 2.3.4 FQDN presentation-format limit.

Validation for spec.exclude[].emailDomain.domain:

maxLength: 253
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].emailListobjectnononeEmailList references a Cloudflare Access email list.
SDK: EmailListRule

Validation for spec.exclude[].emailList:

x-kubernetes-validations:
- message: id must be specified
rule: has(self.id)
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].emailList.idstringnononeID of the Access list in Cloudflare.

Validation for spec.exclude[].emailList.id:

maxLength: 36
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].emailList.namestringnononeName is not supported for lookup in v1alpha1. Specify id instead.
Deprecated: use id.

Validation for spec.exclude[].emailList.name:

maxLength: 255
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].everyonebooleannononeEveryone matches all users. When present, it must be true.
Omit the rule to disable it.
SDK: EveryoneRule

Validation for spec.exclude[].everyone:

x-kubernetes-validations:
- message: must be true; omit the rule to disable it
rule: self == true
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].groupobjectnononeGroup matches a Cloudflare Access Group by ID.
SDK: GroupRule
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].group.idstringyesnoneID is the Cloudflare Access Group ID.

Validation for spec.exclude[].group.id:

maxLength: 36
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].gsuiteGroupobjectnononeGSuiteGroup matches Google Workspace groups.
SDK: GSuiteGroupRule
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].gsuiteGroup.emailstringyesnoneEmail is the Google Workspace group email.

Validation for spec.exclude[].gsuiteGroup.email:

maxLength: 320
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].gsuiteGroup.identityProviderIdstringyesnoneIdentityProviderID in Cloudflare.

Validation for spec.exclude[].gsuiteGroup.identityProviderId:

maxLength: 36
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].ipobjectnononeIP matches source IP CIDR ranges.
SDK: IPRule
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].ip.rangesarrayyesnoneRanges are CIDR blocks (IPv4 or IPv6).

Validation for spec.exclude[].ip.ranges:

maxItems: 50
minItems: 1
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].ip.ranges[]stringnonone
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].ipListobjectnononeIPList references a Cloudflare IP List.
SDK: IPListRule

Validation for spec.exclude[].ipList:

x-kubernetes-validations:
- message: id must be specified
rule: has(self.id)
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].ipList.idstringnononeID of the IP list in Cloudflare.

Validation for spec.exclude[].ipList.id:

maxLength: 36
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].ipList.namestringnononeName is not supported for lookup in v1alpha1. Specify id instead.
Deprecated: use id.

Validation for spec.exclude[].ipList.name:

maxLength: 255
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].oidcClaimobjectnononeOIDCClaim matches OIDC token claims.
SDK: AccessOIDCClaimRule
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].oidcClaim.claimNamestringyesnoneClaimName is the OIDC claim to match.

Validation for spec.exclude[].oidcClaim.claimName:

maxLength: 255
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].oidcClaim.claimValuestringyesnoneClaimValue is the expected value.

Validation for spec.exclude[].oidcClaim.claimValue:

maxLength: 255
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].oidcClaim.identityProviderIdstringyesnoneIdentityProviderID in Cloudflare.

Validation for spec.exclude[].oidcClaim.identityProviderId:

maxLength: 36
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].serviceTokenobjectnononeServiceToken matches a specific service token by ID.
SDK: ServiceTokenRule

Validation for spec.exclude[].serviceToken:

x-kubernetes-validations:
- message: either tokenId or name must be specified
rule: has(self.tokenId) || has(self.name)
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].serviceToken.namestringnononeName references an entry in spec.serviceTokens. The controller replaces it
with the created Cloudflare service token ID during policy sync.

Validation for spec.exclude[].serviceToken.name:

maxLength: 255
FieldTypeRequired in parentSchema defaultDescription
spec.exclude[].serviceToken.tokenIdstringnononeTokenID is the Cloudflare service token ID.

Validation for spec.exclude[].serviceToken.tokenId:

maxLength: 36
FieldTypeRequired in parentSchema defaultDescription
spec.includearrayyesnoneInclude rules (ANY must match for policy to apply).

Validation for spec.include:

maxItems: 25
minItems: 1
FieldTypeRequired in parentSchema defaultDescription
spec.include[]objectnononeAccessRule defines identity matching criteria for Access policies.

AccessRule specifies conditions that identify users or services. Rules are organized
into implementation tiers based on IdP requirements:
- P0 (no IdP): IP, IPList, Country, Everyone, ServiceToken, AnyValidServiceToken
- P1 (basic IdP): Email, EmailList, EmailDomain, OIDCClaim
- P2 (Google Workspace): GSuiteGroup
- P3 (not in current product scope): Certificate, CommonName, Group, GitHub, Azure, Okta, SAML, etc.

Selector types map to the Cloudflare API: IPRule, IPListRule, CountryRule,
EveryoneRule, ServiceTokenRule, AnyValidServiceTokenRule, EmailRule, DomainRule,
EmailListRule, AccessOIDCClaimRule, GSuiteGroupRule.

Validation for spec.include[]:

x-kubernetes-validations:
- message: exactly one rule type must be specified
rule: "[has(self.ip), has(self.ipList), has(self.country), has(self.everyone),
has(self.serviceToken), has(self.anyValidServiceToken), has(self.email),
has(self.emailList), has(self.emailDomain), has(self.oidcClaim),
has(self.gsuiteGroup), has(self.group)].filter(x, x).size() == 1"
FieldTypeRequired in parentSchema defaultDescription
spec.include[].anyValidServiceTokenbooleannononeAnyValidServiceToken matches any valid service token. When present, it must be true.
Omit the rule to disable it.
SDK: AnyValidServiceTokenRule

Validation for spec.include[].anyValidServiceToken:

x-kubernetes-validations:
- message: must be true; omit the rule to disable it
rule: self == true
FieldTypeRequired in parentSchema defaultDescription
spec.include[].countryobjectnononeCountry matches source country codes (ISO 3166-1 alpha-2).
SDK: CountryRule
FieldTypeRequired in parentSchema defaultDescription
spec.include[].country.codesarrayyesnoneCodes are ISO 3166-1 alpha-2 country codes.

Validation for spec.include[].country.codes:

maxItems: 50
minItems: 1
FieldTypeRequired in parentSchema defaultDescription
spec.include[].country.codes[]stringnonone
FieldTypeRequired in parentSchema defaultDescription
spec.include[].emailobjectnononeEmail matches specific email addresses.
SDK: EmailRule
FieldTypeRequired in parentSchema defaultDescription
spec.include[].email.addressesarrayyesnoneAddresses to match.

Validation for spec.include[].email.addresses:

maxItems: 50
minItems: 1
FieldTypeRequired in parentSchema defaultDescription
spec.include[].email.addresses[]stringnonone
FieldTypeRequired in parentSchema defaultDescription
spec.include[].emailDomainobjectnononeEmailDomain matches email domain suffix.
SDK: DomainRule
FieldTypeRequired in parentSchema defaultDescription
spec.include[].emailDomain.domainstringyesnoneDomain suffix (e.g., “example.com”).
Max 253: RFC 1035 section 2.3.4 FQDN presentation-format limit.

Validation for spec.include[].emailDomain.domain:

maxLength: 253
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.include[].emailListobjectnononeEmailList references a Cloudflare Access email list.
SDK: EmailListRule

Validation for spec.include[].emailList:

x-kubernetes-validations:
- message: id must be specified
rule: has(self.id)
FieldTypeRequired in parentSchema defaultDescription
spec.include[].emailList.idstringnononeID of the Access list in Cloudflare.

Validation for spec.include[].emailList.id:

maxLength: 36
FieldTypeRequired in parentSchema defaultDescription
spec.include[].emailList.namestringnononeName is not supported for lookup in v1alpha1. Specify id instead.
Deprecated: use id.

Validation for spec.include[].emailList.name:

maxLength: 255
FieldTypeRequired in parentSchema defaultDescription
spec.include[].everyonebooleannononeEveryone matches all users. When present, it must be true.
Omit the rule to disable it.
SDK: EveryoneRule

Validation for spec.include[].everyone:

x-kubernetes-validations:
- message: must be true; omit the rule to disable it
rule: self == true
FieldTypeRequired in parentSchema defaultDescription
spec.include[].groupobjectnononeGroup matches a Cloudflare Access Group by ID.
SDK: GroupRule
FieldTypeRequired in parentSchema defaultDescription
spec.include[].group.idstringyesnoneID is the Cloudflare Access Group ID.

Validation for spec.include[].group.id:

maxLength: 36
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.include[].gsuiteGroupobjectnononeGSuiteGroup matches Google Workspace groups.
SDK: GSuiteGroupRule
FieldTypeRequired in parentSchema defaultDescription
spec.include[].gsuiteGroup.emailstringyesnoneEmail is the Google Workspace group email.

Validation for spec.include[].gsuiteGroup.email:

maxLength: 320
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.include[].gsuiteGroup.identityProviderIdstringyesnoneIdentityProviderID in Cloudflare.

Validation for spec.include[].gsuiteGroup.identityProviderId:

maxLength: 36
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.include[].ipobjectnononeIP matches source IP CIDR ranges.
SDK: IPRule
FieldTypeRequired in parentSchema defaultDescription
spec.include[].ip.rangesarrayyesnoneRanges are CIDR blocks (IPv4 or IPv6).

Validation for spec.include[].ip.ranges:

maxItems: 50
minItems: 1
FieldTypeRequired in parentSchema defaultDescription
spec.include[].ip.ranges[]stringnonone
FieldTypeRequired in parentSchema defaultDescription
spec.include[].ipListobjectnononeIPList references a Cloudflare IP List.
SDK: IPListRule

Validation for spec.include[].ipList:

x-kubernetes-validations:
- message: id must be specified
rule: has(self.id)
FieldTypeRequired in parentSchema defaultDescription
spec.include[].ipList.idstringnononeID of the IP list in Cloudflare.

Validation for spec.include[].ipList.id:

maxLength: 36
FieldTypeRequired in parentSchema defaultDescription
spec.include[].ipList.namestringnononeName is not supported for lookup in v1alpha1. Specify id instead.
Deprecated: use id.

Validation for spec.include[].ipList.name:

maxLength: 255
FieldTypeRequired in parentSchema defaultDescription
spec.include[].oidcClaimobjectnononeOIDCClaim matches OIDC token claims.
SDK: AccessOIDCClaimRule
FieldTypeRequired in parentSchema defaultDescription
spec.include[].oidcClaim.claimNamestringyesnoneClaimName is the OIDC claim to match.

Validation for spec.include[].oidcClaim.claimName:

maxLength: 255
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.include[].oidcClaim.claimValuestringyesnoneClaimValue is the expected value.

Validation for spec.include[].oidcClaim.claimValue:

maxLength: 255
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.include[].oidcClaim.identityProviderIdstringyesnoneIdentityProviderID in Cloudflare.

Validation for spec.include[].oidcClaim.identityProviderId:

maxLength: 36
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.include[].serviceTokenobjectnononeServiceToken matches a specific service token by ID.
SDK: ServiceTokenRule

Validation for spec.include[].serviceToken:

x-kubernetes-validations:
- message: either tokenId or name must be specified
rule: has(self.tokenId) || has(self.name)
FieldTypeRequired in parentSchema defaultDescription
spec.include[].serviceToken.namestringnononeName references an entry in spec.serviceTokens. The controller replaces it
with the created Cloudflare service token ID during policy sync.

Validation for spec.include[].serviceToken.name:

maxLength: 255
FieldTypeRequired in parentSchema defaultDescription
spec.include[].serviceToken.tokenIdstringnononeTokenID is the Cloudflare service token ID.

Validation for spec.include[].serviceToken.tokenId:

maxLength: 36
FieldTypeRequired in parentSchema defaultDescription
spec.namestringyesnoneName is the Cloudflare Access policy display name.

Validation for spec.name:

maxLength: 255
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.purposeJustificationPromptstringnononePurposeJustificationPrompt is the prompt shown to user.

Validation for spec.purposeJustificationPrompt:

maxLength: 1024
FieldTypeRequired in parentSchema defaultDescription
spec.purposeJustificationRequiredbooleannofalsePurposeJustificationRequired requires user to provide justification.
FieldTypeRequired in parentSchema defaultDescription
spec.requirearraynononeRequire rules (ALL must match for policy to apply).

Validation for spec.require:

maxItems: 25
FieldTypeRequired in parentSchema defaultDescription
spec.require[]objectnononeAccessRule defines identity matching criteria for Access policies.

AccessRule specifies conditions that identify users or services. Rules are organized
into implementation tiers based on IdP requirements:
- P0 (no IdP): IP, IPList, Country, Everyone, ServiceToken, AnyValidServiceToken
- P1 (basic IdP): Email, EmailList, EmailDomain, OIDCClaim
- P2 (Google Workspace): GSuiteGroup
- P3 (not in current product scope): Certificate, CommonName, Group, GitHub, Azure, Okta, SAML, etc.

Selector types map to the Cloudflare API: IPRule, IPListRule, CountryRule,
EveryoneRule, ServiceTokenRule, AnyValidServiceTokenRule, EmailRule, DomainRule,
EmailListRule, AccessOIDCClaimRule, GSuiteGroupRule.

Validation for spec.require[]:

x-kubernetes-validations:
- message: exactly one rule type must be specified
rule: "[has(self.ip), has(self.ipList), has(self.country), has(self.everyone),
has(self.serviceToken), has(self.anyValidServiceToken), has(self.email),
has(self.emailList), has(self.emailDomain), has(self.oidcClaim),
has(self.gsuiteGroup), has(self.group)].filter(x, x).size() == 1"
FieldTypeRequired in parentSchema defaultDescription
spec.require[].anyValidServiceTokenbooleannononeAnyValidServiceToken matches any valid service token. When present, it must be true.
Omit the rule to disable it.
SDK: AnyValidServiceTokenRule

Validation for spec.require[].anyValidServiceToken:

x-kubernetes-validations:
- message: must be true; omit the rule to disable it
rule: self == true
FieldTypeRequired in parentSchema defaultDescription
spec.require[].countryobjectnononeCountry matches source country codes (ISO 3166-1 alpha-2).
SDK: CountryRule
FieldTypeRequired in parentSchema defaultDescription
spec.require[].country.codesarrayyesnoneCodes are ISO 3166-1 alpha-2 country codes.

Validation for spec.require[].country.codes:

maxItems: 50
minItems: 1
FieldTypeRequired in parentSchema defaultDescription
spec.require[].country.codes[]stringnonone
FieldTypeRequired in parentSchema defaultDescription
spec.require[].emailobjectnononeEmail matches specific email addresses.
SDK: EmailRule
FieldTypeRequired in parentSchema defaultDescription
spec.require[].email.addressesarrayyesnoneAddresses to match.

Validation for spec.require[].email.addresses:

maxItems: 50
minItems: 1
FieldTypeRequired in parentSchema defaultDescription
spec.require[].email.addresses[]stringnonone
FieldTypeRequired in parentSchema defaultDescription
spec.require[].emailDomainobjectnononeEmailDomain matches email domain suffix.
SDK: DomainRule
FieldTypeRequired in parentSchema defaultDescription
spec.require[].emailDomain.domainstringyesnoneDomain suffix (e.g., “example.com”).
Max 253: RFC 1035 section 2.3.4 FQDN presentation-format limit.

Validation for spec.require[].emailDomain.domain:

maxLength: 253
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.require[].emailListobjectnononeEmailList references a Cloudflare Access email list.
SDK: EmailListRule

Validation for spec.require[].emailList:

x-kubernetes-validations:
- message: id must be specified
rule: has(self.id)
FieldTypeRequired in parentSchema defaultDescription
spec.require[].emailList.idstringnononeID of the Access list in Cloudflare.

Validation for spec.require[].emailList.id:

maxLength: 36
FieldTypeRequired in parentSchema defaultDescription
spec.require[].emailList.namestringnononeName is not supported for lookup in v1alpha1. Specify id instead.
Deprecated: use id.

Validation for spec.require[].emailList.name:

maxLength: 255
FieldTypeRequired in parentSchema defaultDescription
spec.require[].everyonebooleannononeEveryone matches all users. When present, it must be true.
Omit the rule to disable it.
SDK: EveryoneRule

Validation for spec.require[].everyone:

x-kubernetes-validations:
- message: must be true; omit the rule to disable it
rule: self == true
FieldTypeRequired in parentSchema defaultDescription
spec.require[].groupobjectnononeGroup matches a Cloudflare Access Group by ID.
SDK: GroupRule
FieldTypeRequired in parentSchema defaultDescription
spec.require[].group.idstringyesnoneID is the Cloudflare Access Group ID.

Validation for spec.require[].group.id:

maxLength: 36
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.require[].gsuiteGroupobjectnononeGSuiteGroup matches Google Workspace groups.
SDK: GSuiteGroupRule
FieldTypeRequired in parentSchema defaultDescription
spec.require[].gsuiteGroup.emailstringyesnoneEmail is the Google Workspace group email.

Validation for spec.require[].gsuiteGroup.email:

maxLength: 320
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.require[].gsuiteGroup.identityProviderIdstringyesnoneIdentityProviderID in Cloudflare.

Validation for spec.require[].gsuiteGroup.identityProviderId:

maxLength: 36
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.require[].ipobjectnononeIP matches source IP CIDR ranges.
SDK: IPRule
FieldTypeRequired in parentSchema defaultDescription
spec.require[].ip.rangesarrayyesnoneRanges are CIDR blocks (IPv4 or IPv6).

Validation for spec.require[].ip.ranges:

maxItems: 50
minItems: 1
FieldTypeRequired in parentSchema defaultDescription
spec.require[].ip.ranges[]stringnonone
FieldTypeRequired in parentSchema defaultDescription
spec.require[].ipListobjectnononeIPList references a Cloudflare IP List.
SDK: IPListRule

Validation for spec.require[].ipList:

x-kubernetes-validations:
- message: id must be specified
rule: has(self.id)
FieldTypeRequired in parentSchema defaultDescription
spec.require[].ipList.idstringnononeID of the IP list in Cloudflare.

Validation for spec.require[].ipList.id:

maxLength: 36
FieldTypeRequired in parentSchema defaultDescription
spec.require[].ipList.namestringnononeName is not supported for lookup in v1alpha1. Specify id instead.
Deprecated: use id.

Validation for spec.require[].ipList.name:

maxLength: 255
FieldTypeRequired in parentSchema defaultDescription
spec.require[].oidcClaimobjectnononeOIDCClaim matches OIDC token claims.
SDK: AccessOIDCClaimRule
FieldTypeRequired in parentSchema defaultDescription
spec.require[].oidcClaim.claimNamestringyesnoneClaimName is the OIDC claim to match.

Validation for spec.require[].oidcClaim.claimName:

maxLength: 255
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.require[].oidcClaim.claimValuestringyesnoneClaimValue is the expected value.

Validation for spec.require[].oidcClaim.claimValue:

maxLength: 255
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.require[].oidcClaim.identityProviderIdstringyesnoneIdentityProviderID in Cloudflare.

Validation for spec.require[].oidcClaim.identityProviderId:

maxLength: 36
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.require[].serviceTokenobjectnononeServiceToken matches a specific service token by ID.
SDK: ServiceTokenRule

Validation for spec.require[].serviceToken:

x-kubernetes-validations:
- message: either tokenId or name must be specified
rule: has(self.tokenId) || has(self.name)
FieldTypeRequired in parentSchema defaultDescription
spec.require[].serviceToken.namestringnononeName references an entry in spec.serviceTokens. The controller replaces it
with the created Cloudflare service token ID during policy sync.

Validation for spec.require[].serviceToken.name:

maxLength: 255
FieldTypeRequired in parentSchema defaultDescription
spec.require[].serviceToken.tokenIdstringnononeTokenID is the Cloudflare service token ID.

Validation for spec.require[].serviceToken.tokenId:

maxLength: 36
FieldTypeRequired in parentSchema defaultDescription
spec.serviceTokensarraynononeServiceTokens for machine-to-machine authentication.

Validation for spec.serviceTokens:

maxItems: 10
x-kubernetes-validations:
- message: service token names must be unique
rule: self.all(t, self.filter(x, x.name == t.name).size() == 1)
- message: service token destination Secrets must be unique
rule: self.all(t, self.filter(x, x.secretRef.name == t.secretRef.name).size() ==
1)
FieldTypeRequired in parentSchema defaultDescription
spec.serviceTokens[]objectnononeServiceTokenConfig defines configuration for Cloudflare Access service tokens.

ServiceTokenConfig enables machine-to-machine authentication. The controller creates
the service token in Cloudflare and stores the credentials (client ID and secret) in
the referenced Kubernetes Secret. The secret is only visible at creation time.
FieldTypeRequired in parentSchema defaultDescription
spec.serviceTokens[].durationstringno"8760h"Duration is the token validity period using Go duration format.
Only hours (h) supported by Cloudflare API. Use “8760h” for 1 year.

Validation for spec.serviceTokens[].duration:

pattern: ^[1-9][0-9]*h$
FieldTypeRequired in parentSchema defaultDescription
spec.serviceTokens[].namestringyesnoneName is the token display name.

Validation for spec.serviceTokens[].name:

maxLength: 255
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.serviceTokens[].rotationOverlapstringno"0h"RotationOverlap keeps the previous secret valid during credential distribution.
Zero expires the previous secret immediately. Consumers must reload credentials.

Validation for spec.serviceTokens[].rotationOverlap:

pattern: ^(0|[1-9][0-9]{0,2})h$
x-kubernetes-validations:
- message: rotationOverlap must not exceed 720h
rule: duration(self) <= duration('720h')
FieldTypeRequired in parentSchema defaultDescription
spec.serviceTokens[].secretRefobjectyesnoneSecretRef stores the generated token credentials.
FieldTypeRequired in parentSchema defaultDescription
spec.serviceTokens[].secretRef.namestringyesnoneName of the Secret.

Validation for spec.serviceTokens[].secretRef.name:

maxLength: 253
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
spec.sessionDurationstringnononeSessionDuration overrides application session duration for this policy.

Validation for spec.sessionDuration:

maxLength: 32
pattern: ^([0-9]+(ns|us|ms|s|m|h))+$
FieldTypeRequired in parentSchema defaultDescription
statusobjectnononeCloudflareAccessPolicyStatus defines the observed state of a CloudflareAccessPolicy resource.
FieldTypeRequired in parentSchema defaultDescription
status.accountIdstringnononeAccountID is the Cloudflare account ID used for this policy.
FieldTypeRequired in parentSchema defaultDescription
status.appCountintegernononeAppCount is the number of Access Applications currently using this policy.

Validation for status.appCount:

format: int64
FieldTypeRequired in parentSchema defaultDescription
status.conditionsarraynononeConditions describe current state.

Validation for status.conditions:

x-kubernetes-list-map-keys:
- type
x-kubernetes-list-type: map
FieldTypeRequired in parentSchema defaultDescription
status.conditions[]objectnononeCondition contains details for one aspect of the current state of this API Resource.
FieldTypeRequired in parentSchema defaultDescription
status.conditions[].lastTransitionTimestringyesnonelastTransitionTime is the last time the condition transitioned from one status to another.
This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.

Validation for status.conditions[].lastTransitionTime:

format: date-time
FieldTypeRequired in parentSchema defaultDescription
status.conditions[].messagestringyesnonemessage is a human readable message indicating details about the transition.
This may be an empty string.

Validation for status.conditions[].message:

maxLength: 32768
FieldTypeRequired in parentSchema defaultDescription
status.conditions[].observedGenerationintegernononeobservedGeneration represents the .metadata.generation that the condition was set based upon.
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
with respect to the current state of the instance.

Validation for status.conditions[].observedGeneration:

format: int64
minimum: 0
FieldTypeRequired in parentSchema defaultDescription
status.conditions[].reasonstringyesnonereason contains a programmatic identifier indicating the reason for the condition’s last transition.
Producers of specific condition types may define expected values and meanings for this field,
and whether the values are considered a guaranteed API.
The value should be a CamelCase string.
This field may not be empty.

Validation for status.conditions[].reason:

maxLength: 1024
minLength: 1
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
FieldTypeRequired in parentSchema defaultDescription
status.conditions[].statusstringyesnonestatus of the condition, one of True, False, Unknown.

Allowed values for status.conditions[].status: ["True","False","Unknown"].

FieldTypeRequired in parentSchema defaultDescription
status.conditions[].typestringyesnonetype of condition in CamelCase or in foo.example.com/CamelCase.

Validation for status.conditions[].type:

maxLength: 316
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
FieldTypeRequired in parentSchema defaultDescription
status.credentialSecretKeysobjectnononeCredentialSecretKeys preserves selected token keys for cleanup.
FieldTypeRequired in parentSchema defaultDescription
status.credentialSecretKeys.apiTokenstringno"CLOUDFLARE_API_TOKEN"APIToken is the key name for the Cloudflare API token.

Validation for status.credentialSecretKeys.apiToken:

maxLength: 253
FieldTypeRequired in parentSchema defaultDescription
status.credentialSecretRefobjectnononeCredentialSecretRef is the resolved credentials Secret used for cleanup.
The namespace is always stored explicitly.
FieldTypeRequired in parentSchema defaultDescription
status.credentialSecretRef.namestringyesnoneName of the secret.

Validation for status.credentialSecretRef.name:

maxLength: 253
minLength: 1
FieldTypeRequired in parentSchema defaultDescription
status.credentialSecretRef.namespacestringnononeNamespace of the secret. Defaults to the resource’s namespace if empty.

Validation for status.credentialSecretRef.namespace:

maxLength: 63
FieldTypeRequired in parentSchema defaultDescription
status.observedGenerationintegernononeObservedGeneration is the last generation processed.

Validation for status.observedGeneration:

format: int64
FieldTypeRequired in parentSchema defaultDescription
status.ownerIdstringnononeOwnerID binds remote Access resources to this installation and CR incarnation.

Validation for status.ownerId:

pattern: ^[a-f0-9]{28}$
FieldTypeRequired in parentSchema defaultDescription
status.policyIdstringnononePolicyID is the Cloudflare Access reusable policy ID.
FieldTypeRequired in parentSchema defaultDescription
status.reusablebooleannononeReusable reports whether Cloudflare returned this policy as reusable.
FieldTypeRequired in parentSchema defaultDescription
status.serviceTokenIdsobjectnononeServiceTokenIDs maps token names to Cloudflare IDs.
FieldTypeRequired in parentSchema defaultDescription
status.serviceTokenIds[key]stringnonone