DevOps Bootcamp · Урок

Сервисные аккаунты и идентичность рабочих нагрузок

Узнайте, как сервисные аккаунты предоставляют модулям Pod собственную идентичность, как работают их токены и как выдавать им доступ с минимальными привилегиями.

Урок 4 из 413 шагов

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

Идентификация рабочих нагрузок

Пользователи проходят аутентификацию в Kubernetes, но подам тоже нужна идентичность, чтобы безопасно обращаться к серверу API. Эту идентичность предоставляет учётная запись службы.

Что такое ServiceAccount

ServiceAccount — это объект в пространстве имён, представляющий идентичность рабочей нагрузки. Каждый под работает от имени одной такой учётной записи; если её не указать, используется default.

apiVersion: v1
kind: ServiceAccount
metadata:
  name: report-generator
  namespace: analytics

Назначение учётной записи службы поду

Укажите serviceAccountName в спецификации пода, чтобы он работал от имени определённой идентичности.

apiVersion: v1
kind: Pod
metadata:
  name: reporter
spec:
  serviceAccountName: report-generator
  containers:
  - name: app
    image: reporter:1.0

Монтируемый токен

Kubernetes монтирует в под краткоживущий токен JWT для учётной записи службы. Этот токен используется для аутентификации вызовов API.

# inside the Pod
cat /var/run/secrets/kubernetes.io/serviceaccount/token

Чем опасна учётная запись по умолчанию

Учётная запись службы default используется всеми подами в пространстве имён. Если предоставить ей разрешения, это чрезмерно расширит доступ для всех подов. Предпочитайте отдельную учётную запись для каждой рабочей нагрузки.

Отключение автоматического монтирования токена

Если под никогда не обращается к API, отключите монтирование токена, чтобы уменьшить поверхность атаки.

apiVersion: v1
kind: Pod
metadata:
  name: no-api-pod
spec:
  automountServiceAccountToken: false
  containers:
  - name: app
    image: myapp:1.0

Предоставление разрешений с помощью RBAC

Учётная запись службы не имеет полномочий, пока Вы не свяжете её с ролью. В RoleBinding учётная запись службы указывается как субъект.

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: reporter-read
  namespace: analytics
subjects:
- kind: ServiceAccount
  name: report-generator
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

Принцип минимальных привилегий на практике

  • Используйте одну учётную запись службы для каждой рабочей нагрузки
  • Предоставляйте только действительно необходимые действия и ресурсы
  • По возможности ограничивайте область пространством имён с помощью Role, а не ClusterRole

Связанные проецируемые токены

Современные токены являются проецируемыми и привязаны к сроку жизни пода; срок их действия невелик. Они автоматически обновляются, поэтому утёкший токен гораздо менее опасен, чем старые секреты с длительным сроком действия.

Идентичность рабочих нагрузок в облаке

Облачные платформы сопоставляют ServiceAccount Kubernetes с облачной идентичностью IAM, например IRSA в AWS или Workload Identity в GKE, поэтому поды получают доступ к облачным ресурсам без хранения статических учётных данных.

metadata:
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::123:role/report-role

Проверка разрешений

Используйте kubectl auth can-i от имени ServiceAccount, чтобы убедиться, что у него есть именно ожидаемый доступ.

kubectl auth can-i list pods \
  --as=system:serviceaccount:analytics:report-generator \
  -n analytics

Быстрая проверка

Проверьте, насколько хорошо Вы поняли тему учётных записей служб.

Итоги

Вы узнали, что ServiceAccount предоставляет поду собственную идентичность, подтверждаемую краткоживущими проецируемыми токенами. Применяйте принцип минимальных привилегий: создавайте отдельную учётную запись для каждой рабочей нагрузки, предоставляйте доступ через привязки RBAC, отключайте монтирование токенов, если оно не используется, и сопоставляйте учётные записи с облачным IAM для доступа без учётных данных.

Можно начать бесплатно

Изучай DevOps Bootcamp с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
142
Уроки
568

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

Урок «Сервисные аккаунты и идентичность рабочих нагрузок» бесплатный?

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

Чему я научусь в уроке «Сервисные аккаунты и идентичность рабочих нагрузок»?

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

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

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

Сколько времени занимает урок «Сервисные аккаунты и идентичность рабочих нагрузок»?

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

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

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

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

  1. Ролевое управление доступом (RBAC)
  2. Сетевые политики для изоляции
  3. Стандарты безопасности Pod
  4. Сервисные аккаунты и идентичность рабочих нагрузок
← Назад к DevOps Bootcamp