apache / apache/paimon-rust

Support URI-aware operator injection for object storage

Chiusa
#712 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Rust
Stelle
197
Fork
92
Merge medio
1g 16h
PR unite (30g)
91

Descrizione

### Motivation

`FileIO` currently accepts object-store credentials as static properties. A long-lived `FileIO` cannot observe rotated temporary credentials without being rebuilt.

For example, an external process may atomically update a JSON file containing AK/SK/session token and expiration. The same `FileIO` should reload it when the cached credential expires. This is needed by the [Milvus external-table integration](https://github.com/milvus-io/milvus/issues/50632), where explicitly configured delegated authentication must also [fail closed](https://github.com/milvus-io/milvus-storage/issues/617).

### Proposal

Following iceberg-rust's [`CustomAwsCredentialLoader`](https://github.com/apache/iceberg-rust/blob/main/crates/storage/opendal/src/s3.rs), allow object-store builders used by `FileIO` to accept provider-specific reqsign credential providers.

- The provider returns the native credential and its expiration where supported. reqsign caches it and invokes the provider again when it becomes invalid.
- An explicitly configured provider replaces the default credential chain; refresh errors are returned without falling back to another identity.
- Existing property-based configuration remains unchanged. STS, OIDC, ARN, impersonation, and credential-broker implementations stay outside paimon-rust.
- Support S3 first, then use the same pattern for OSS, GCS, and Azure where OpenDAL / reqsign expose equivalent hooks.

Reloading credentials revoked before their declared expiration requires structured invalidation and retry support from OpenDAL / reqsign. Paimon should not implement this by matching cloud error strings.

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia con i builder dell’object-store di FileIO e la configurazione esistente delle credenziali basata sulle proprietà, quindi esamina gli hook del provider di OpenDAL/reqsign descritti nella proposta. Il lavoro è completo quando S3 supporta un provider esplicito e rinnovabile, ne utilizza la scadenza e restituisce gli errori di refresh senza ricorrere a un fallback; aggiungi test per il refresh del provider e il comportamento fail-closed.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
rust
Ambito
authentication, cloud
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Tranquilla
Chiarezza
Abbastanza chiara
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.