Ciao a tutti,
Stiamo cercando di migliorare il modo in cui Discourse gestisce l’autenticazione AWS [1], e ci piacerebbe capire come è attualmente configurato prima di apportare qualsiasi modifica.
La Situazione Attuale
Al momento, ci sono alcuni modi per configurare l’autenticazione AWS in Discourse:
Opzione 1: Credenziali Esplicite (tramite impostazioni del sito)
- imposta
s3_access_key_ides3_secret_access_keynelle impostazioni del tuo sito - l’autenticazione è per sito
Opzione 2: Credenziali Esplicite (tramite variabili d’ambiente)
- imposta le variabili d’ambiente:
DISCOURSE_S3_ACCESS_KEY_ID
DISCOURSE_S3_SECRET_ACCESS_KEY - l’autenticazione è la stessa per tutti i siti in un cluster multisito
Opzione 3: Impostazione “Usa Profilo IAM”
- abilita l’impostazione del sito
s3_use_iam_profileo imposta la variabile d’ambienteDISCOURSE_S3_USE_IAM_PROFILE=true - dice a Discourse di lasciare che l’SDK AWS trovi automaticamente le credenziali
- originariamente progettato per istanze EC2 e per ottenere credenziali tramite IMDS, ma funziona anche in altri ambienti
Perché Vogliamo Cambiare
1. Nome Impostazione Confuso
Il nome dell’impostazione s3_use_iam_profile è fuorviante. Suggerisce che funzioni solo con i profili di istanza EC2, ma in realtà abilita qualsiasi sorgente di credenziali dell’SDK AWS:
- Profili di istanza EC2
- Ruoli di attività ECS
- Variabili d’ambiente
- File di credenziali AWS
- Assunzione di ruoli IAM
- E altro ancora…
2. Sicurezza: Chiavi Statiche vs. Assunzione di Ruoli
Sulla nostra piattaforma di hosting dedicata utilizziamo attualmente chiavi di accesso che vengono ruotate regolarmente. Stiamo puntando a passare all’assunzione di ruoli per un migliore isolamento, migliori opportunità di controllo degli accessi e per supportare un processo interno migliore.
Svantaggi dell’approccio attuale:
- le chiavi di accesso non scadono (fino alla rotazione)
- hanno ampi ambiti di autorizzazione
- possono essere compromesse se trapelano
- richiedono procedure di rotazione manuale
Vantaggi dell’utilizzo dell’assunzione di ruoli invece:
- le credenziali persistenti possono essere limitate tramite indirizzo IP
- le operazioni vengono eseguite utilizzando credenziali temporanee che scadono automaticamente (solitamente 1 ora)
- accesso just-in-time poiché le credenziali esistono solo quando necessarie
- raggio d’azione ridotto poiché le credenziali temporanee compromesse scadono rapidamente
- nessuna rotazione delle chiavi: il processo di assunzione dei ruoli gestisce l’aggiornamento
- migliori tracce di controllo: ogni sessione viene tracciata separatamente
Cosa Stiamo Considerando
Stiamo pensando di:
- Rinominare l’impostazione in qualcosa di più chiaro come
aws_credentials_from_environment - Rimuovere completamente l’impostazione e rilevare automaticamente quando le credenziali dovrebbero provenire dall’ambiente anziché dalle impostazioni del sito
Abbiamo Bisogno del Tuo Contributo!
Per favore, faccelo sapere:
-
Come ti autentichi con S3?
- Chiavi di accesso esplicite nelle impostazioni del sito
- Profilo di istanza EC2 (con
s3_use_iam_profileabilitato) - Ruolo di attività ECS (con
s3_use_iam_profileabilitato) - Variabili d’ambiente (con
s3_use_iam_profileabilitato) - … qualcos’altro?
-
Se utilizzi
s3_use_iam_profile:- In quale ambiente stai operando? (EC2, ECS, Docker, bare metal, ecc.)
- Il nome/descrizione attuale ha causato confusione?
- Un nome diverso sarebbe più chiaro?
-
Preoccupazioni riguardo alle modifiche a questa impostazione?
- Preoccupato di interrompere la tua configurazione attuale?
- Hai bisogno di tempo per testare le modifiche?
- Altre considerazioni?
Perché È Importante
Una migliore autenticazione S3 significa:
- Più sicuro: nessuna chiave statica da gestire
- Configurazione più semplice: specialmente per le distribuzioni cloud
- Meno confusione: impostazioni e documentazione più chiare
- Miglior supporto per i moderni pattern di autenticazione AWS
Il tuo feedback ci aiuterà a apportare miglioramenti che funzionino per tutti. Grazie per aver dedicato del tempo a condividere la tua configurazione!
qui leggi: qualsiasi provider di storage di oggetti compatibile con S3 che stai utilizzando ↩︎