0Pricing
DevOps Bootcamp · Урок

Безопасное управление учётными данными

Реализуйте лучшие практики безопасного управления учётными данными поставщиков облачных услуг и конфиденциальными данными в автоматизированных конвейерах Terraform.

«Безопасное управление учётными данными» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.

Безопасное управление учётными данными в CI/CD

При автоматизации инфраструктуры с помощью Terraform в конвейере CI/CD конвейеру необходим доступ к учётным записям поставщиков облачных услуг. Безопасное управление этими учётными данными крайне важно для предотвращения несанкционированного доступа и утечек данных.

Представьте, что вы даёте роботу ключи от дома. Нужно убедиться, что только нужный робот получает нужные ключи и что эти ключи защищены.

Не встраивайте секреты в код

Распространённая ошибка — непосредственное встраивание конфиденциальной информации, например ключей API или паролей, в файлы конфигурации Terraform или сценарии CI/CD. Это называется жёстким встраиванием.

  • Риск безопасности: секреты становятся частью истории исходного кода (например, Git).
  • Раскрытие: их может увидеть любой пользователь с доступом к репозиторию.
  • Обслуживание: для изменения секрета требуется изменить код и выполнить развёртывание заново.

Переменные среды (основы)

Для локальной разработки или простых сценариев переменные среды — это удобный способ передать учётные данные без их встраивания в код. Вы задаёте их в командной оболочке перед запуском Terraform.

Хотя это лучше, чем встраивание секретов в код, для общих конвейеров CI/CD такой подход не идеален: при неосторожном обращении секреты всё ещё могут быть видны в журналах или списках процессов.

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

Менеджеры секретов платформ CI/CD

Современные платформы CI/CD предлагают встроенные средства управления секретами. Они позволяют безопасно хранить конфиденциальные данные непосредственно на платформе отдельно от репозитория кода.

При запуске конвейера эти секреты передаются в среду сборки как переменные среды или файлы, но никогда не отображаются в журналах и не сохраняются в репозитории.

Пример секретов GitHub Actions

GitHub Actions предоставляет специальный раздел для секретов репозитория. Добавить их можно через Settings > Secrets and variables > Actions > New repository secret.

В файле рабочего процесса эти секреты можно получить через контекст secrets. В журналах они автоматически скрываются.

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

Роли IAM облачных служб для конвейеров

Самый безопасный подход к аутентификации CI/CD — использовать роли Identity and Access Management (IAM) или служебные учётные записи, предоставляемые вашим поставщиком облачных услуг.

Вместо долгоживущих ключей доступа конвейер CI/CD получает временную роль с определёнными разрешениями, часто используя OpenID Connect (OIDC) для установления доверительных отношений. Это полностью устраняет необходимость хранения постоянных учётных данных.

Пример роли AWS IAM и OIDC

В AWS можно настроить роль IAM, которую рабочий процесс GitHub Actions сможет напрямую получать с использованием OIDC. Это означает, что ключи доступа AWS нигде не хранятся!

Для роли задаётся политика доверия, разрешающая провайдеру OIDC GitHub получать эту роль на основании определённых условий (например, репозитория или ветки).

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

Конфиденциальные результаты Terraform

Иногда результаты Terraform могут содержать конфиденциальные данные, например пароли баз данных или закрытые ключи. Такие результаты следует помечать как sensitive.

Если результат помечен как конфиденциальный, Terraform скрывает его значение в выводе CLI и файле состояния при отображении, помогая предотвратить случайное раскрытие.

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

Проверка безопасности учётных данных

Какой метод обычно считается наиболее безопасным для аутентификации конвейеров CI/CD у поставщиков облачных услуг без необходимости хранить долгоживущие постоянные учётные данные?

Повторение: безопасные учётные данные

Вы изучили важные стратегии управления конфиденциальными данными в конвейерах Terraform CI/CD:

  • Не встраивайте секреты в код: никогда не помещайте секреты непосредственно в код.
  • Используйте секреты CI/CD: применяйте специальные менеджеры секретов платформ для постоянных учётных данных.
  • Используйте роли IAM и OIDC: для максимальной безопасности применяйте роли IAM поставщика облачных услуг с OIDC, чтобы получать временные разрешения без хранения ключей.
  • Помечайте конфиденциальные результаты: защищайте конфиденциальные данные, выдаваемые Terraform.

Эти методы крайне важны для поддержания надёжной и безопасной инфраструктуры.

Часто задаваемые вопросы

Урок «Безопасное управление учётными данными» бесплатный?

Да — полный текст урока «Безопасное управление учётными данными» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «Безопасное управление учётными данными»?

Реализуйте лучшие практики безопасного управления учётными данными поставщиков облачных услуг и конфиденциальными данными в автоматизированных конвейерах Terraform. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать DevOps Bootcamp?

Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Безопасное управление учётными данными»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке DevOps Bootcamp?

Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Terraform в конвейерах CI/CD
  2. Автоматизация `plan` и `apply`
  3. Безопасное управление учётными данными
  4. GitOps и автоматизация запросов на слияние
← Назад к DevOps Bootcamp