Sikker håndtering av legitimasjon
Implementer anbefalte fremgangsmåter for sikker håndtering av legitimasjon for skyleverandører og sensitive data i automatiserte Terraform-pipelines.
Sikker håndtering av legitimasjon er en gratis leksjon i Terraform som Infrastructure as Code på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Terraform som Infrastructure as Code, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Terraform som Infrastructure as Code inneholder totalt 4 leksjoner.
Sikre legitimasjonsdata i CI/CD
Når dere automatiserer infrastruktur med Terraform i en CI/CD-pipeline, trenger pipelinen tilgang til kontoer hos skyleverandører. Sikker håndtering av disse legitimasjonsdataene er avgjørende for å hindre uautorisert tilgang og datainnbrudd.
Tenk på det som å gi en robot nøklene til huset deres. Dere vil sørge for at bare riktig robot får de riktige nøklene, og at nøklene er beskyttet.
Unngå hardkoding av hemmeligheter
En vanlig feil er å legge inn sensitiv informasjon, for eksempel API-nøkler eller passord, direkte i Terraform-konfigurasjonsfiler eller CI/CD-skript. Dette kalles hardkoding.
- Sikkerhetsrisiko: Hemmeligheter blir en del av kildekodehistorikken (for eksempel Git).
- Eksponering: Alle som har tilgang til repositoriet, kan se dem.
- Vedlikehold: Hvis en hemmelighet skal endres, må koden endres og distribueres på nytt.
Miljøvariabler (grunnleggende)
For lokal utvikling eller enkle scenarier er miljøvariabler en enkel måte å oppgi legitimasjonsdata på uten hardkoding. Dere angir dem i skallet før Terraform kjøres.
Dette er bedre enn hardkoding, men er ikke ideelt for delte CI/CD-pipelines, siden hemmeligheter fortsatt kan vises i logger eller prosesslister hvis de ikke håndteres forsiktig.
export AWS_ACCESS_KEY_ID="AKIA..."
export AWS_SECRET_ACCESS_KEY="abcdef..."
terraform planHemmelighetshåndtering i CI/CD-plattformer
Moderne CI/CD-plattformer tilbyr innebygde funksjoner for håndtering av hemmeligheter. Disse gjør det mulig å lagre sensitive data på en sikker måte i selve plattformen, separat fra kodelageret.
Når pipelinen kjøres, settes disse hemmelighetene inn i byggemiljøet som miljøvariabler eller filer, men de eksponeres aldri i logger eller lagres i repositoriet.
Eksempel på GitHub Actions-hemmeligheter
GitHub Actions har en egen seksjon for hemmeligheter i repositoriet. Dere kan legge dem til via Settings > Secrets and variables > Actions > New repository secret.
I arbeidsflytfilen kan dere deretter referere til disse hemmelighetene ved å bruke konteksten secrets. De maskeres automatisk i logger.
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 initCloud IAM-roller for pipelines
Den sikreste metoden for autentisering av CI/CD er å bruke IAM-roller eller tjenestekontoer som skyleverandøren tilbyr.
I stedet for tilgangsnøkler med lang levetid antar CI/CD-pipelinen en midlertidig rolle med bestemte tillatelser, ofte ved å bruke OpenID Connect (OIDC) for tillitsforhold. Dette eliminerer behovet for å lagre statiske legitimasjonsdata helt.
Eksempel på AWS IAM-rolle + OIDC
For AWS kan dere konfigurere en IAM-rolle som GitHub Actions-arbeidsflyten kan anta direkte ved hjelp av OIDC. Det betyr at ingen AWS-tilgangsnøkler lagres noe sted!
Dere definerer en tillitspolicy for rollen, som tillater GitHub sin OIDC-leverandør å anta den basert på bestemte vilkår (for eksempel repositoriet eller grenen).
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:*"
}
}
}
]
})
}Sensitive Terraform-resultater
Noen ganger kan Terraform-resultater inneholde sensitive data, for eksempel databasepassord eller private nøkler. Dere bør merke disse resultatene som sensitive.
Når et resultat er merket som sensitivt, skjuler Terraform verdien i CLI-resultatet og tilstandsfilen når den vises. Dette bidrar til å hindre utilsiktet eksponering.
output "database_password" {
value = aws_db_instance.main.password
description = "The database root password."
sensitive = true
}Kontroll av sikre legitimasjonsdata
Hvilken metode regnes generelt som den sikreste for at CI/CD-pipelines skal autentisere seg mot skyleverandører, uten behov for å lagre statiske legitimasjonsdata med lang levetid?
Oppsummering: Sikker legitimasjon
De har lært viktige strategier for håndtering av sensitive data i Terraform CI/CD-pipelines:
- Unngå hardkoding: Legg aldri hemmeligheter direkte inn i koden.
- Bruk CI/CD-hemmeligheter: Bruk plattformspesifikke løsninger for håndtering av hemmeligheter for statiske legitimasjonsdata.
- Bruk IAM-roller/OIDC: For best mulig sikkerhet bør dere bruke IAM-roller hos skyleverandøren med OIDC for å anta midlertidige tillatelser uten å lagre nøkler.
- Merk sensitive resultater: Beskytt sensitive data som eksponeres av Terraform-resultater.
Disse fremgangsmåtene er avgjørende for å opprettholde en robust og sikker infrastruktur.
Lær deg Terraform som Infrastructure as Code med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Sikker håndtering av legitimasjon» gratis?
Ja – hele teksten i «Sikker håndtering av legitimasjon» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Terraform som Infrastructure as Code-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Terraform som Infrastructure as Code inneholder totalt 4 leksjoner.
Hva lærer jeg i «Sikker håndtering av legitimasjon»?
Implementer anbefalte fremgangsmåter for sikker håndtering av legitimasjon for skyleverandører og sensitive data i automatiserte Terraform-pipelines. Du øver på Terraform som Infrastructure as Code med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Terraform som Infrastructure as Code?
Ingen tidligere erfaring er nødvendig. Terraform som Infrastructure as Code på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Sikker håndtering av legitimasjon»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Terraform som Infrastructure as Code-leksjonen?
Ja. Alle Terraform som Infrastructure as Code-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Terraform i CI/CD-pipelines
- Automatisere `plan` og `apply`
- Sikker håndtering av legitimasjon
- GitOps og automatisering av pull requests