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 DevOps-bootcamp på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i DevOps-bootcamp, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i DevOps-bootcamp 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 DevOps-bootcamp 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
- 142
- Leksjoner
- 568
Ofte stilte spørsmål
Er leksjonen «Sikker håndtering av legitimasjon» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien DevOps-bootcamp, inkludert «Sikker håndtering av legitimasjon», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i DevOps-bootcamp 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å DevOps-bootcamp 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 DevOps-bootcamp?
Ingen tidligere erfaring er nødvendig. DevOps-bootcamp 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 DevOps-bootcamp-leksjonen?
Ja. Alle DevOps-bootcamp-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