Gestione sicura delle credenziali
Applichi le best practice per gestire in modo sicuro le credenziali dei cloud provider e i dati sensibili nelle pipeline Terraform automatizzate.
Gestione sicura delle credenziali è una lezione Terraform Infrastructure as Code gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Terraform Infrastructure as Code, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Terraform Infrastructure as Code include 4 lezioni in totale.
Proteggere le credenziali in CI/CD
Quando si automatizza l'infrastruttura con Terraform in una pipeline CI/CD, la pipeline deve poter accedere agli account dei provider cloud. Gestire queste credenziali in modo sicuro è fondamentale per impedire accessi non autorizzati e violazioni dei dati.
È come dare a un robot le chiavi di casa. È necessario assicurarsi che solo il robot giusto abbia le chiavi giuste e che tali chiavi siano protette.
Evitare l'hardcoding dei secret
Un errore comune consiste nell'inserire informazioni sensibili, come chiavi API o password, direttamente nei file di configurazione Terraform o negli script CI/CD. Questa pratica è chiamata hardcoding.
- Rischio per la sicurezza: i secret entrano a far parte della cronologia del codice sorgente (ad esempio, Git).
- Esposizione: chiunque abbia accesso al repository può visualizzarli.
- Manutenzione: modificare un secret richiede una modifica del codice e un nuovo deployment.
Variabili d'ambiente (nozioni di base)
Per lo sviluppo locale o gli scenari di base, le variabili d'ambiente sono un modo semplice per fornire le credenziali senza ricorrere all'hardcoding. È sufficiente impostarle nella shell prima di eseguire Terraform.
Sebbene sia una soluzione migliore dell'hardcoding, non è l'ideale per le pipeline CI/CD condivise, poiché i secret possono comunque essere visibili nei log o negli elenchi dei processi se non vengono gestiti con attenzione.
export AWS_ACCESS_KEY_ID="AKIA..."
export AWS_SECRET_ACCESS_KEY="abcdef..."
terraform planSecret manager delle piattaforme CI/CD
Le moderne piattaforme CI/CD offrono funzionalità integrate per la gestione dei secret. Queste consentono di archiviare i dati sensibili in modo sicuro all'interno della piattaforma stessa, separatamente dal repository del codice.
Quando la pipeline viene eseguita, questi secret vengono inseriti nell'ambiente di build come variabili d'ambiente o file, ma non vengono mai esposti nei log né archiviati nel repository.
Esempio di secret in GitHub Actions
GitHub Actions offre una sezione dedicata ai secret del repository. È possibile aggiungerli tramite Settings > Secrets and variables > Actions > New repository secret.
Nel file del workflow è quindi possibile fare riferimento a questi secret usando il contesto secrets. Nei log vengono mascherati automaticamente.
name: Deploy Infra
on: [push]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Terraform Init
run: terraform initRuoli IAM cloud per le pipeline
L'approccio più sicuro per l'autenticazione CI/CD consiste nell'utilizzare ruoli di Identity and Access Management (IAM) o account di servizio forniti dal provider cloud.
Anziché usare chiavi di accesso a lunga durata, la pipeline CI/CD assume un ruolo temporaneo con autorizzazioni specifiche, spesso utilizzando OpenID Connect (OIDC) per le relazioni di trust. In questo modo non è più necessario archiviare credenziali statiche.
Esempio di ruolo IAM AWS + OIDC
Per AWS è possibile configurare un ruolo IAM che il workflow di GitHub Actions può assumere direttamente usando OIDC. In questo modo non vengono archiviate chiavi di accesso AWS da nessuna parte!
Si definisce una policy di trust per il ruolo, consentendo al provider OIDC di GitHub di assumerlo in base a condizioni specifiche (ad esempio, repository e branch).
resource "aws_iam_role" "github_actions_role" {
name = "github-actions-oidc-role"
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Effect = "Allow"
Principal = {
Federated = "arn:aws:iam::123456789012:oidc-provider/token.actions.githubusercontent.com"
}
Action = "sts:AssumeRoleWithWebIdentity"
Condition = {
StringEquals = {
"token.actions.githubusercontent.com:aud" : "sts.amazonaws.com"
}
StringLike = {
"token.actions.githubusercontent.com:sub" : "repo:your-org/your-repo:*"
}
}
}
]
})
}Output sensibili di Terraform
A volte gli output di Terraform possono contenere dati sensibili, come password di database o chiavi private. È necessario contrassegnare questi output come sensitive.
Quando un output è contrassegnato come sensibile, Terraform ne oscura il valore nell'output della CLI e nel file di stato quando viene visualizzato, contribuendo a prevenire un'esposizione accidentale.
output "database_password" {
value = aws_db_instance.main.password
description = "The database root password."
sensitive = true
}Verifica delle credenziali sicure
Quale metodo è generalmente considerato il più sicuro per consentire alle pipeline CI/CD di autenticarsi con i provider cloud, eliminando la necessità di archiviare credenziali statiche a lunga durata?
Riepilogo: credenziali sicure
Ha imparato strategie fondamentali per gestire i dati sensibili nelle pipeline CI/CD di Terraform:
- Evitare l'hardcoding: non inserire mai i secret direttamente nel codice.
- Sfruttare i secret CI/CD: utilizzare i secret manager specifici della piattaforma per le credenziali statiche.
- Adottare ruoli IAM/OIDC: per la massima sicurezza, utilizzare i ruoli IAM del provider cloud con OIDC per assumere autorizzazioni temporanee senza archiviare chiavi.
- Contrassegnare gli output sensibili: proteggere i dati sensibili esposti dagli output di Terraform.
Queste pratiche sono fondamentali per mantenere un'infrastruttura solida e sicura.
Domande Frequenti
La lezione «Gestione sicura delle credenziali» è gratuita?
Sì — il testo completo di «Gestione sicura delle credenziali» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Terraform Infrastructure as Code, passa a CoddyKit PRO. Il corso Terraform Infrastructure as Code include 4 lezioni in totale.
Cosa imparerò in «Gestione sicura delle credenziali»?
Applichi le best practice per gestire in modo sicuro le credenziali dei cloud provider e i dati sensibili nelle pipeline Terraform automatizzate. Eserciti Terraform Infrastructure as Code con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Terraform Infrastructure as Code?
Non è richiesta alcuna esperienza precedente. Terraform Infrastructure as Code su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Gestione sicura delle credenziali»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Terraform Infrastructure as Code?
Sì. Ogni lezione Terraform Infrastructure as Code include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Terraform nelle pipeline CI/CD
- Automazione di `plan` e `apply`
- Gestione sicura delle credenziali
- GitOps e automazione delle pull request