# Hemliga nycklar hantering: En steg-för-steg guide för säkra CI/CD pipelines

*2026-06-12*

> Hemliga nycklar hantering är kritisk för CI/CD-säkerhet. Läs vår guide för säker lagring av API-nycklar, tokens och lösenord i dina pipelines.

Hemliga nycklar hantering är en av de viktigaste delarna av CI/CD-säkerhet. API-nycklar, tokens och lösenord hanteras ofta slarvigt, vilket exponerar kritisk infrastruktur för angripare. I denna praktiska guide visar vi steg-för-steg hur du implementerar robust hemliga nycklar hantering i dina pipelines, med fokus på GitHub Actions, GitLab CI, Jenkins och moderna vault-lösningar.

## Varför hemliga nycklar hantering är kritisk

Exponerade API-nycklar och tokens kan ge angripare direkt åtkomst till dina molntjänster, databaser och externa API:er. Många säkerhetsintrång börjar med stulna hemliga nycklar som hittats i git-historia eller deploy-loggar. Enligt [Regeringen](https://www.regeringen.se/) uppmanas alla organisationer att implementera moderna säkerhetsmetoder för att skydda känslig data.

## Steg-för-steg: Implementera hemliga nycklar hantering

### Steg 1: Förstå riskerna med exponerade hemliga nycklar

De vanligaste feilen är att hardkoda hemliga nycklar direkt i källkoden eller konfigurationsfiler. Detta kan leda till:
- Nycklar som synliggörs i git-historik
- Exposering i build-loggar och artefakter
- Oavsiktlig åtkomst för utvecklare och verktyg
- Inga möjligheter att rotera eller återkalla på en gång

Hemliga nycklar hantering måste börja med förståelse för dessa risker.

### Steg 2: Använd miljövariabler säkerhet istället för hardkodade värden

Miljövariabler säkerhet är steg ett mot bättre praxis. Istället för att skriva hemliga nycklar direkt i kod, använd:
- Miljövariabler som injiceras vid runtime
- CI/CD-plattformens inbyggda secrets-löningar
- Separate konfigurationsfiler som aldrig committas till git

```bash
# Dålig praxis - aldrig gör detta
API_KEY = "sk_live_abc123xyz789"

# Bättre praxis - läs från miljövariabel
API_KEY=${SECRET_API_KEY}
```

Genom att använda miljövariabler separerar du hemliga nycklar från källkod och build-artefakter.

### Steg 3: GitHub Actions och säker hantering av hemliga nycklar

GitHub Actions erbjuder inbyggda secrets för CI/CD hemliga nycklar. Så här implementerar du det:

1. Gå till ditt repository → Settings → Secrets and variables → Actions
2. Klicka "New repository secret"
3. Lägg in ditt hemligt värde (API-nyckel, token, lösenord)
4. Referera det i ditt workflow-skript:

```yaml
name: Deploy
on: [push]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Deploy with secret
        run: ./deploy.sh
        env:
          API_KEY: ${{ secrets.API_KEY }}
```

GitHub Actions krypterar alla hemliga nycklar med AES-256 och maskerar dem i loggar automatiskt.

### Steg 4: GitLab CI och SecureFile-variabler

GitLab CI hanterar hemliga nycklar genom:

```yaml
deploy:
  stage: deploy
  variables:
    API_KEY: $CI_JOB_TOKEN
    DB_PASSWORD: $DATABASE_SECRET
  script:
    - ./deploy.sh
  only:
    - main
```

Sätta hemliga variabler i GitLab:
1. Gå till projekt → Settings → CI/CD → Variables
2. Lägg in variable och markera "Protect variable" och "Mask variable"
3. "Protect variable" begränsar till protected branches
4. "Mask variable" döljer värdet i loggar

### Steg 5: Jenkins Credentials och rol-baserad åtkomst

Jenkins Credentials Store lagrar hemliga nycklar krypterat och separat från jobb-konfiguration:

```groovy
pipeline {
    agent any
    environment {
        API_KEY = credentials('api_key_prod')
        DB_PASS = credentials('db_password')
    }
    stages {
        stage('Deploy') {
            steps {
                sh './deploy.sh'
            }
        }
    }
}
```

I Jenkins: Gå till Manage Jenkins → Manage Credentials, skapa nytt "Secret text" credential, och referera via `credentials('credential_id')`.

### Steg 6: Implementera vault-lösningar för hemliga nycklar hantering

Större organisationer behöver centraliserad vault DevOps för att rotera hemliga nycklar automatiskt, granska varje åtkomst, genomdriva säkerhetsprinciper och integrera med alla CI/CD-plattformar. [Statistiska centralbyrån (SCB)](https://www.scb.se/) och andra myndigheter uppmuntrar användning av moderna vault-lösningar för känslig datahantning.

Populära val:

**HashiCorp Vault** - Open source vault-lösning
- Centraliserad hemliga nycklar lagring
- Dynamisk generering av hemlig åtkomst
- Granskning och loggning av alla åtkomster

**AWS Secrets Manager** - Molnlösning för AWS
- Automatisk rotation av hemliga nycklar
- Integrerad med IAM för åtkomst kontroll

**Azure Key Vault** - Microsofts vault DevOps-lösning
- Hardware security modules (HSM)
- Åtkomst historik och granskning

### Steg 7: Rotera och övervaka hemliga nycklar

Att rotera hemliga nycklar regelbundet är kritisk för API nycklar skydd:

- **Automatisk rotation:** Konfigureras vault-lösningen för automatisk rotation var 30-90 dag
- **Manuell rotation:** Skapa ny API-nyckel, uppdatera alla references, radera gammal
- **Åtkomstloggning:** Loggföra varje läsning och skrivning av hemliga nycklar
- **Incidenthantering:** Vid exponering, rotera omedelbar och granska loggar

## Sammanfattning

Hemliga nycklar hantering är inte valfritt — det är en grundläggande säkerhetsprincip för moderna CI/CD pipelines. Börja med miljövariabler säkerhet och GitHub Actions eller GitLab CI. Om du senare behöver mer avancerad hemliga nycklar hantering, migrera till en dedikerad vault-lösning.

## Vanliga frågor

### Hur lagras hemliga nycklar säkert i GitHub Actions?

GitHub Actions krypterar alla hemliga nycklar med AES-256-kryptering och maskerar dem automatiskt i build-loggar. Du kan bara åtkomst från workflow-skript via `${{ secrets.NAMN }}` och aldrig direkt från externa tjänster. För ytterligare säkerhet kan du konfigurera OIDC för token-baserad autentisering.

### Vad är skillnaden mellan miljövariabler och hemliga variabler?

Miljövariabler kan innehålla vilken data som helst, men krypteras inte automatiskt. Hemliga variabler krypteras av CI/CD-plattformen och maskeras i loggar. Använd alltid hemliga variabler för API-nycklar, tokens och lösenord.

### Hur ofta ska jag rotera hemliga nycklar?

För kritiska hemliga nycklar rekommenderas rotation var 30-90 dag. Använd automatisk rotation med en vault-lösning. Vid misstänkt exponering roterar du omedelbar.
