-
Notifications
You must be signed in to change notification settings - Fork 151
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Operator disable create usergroup if detect users enabled exter…
…nal auth - use internal Authentication CR Type "" or IntegratedOAuth to indicate if Operator should create usergroup or not CRD has validation to only allow "IntegratedOAuth", "", "None" or "OIDC" - only grant "get, watch , list" as least permission - remove duplicated rbac for "ingress", has been defined in other places - add object into cache - add CRD into unit-test - add unit-test: since we dont have auth CR, it should not create usergroup Signed-off-by: Wen Zhou <wenzhou@redhat.com>
- Loading branch information
Showing
9 changed files
with
227 additions
and
27 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
175 changes: 175 additions & 0 deletions
175
config/crd/external/config.openshift.io_authentications.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,175 @@ | ||
--- | ||
apiVersion: apiextensions.k8s.io/v1 | ||
kind: CustomResourceDefinition | ||
metadata: | ||
annotations: | ||
controller-gen.kubebuilder.io/version: v0.16.1 | ||
name: authentications.config.openshift.io | ||
spec: | ||
group: config.openshift.io | ||
names: | ||
kind: Authentication | ||
listKind: AuthenticationList | ||
plural: authentications | ||
singular: authentication | ||
scope: Cluster | ||
versions: | ||
- name: v1 | ||
schema: | ||
openAPIV3Schema: | ||
description: |- | ||
Authentication specifies cluster-wide settings for authentication (like OAuth and | ||
webhook token authenticators). The canonical name of an instance is `cluster`. | ||
Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer). | ||
properties: | ||
apiVersion: | ||
description: |- | ||
APIVersion 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 | ||
type: string | ||
kind: | ||
description: |- | ||
Kind 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 | ||
type: string | ||
metadata: | ||
type: object | ||
spec: | ||
description: spec holds user settable values for configuration | ||
properties: | ||
oauthMetadata: | ||
description: |- | ||
oauthMetadata contains the discovery endpoint data for OAuth 2.0 | ||
Authorization Server Metadata for an external OAuth server. | ||
This discovery document can be viewed from its served location: | ||
oc get --raw '/.well-known/oauth-authorization-server' | ||
For further details, see the IETF Draft: | ||
https://tools.ietf.org/html/draft-ietf-oauth-discovery-04#section-2 | ||
If oauthMetadata.name is non-empty, this value has precedence | ||
over any metadata reference stored in status. | ||
The key "oauthMetadata" is used to locate the data. | ||
If specified and the config map or expected key is not found, no metadata is served. | ||
If the specified metadata is not valid, no metadata is served. | ||
The namespace for this config map is openshift-config. | ||
properties: | ||
name: | ||
description: name is the metadata.name of the referenced config | ||
map | ||
type: string | ||
required: | ||
- name | ||
type: object | ||
serviceAccountIssuer: | ||
description: |- | ||
serviceAccountIssuer is the identifier of the bound service account token | ||
issuer. | ||
The default is https://kubernetes.default.svc | ||
WARNING: Updating this field will not result in immediate invalidation of all bound tokens with the | ||
previous issuer value. Instead, the tokens issued by previous service account issuer will continue to | ||
be trusted for a time period chosen by the platform (currently set to 24h). | ||
This time period is subject to change over time. | ||
This allows internal components to transition to use new service account issuer without service distruption. | ||
type: string | ||
type: | ||
description: |- | ||
type identifies the cluster managed, user facing authentication mode in use. | ||
Specifically, it manages the component that responds to login attempts. | ||
The default is IntegratedOAuth. | ||
type: string | ||
webhookTokenAuthenticator: | ||
description: |- | ||
webhookTokenAuthenticator configures a remote token reviewer. | ||
These remote authentication webhooks can be used to verify bearer tokens | ||
via the tokenreviews.authentication.k8s.io REST API. This is required to | ||
honor bearer tokens that are provisioned by an external authentication service. | ||
properties: | ||
kubeConfig: | ||
description: |- | ||
kubeConfig references a secret that contains kube config file data which | ||
describes how to access the remote webhook service. | ||
The namespace for the referenced secret is openshift-config. | ||
For further details, see: | ||
https://kubernetes.io/docs/reference/access-authn-authz/authentication/#webhook-token-authentication | ||
The key "kubeConfig" is used to locate the data. | ||
If the secret or expected key is not found, the webhook is not honored. | ||
If the specified kube config data is not valid, the webhook is not honored. | ||
properties: | ||
name: | ||
description: name is the metadata.name of the referenced secret | ||
type: string | ||
required: | ||
- name | ||
type: object | ||
required: | ||
- kubeConfig | ||
type: object | ||
webhookTokenAuthenticators: | ||
description: webhookTokenAuthenticators is DEPRECATED, setting it | ||
has no effect. | ||
items: | ||
description: |- | ||
deprecatedWebhookTokenAuthenticator holds the necessary configuration options for a remote token authenticator. | ||
It's the same as WebhookTokenAuthenticator but it's missing the 'required' validation on KubeConfig field. | ||
properties: | ||
kubeConfig: | ||
description: |- | ||
kubeConfig contains kube config file data which describes how to access the remote webhook service. | ||
For further details, see: | ||
https://kubernetes.io/docs/reference/access-authn-authz/authentication/#webhook-token-authentication | ||
The key "kubeConfig" is used to locate the data. | ||
If the secret or expected key is not found, the webhook is not honored. | ||
If the specified kube config data is not valid, the webhook is not honored. | ||
The namespace for this secret is determined by the point of use. | ||
properties: | ||
name: | ||
description: name is the metadata.name of the referenced | ||
secret | ||
type: string | ||
required: | ||
- name | ||
type: object | ||
type: object | ||
type: array | ||
type: object | ||
status: | ||
description: status holds observed values from the cluster. They may not | ||
be overridden. | ||
properties: | ||
integratedOAuthMetadata: | ||
description: |- | ||
integratedOAuthMetadata contains the discovery endpoint data for OAuth 2.0 | ||
Authorization Server Metadata for the in-cluster integrated OAuth server. | ||
This discovery document can be viewed from its served location: | ||
oc get --raw '/.well-known/oauth-authorization-server' | ||
For further details, see the IETF Draft: | ||
https://tools.ietf.org/html/draft-ietf-oauth-discovery-04#section-2 | ||
This contains the observed value based on cluster state. | ||
An explicitly set value in spec.oauthMetadata has precedence over this field. | ||
This field has no meaning if authentication spec.type is not set to IntegratedOAuth. | ||
The key "oauthMetadata" is used to locate the data. | ||
If the config map or expected key is not found, no metadata is served. | ||
If the specified metadata is not valid, no metadata is served. | ||
The namespace for this config map is openshift-config-managed. | ||
properties: | ||
name: | ||
description: name is the metadata.name of the referenced config | ||
map | ||
type: string | ||
required: | ||
- name | ||
type: object | ||
type: object | ||
required: | ||
- spec | ||
type: object | ||
served: true | ||
storage: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters