/authservice

Primary LanguageSmartyApache License 2.0Apache-2.0

authservice

Version: 0.5.3-bb.19 Type: application AppVersion: 0.5.3

A Helm chart for Kubernetes

Learn More

Pre-Requisites

  • Kubernetes Cluster deployed
  • Kubernetes config installed in ~/.kube/config
  • Helm installed

Install Helm

https://helm.sh/docs/intro/install/

Deployment

  • Clone down the repository
  • cd into directory
helm install authservice chart/

Values

Key Type Default Description
replicaCount int 1 When setting this above 1, a redis configuration is required. See globals.redis_server_uri
istio.namespace string "istio-system"
istio.mtls object {"mode":"STRICT"} Default authservice peer authentication
istio.mtls.mode string "STRICT" Two mtls modes allowed STRICT = Allow only mutual TLS traffic PERMISSIVE = Allow both plain text and mutual TLS traffic
monitoring.enabled bool false
networkPolicies.enabled bool false
networkPolicies.ingressLabels.app string "istio-ingressgateway"
networkPolicies.ingressLabels.istio string "ingressgateway"
image.repository string "registry1.dso.mil/ironbank/istio-ecosystem/authservice"
image.pullPolicy string "IfNotPresent"
image.tag string "0.5.3" Overrides the image tag whose default is the chart appVersion.
imagePullSecrets list []
issuer_uri string "" Issuer and jwks URIs if not using Keycloak
jwks_uri string ""
allow_unmatched_requests bool true If true will allow the requests even no filter chain match is found
custom_authpolicy_rules list [{"when":[{"key":"request.headers[authorization]","notValues":["*"]}]}] Extra Ruleset for AuthorizationPolicy CUSTOM action to forward to Authservice. To enable allow_unmatched_requests must be false. These custom rules mean that only these requests will be routed and will break default BigBang setup for prometheus/alertmanager/tempo unless added. Path specific Operations are not supported, it is recommended to use only hosts, notHosts, & method operations. See reference: https://istio.io/latest/docs/reference/config/security/authorization-policy/
global.client_id string "global_id" Global Authorization URI value to set if not using Keycloak authorization_uri: "" Global Token URI Value to set if not using Keycloak token_uri: "" Default client_id to be used in each chain
global.client_secret string "global_secret" default client_secret to be used in each chain
global.match.header string ":authority" Header to match. The value ":authority" is used to match the requested hostname
global.match.prefix string "bigbang" value matches the start of the header value defined above
global.logout_path string "/globallogout" Logout URL for the client
global.logout_redirect_uri string "" Logout Redirect URI for the client
global.absolute_session_timeout int 0
global.idle_session_timeout int 0
global.certificate_authority string "" CA signing the OIDC provider. Passed through as a Helm multi-line string. See README for example.
global.oidc object {"host":"login.dso.mil","realm":"baby-yoda"} URI for Redis instance used for OIDC token storage/retrieval. This may also be specified per-chain. redis_server_uri: tcp://{{ .Release.Name }}-{{ .Release.Namespace }}-auth-redis-master:6379/
global.oidc.host string "login.dso.mil" OpenID Connect hostname. Assumption of Keycloak based on URL construction
global.oidc.realm string "baby-yoda" Realm for OpenID Connect
global.jwks string "" escaped json for the JWKS
global.jwks_uri string "" Request URI that has the JWKs. If neither jwks or jwks_uri are specified the jwks_uri is computed based on the provided OIDC realm and and host"
global.periodic_fetch_interval_sec int 60 Request interval to check whether new JWKs are available.
global.skip_verify_peer_cert bool false If set to true, the verification of the destination certificate will be skipped when making a request to the JWKs URI and the token endpoint. This option is useful when you want to use a self-signed certificate for testing purposes, but basically should not be set to true in any other cases.
chains object {"local":{"callback_uri":"https://localhost/login","client_id":"local_id","client_secret":"local_secret","logout_path":"/local","match":{"header":":local","prefix":"localhost"}}} Individual chains. Must have a name value and a callback_uri NOTE: if using "match" can only specify prefix OR equality, not both
nameOverride string "authservice"
fullnameOverride string "authservice"
serviceAccount.create bool true Specifies whether a service account should be created
serviceAccount.annotations object {} Annotations to add to the service account
serviceAccount.name string "" The name of the service account to use. If not set and create is true, a name is generated using the fullname template
podAnnotations object {}
podSecurityContext.runAsUser int 1000
podSecurityContext.runAsGroup int 1000
podSecurityContext.runAsNonRoot bool true
securityContext.capabilities.drop[0] string "ALL"
securityContext.readOnlyRootFilesystem bool true
securityContext.runAsNonRoot bool true
securityContext.runAsUser int 1000
service.type string "ClusterIP"
service.port int 10003
resources.limits object {"cpu":"100m","memory":"512Mi"} We usually recommend not to specify default resources and to leave this as a conscious choice for the user. This also increases chances charts run on environments with little resources, such as Minikube. If you do want to specify resources, uncomment the following lines, adjust them as necessary, and remove the curly braces after 'resources:'.
resources.requests.cpu string "100m"
resources.requests.memory string "512Mi"
autoscaling.enabled bool false
autoscaling.minReplicas int 1
autoscaling.maxReplicas int 3
autoscaling.targetCPUUtilizationPercentage int 80
nodeSelector object {}
tolerations list []
affinity object {}
config object {"logLevel":"trace"} Name of the secret to source authservices config.json from, created outside of helm chart TODO: Create this as part of the helmchart?
selector object {"key":"protect","value":"keycloak"} Label to determine what workloads (pods/deployments) should be protected by authservice.
redis object {"enabled":false,"image":{"tag":"7.2.0"}} Conditional for enabling Redis Subchart
redis.image object {"tag":"7.2.0"} Values passthrough for redis Subchart
redis-bb.auth.enabled bool false
redis-bb.istio.redis.enabled bool false
redis-bb.networkPolicies.enabled bool true
redis-bb.networkPolicies.controlPlaneCidr string "0.0.0.0/0"
redis-bb.commonConfiguration string "# Enable AOF https://redis.io/topics/persistence#append-only-file\nappendonly no\nmaxmemory 200mb\nmaxmemory-policy allkeys-lru\nsave \"\""
openshift bool false
trigger_rules list [] Values to bypass OIDC chains in favor or using istio authorizationpolicies.security.istio.io and requestauthentications.security.istio.io for certain endpoints.

Contributing

Please see the contributing guide if you are interested in contributing.