0Pricing
DevOps Bootcamp · Lekcja

Bezpieczne zarządzanie poświadczeniami

Stosuj dobre praktyki bezpiecznego zarządzania poświadczeniami dostawców chmurowych i poufnymi danymi w zautomatyzowanych potokach Terraform.

Bezpieczne zarządzanie poświadczeniami to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.

Bezpieczne dane uwierzytelniające w CI/CD

Podczas automatyzowania infrastruktury za pomocą Terraform w potoku CI/CD potok musi mieć dostęp do kont dostawców chmurowych. Bezpieczne zarządzanie tymi danymi uwierzytelniającymi ma kluczowe znaczenie dla zapobiegania nieautoryzowanemu dostępowi i naruszeniom danych.

Można porównać to do przekazania robotowi kluczy do domu. Należy dopilnować, aby właściwy robot miał właściwe klucze i aby te klucze były chronione.

Unikanie wpisywania sekretów na stałe

Częstym błędem jest umieszczanie poufnych informacji, takich jak klucze API lub hasła, bezpośrednio w plikach konfiguracyjnych Terraform albo skryptach CI/CD. Nazywa się to hardcodowaniem.

  • Ryzyko bezpieczeństwa: Sekrety stają się częścią historii kodu źródłowego, na przykład w Git.
  • Ujawnienie: Każda osoba mająca dostęp do repozytorium może je zobaczyć.
  • Utrzymanie: Zmiana sekretu wymaga modyfikacji kodu i ponownego wdrożenia.

Zmienne środowiskowe (podstawy)

W przypadku programowania lokalnego lub podstawowych scenariuszy zmienne środowiskowe są prostym sposobem przekazywania danych uwierzytelniających bez wpisywania ich na stałe. Ustawia się je w powłoce przed uruchomieniem Terraform.

To rozwiązanie jest lepsze niż hardcodowanie, ale nie jest idealne w przypadku współdzielonych potoków CI/CD, ponieważ przy nieostrożnej obsłudze sekrety nadal mogą być widoczne w dziennikach lub na listach procesów.

export AWS_ACCESS_KEY_ID="AKIA..."
export AWS_SECRET_ACCESS_KEY="abcdef..."
terraform plan

Menedżery sekretów platform CI/CD

Nowoczesne platformy CI/CD oferują wbudowane funkcje zarządzania sekretami. Umożliwiają one bezpieczne przechowywanie poufnych danych na samej platformie, niezależnie od repozytorium kodu.

Podczas uruchamiania potoku sekrety są wstrzykiwane do środowiska kompilacji jako zmienne środowiskowe lub pliki, ale nigdy nie są ujawniane w dziennikach ani przechowywane w repozytorium.

Przykład sekretów GitHub Actions

GitHub Actions udostępnia dedykowaną sekcję na sekrety repozytorium. Można je dodać, wybierając Settings > Secrets and variables > Actions > New repository secret.

W pliku przepływu pracy można następnie odwoływać się do tych sekretów za pomocą kontekstu secrets. Są one automatycznie maskowane w dziennikach.

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 init

Role IAM chmury dla potoków

Najbezpieczniejszym sposobem uwierzytelniania CI/CD jest używanie ról Identity and Access Management (IAM) lub kont usługowych udostępnianych przez dostawcę chmury.

Zamiast długotrwałych kluczy dostępu potok CI/CD przyjmuje tymczasową rolę z określonymi uprawnieniami, często wykorzystując OpenID Connect (OIDC) do ustanawiania relacji zaufania. Eliminuje to całkowicie potrzebę przechowywania stałych danych uwierzytelniających.

Przykład roli AWS IAM i OIDC

W AWS można skonfigurować rolę IAM, którą przepływ pracy GitHub Actions będzie mógł bezpośrednio przyjąć za pomocą OIDC. Oznacza to, że klucze dostępu AWS nie są nigdzie przechowywane!

Należy zdefiniować zasady zaufania dla roli, zezwalając dostawcy OIDC GitHub na jej przyjęcie na podstawie określonych warunków, takich jak repozytorium lub gałąź.

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:*"
          }
        }
      }
    ]
  })
}

Poufne dane wyjściowe Terraform

Czasami dane wyjściowe Terraform mogą zawierać poufne informacje, takie jak hasła do baz danych lub klucze prywatne. Takie dane wyjściowe należy oznaczyć jako sensitive.

Po oznaczeniu danych wyjściowych jako poufnych Terraform ukryje ich wartość w danych wyjściowych CLI i pliku stanu podczas wyświetlania, pomagając zapobiec przypadkowemu ujawnieniu.

output "database_password" {
  value       = aws_db_instance.main.password
  description = "The database root password."
  sensitive   = true
}

Sprawdzenie bezpiecznych danych uwierzytelniających

Która metoda jest ogólnie uznawana za najbezpieczniejszą w przypadku uwierzytelniania potoków CI/CD u dostawców chmurowych, ponieważ eliminuje potrzebę przechowywania długotrwałych stałych danych uwierzytelniających?

Podsumowanie: bezpieczne dane uwierzytelniające

Poznali Państwo najważniejsze strategie zarządzania poufnymi danymi w potokach CI/CD Terraform:

  • Unikanie hardcodowania: Nigdy nie należy umieszczać sekretów bezpośrednio w kodzie.
  • Wykorzystywanie sekretów CI/CD: W przypadku stałych danych uwierzytelniających należy używać menedżerów sekretów właściwych dla danej platformy.
  • Stosowanie ról IAM/OIDC: Najwyższy poziom bezpieczeństwa zapewnia używanie ról IAM dostawcy chmury z OIDC w celu uzyskiwania tymczasowych uprawnień bez przechowywania kluczy.
  • Oznaczanie poufnych danych wyjściowych: Należy chronić poufne dane ujawniane przez dane wyjściowe Terraform.

Te praktyki mają kluczowe znaczenie dla utrzymania niezawodnej i bezpiecznej infrastruktury.

Często zadawane pytania

Czy lekcja „Bezpieczne zarządzanie poświadczeniami” jest bezpłatna?

Tak — pełny tekst „Bezpieczne zarządzanie poświadczeniami” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.

Co nauczysz się w „Bezpieczne zarządzanie poświadczeniami”?

Stosuj dobre praktyki bezpiecznego zarządzania poświadczeniami dostawców chmurowych i poufnymi danymi w zautomatyzowanych potokach Terraform. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?

Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Bezpieczne zarządzanie poświadczeniami”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?

Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Terraform w potokach CI/CD
  2. Automatyzacja `plan` i `apply`
  3. Bezpieczne zarządzanie poświadczeniami
  4. GitOps i automatyzacja pull requestów
← Powrót do DevOps Bootcamp