Argo Workflows Authentication

Published
Length
3 min read

Luis Felipe Dias

All posts

You set up argo workflows authentication by picking a login mode on the server. Most teams use Kubernetes service tokens or single sign-on with an identity provider. Platform engineers often start with a shared admin role to get pipelines running fast. Overly broad roles let any user run jobs that read or delete cluster data. How argo workflows authentication works in Kubernetes The Argo server supports three main ways to check who a user is. In client mode, users send their own Kubernetes be

Access Request Workflows + Multi-Factor Authentication (MFA): the complete guide

Architecture patterns, implementation strategies, and security best practices. Delivered to your inbox.

Free white paper. No spam. Unsubscribe anytime.

You set up argo workflows authentication by picking a login mode on the server. Most teams use Kubernetes service tokens or single sign-on with an identity provider. Platform engineers often start with a shared admin role to get pipelines running fast. Overly broad roles let any user run jobs that read or delete cluster data.

How argo workflows authentication works in Kubernetes

The Argo server supports three main ways to check who a user is. In client mode, users send their own Kubernetes bearer token with each request. The server passes that token to the Kubernetes API to check the user role. This keeps all permission rules inside standard Kubernetes role bindings.

In server mode, the Argo server uses its own service account for all tasks. Anyone who can reach the web UI inherits the permissions of that single account. Teams only use this mode in local test setups because it lacks user tracking.

Single sign-on mode connects the server to an external OpenID Connect identity provider. Users log in with their work email and get a signed token back. The server reads group claims from that token and maps them to Kubernetes roles. Each role links to a service account with specific rights in one namespace.

Managing service accounts for automated workflow runs

Human users are only half of the access picture in a build pipeline. Automated scripts and webhook events also need a way to trigger new jobs. Teams create dedicated service accounts in Kubernetes for these machine callers. The server issues a bearer token tied to that service account role.

When a job starts, the workflow controller spawns pods inside the target namespace. Those pods use a separate execution service account to talk to the cluster. If you do not pick an account, Argo uses the default namespace account. Good setups split the login account from the pod execution account.

Access Request Workflows + Multi-Factor Authentication (MFA): architecture patterns and best practices

Continue reading? Get the full guide.

Free. No spam. Unsubscribe anytime.

What native login setup solves and what it misses

Native login modes verify who can open the UI or start a job. Role mapping stops a developer in one namespace from viewing another team's jobs. Linking single sign-on groups to Kubernetes roles also removes manual token sharing.

Still, login checks only happen at the start of a user session. Once a user or pod has a valid role, the system trusts every request. Native roles cannot inspect the shell commands or database queries inside a step. If a workflow pod mounts database keys, any step can read raw tables. A broad role also lets an engineer trigger a destructive job without review. Teams still need a way to control commands and mask sensitive fields like emails or card numbers in flight.

Add runtime guardrails and masking beside your databases and APIs

Login rules, role grants, and CI checks govern who connects to your stack. Yet any allowed script, engineer, or AI agent still runs commands with the full scope of its role. For workloads on Postgres, MySQL, SQL Server, MongoDB, ClickHouse, Kubernetes, SSH, or internal HTTP services, hoop.dev sits beside the service as an open-source proxy, a sidecar for your database or API.

Before a query runs, hoop.dev guardrails check the statement against your rules. An AI Analyzer you configure can score intent or hold risky calls for human review. Next, hoop.dev data masking rewrites sensitive fields in responses, and each verdict is logged per listener. Explore the MIT-licensed project on GitHub.

Frequently asked questions

Which login mode is best for production clusters?

Single sign-on mode with role mapping is best for human users in production. For automated pipelines, pair dedicated Kubernetes service accounts with narrow role bindings.

How do I stop workflows from using the default service account?

Set a specific workflow service account in your template or namespace settings. Give that account only the exact permissions the pod needs to finish its job.

Why do my single sign-on users get permission errors after logging in?

The server maps user groups to service accounts through role annotations. Check that the user's group claim matches an annotated service account in that namespace.

Save the open-source gateway.

hoop is MIT-licensed infrastructure for controlling how AI agents reach production data. Star hoophq/hoop so you can inspect it, deploy it, or share it when your team starts governing agent access.