[ 
https://issues.apache.org/jira/browse/ATLAS-5430?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nixon Rodrigues updated ATLAS-5430:
-----------------------------------
    Fix Version/s: 3.0.0

> Add SPIFFE-based service-to-service authentication to Atlas header 
> pre-authentication
> -------------------------------------------------------------------------------------
>
>                 Key: ATLAS-5430
>                 URL: https://issues.apache.org/jira/browse/ATLAS-5430
>             Project: Atlas
>          Issue Type: Bug
>          Components: atlas-webui
>            Reporter: Nixon Rodrigues
>            Assignee: Nixon Rodrigues
>            Priority: Major
>             Fix For: 3.0.0
>
>          Time Spent: 50m
>  Remaining Estimate: 0h
>
> Add SPIFFE-based service-to-service authentication to Atlas header 
> pre-authentication, aligned with Apache Ranger (RANGER-5700), so workloads 
> can authenticate using HTTP headers such as {{x-awc-source-workload-id}} when 
> a trusted proxy or service mesh forwards workload identity.
> Atlas supports header-based pre-authentication via 
> {{AtlasHeaderPreAuthFilter}} (username and optional roles headers). It did 
> not previously accept SPIFFE workload headers for service identity when no 
> human username is present.
> h2. Problem
> Service-to-service calls to Atlas cannot use the same SPIFFE header pattern 
> as Ranger and the platform gateway, forcing reliance on basic auth or other 
> mechanisms that do not match mesh/gateway identity propagation.
> h2. Proposed solution
>  # Add {{SpiffeIdUtil}} to validate SPIFFE IDs in the form
>  {{spiffe://<trust-domain>/ns/<namespace>/sa/<service-account>}}
>  and extract the service-account segment as the principal.
>  # Extend {{AtlasHeaderPreAuthFilter}} to resolve the principal from:
>  * 
>  ** Username header (if configured and present) — takes precedence, or
>  ** Configured SPIFFE header(s) (comma-separated) — first header with a 
> well-formed SPIFFE ID wins.
>  # Add configuration property {{atlas.authentication.method.header.spiffe}} 
> and document it in {{{}atlas-application.properties{}}}.
>  # Reuse existing trusted-proxy auth type ({{{}AUTH_TYPE_TRUSTED_PROXY{}}}) 
> and optional {{atlas.authentication.method.header.roles}} for authorization 
> (e.g. {{{}ROLE_ADMIN{}}}).
> h2. Configuration example
> {code:java}
> atlas.authentication.method.header.enabled=true
> atlas.authentication.method.header.spiffe=workload-id
> atlas.authentication.method.header.roles=roles
> atlas.authentication.method.header.username=username
> {code}
> Example request:
> {{GET /api/atlas/v2/types/typedefs/headers HTTP/1.1
> workload-id: spiffe://my-cluster/ns/service-namespace/sa/my-service-sa
> roles: ROLE_ADMIN}}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to