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

ASF GitHub Bot updated SPARK-57893:
-----------------------------------
    Labels: pull-request-available  (was: )

> Implement UserCredentialManager
> -------------------------------
>
>                 Key: SPARK-57893
>                 URL: https://issues.apache.org/jira/browse/SPARK-57893
>             Project: Spark
>          Issue Type: Sub-task
>          Components: Spark Core
>    Affects Versions: 4.3.0
>            Reporter: Kousuke Saruta
>            Priority: Major
>              Labels: pull-request-available
>
> This sub-task is part of the umbrella 
> [SPARK-57703|https://issues.apache.org/jira/browse/SPARK-57703] (OIDC 
> Credential Propagation).
> h2. Problem
> There is no component to orchestrate credential acquisition, renewal 
> scheduling, and propagation triggering on the driver.
> h2. Goal
> Introduce {{UserCredentialManager}} that coordinates {{TokenIngestor}} and 
> {{CredentialProvider}} to maintain fresh credentials and notify the backend 
> when credentials are updated.
> h2. Scope
> * Lives in {{org.apache.spark.deploy.security}}, as a sibling of 
> {{HadoopDelegationTokenManager}}
> * Started from {{CoarseGrainedSchedulerBackend.start()}} when 
> {{spark.security.credentials.enabled=true}}
> * Responsibilities:
> *# Pull current {{UserContext}} via {{TokenIngestor.load()}}
> *# Call {{CredentialProvider.resolve()}} for each configured scheme
> *# Schedule next renewal based on {{min(identity token expiry, service 
> credential expiry) - safetyMargin}}
> *# Retry with exponential backoff on failure
> *# Invoke callback to propagate updated credentials
> * Configuration: {{spark.security.credentials.renewal.safetyMargin}}, 
> {{spark.security.credentials.renewal.minInterval}}
> h2. Acceptance criteria
> * Manager starts, acquires initial credentials, and invokes the propagation 
> callback.
> * Renewal is scheduled at the correct time (before expiry minus safety 
> margin).
> * On {{TokenIngestor}} rotation, new credentials are acquired and propagated.
> * On failure, exponential backoff is applied.
> * {{HadoopDelegationTokenManager}} is unaffected (no code changes, coexists 
> independently).
> * Unit tests with mocked TokenIngestor and FakeCredentialProvider.
> Reference: [SPIP design document Appendix 
> B|https://docs.google.com/document/d/1usJKncCPMiyFUg7aIdpZ0HQsklXIHow_sU_6dfFMjN0/edit].



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to