Бинарные методы авторизации для обеспечения безопасности контейнеров: обзор и примеры кода

Обзор двоичной авторизации:

Двоичная авторизация – это функция безопасности, которая позволяет вам применять меры безопасности во время развертывания ваших образов контейнеров. Это гарантирует, что в ваших кластерах Kubernetes или других средах на основе контейнеров будут развернуты только доверенные образы контейнеров. Ниже приведен обзор нескольких методов, которые можно использовать для двоичной авторизации, а также примеры кода:

  1. Двоичная авторизация Google Cloud. Google Cloud предоставляет встроенную функцию двоичной авторизации, которая интегрируется с Google Kubernetes Engine (GKE) и другими системами оркестрации контейнеров. Для обеспечения проверки образа используются подтверждающие, политики и контроллеры допуска. Вы можете определить политики, определяющие, какие образы контейнеров разрешено развертывать. Вот пример определения политики в YAML:
apiVersion: binaryauthorization.cnrm.cloud.google.com/v1beta1
kind: Policy
metadata:
  name: my-policy
spec:
  globalPolicyEvaluationMode: 'ENABLE'
  defaultAdmissionRule:
    enforcementMode: 'ENFORCED_BLOCK_AND_AUDIT_LOG'
  1. Агент открытой политики (OPA) с гейткипером: OPA — это механизм политик, который позволяет определять и применять пользовательские политики. Gatekeeper — это контроллер доступа для Kubernetes, который использует OPA для обеспечения соблюдения политик во время развертывания образа. Вы можете определять политики, используя язык Rego. Вот пример политики, которая разрешает использование только определенных образов контейнеров:
package main
default allow = false
allow {
    input.request.kind.kind == "Pod"
    container := input.request.object.spec.containers[_]
    container.image == "myregistry/myimage:latest"
}
  1. Сторонние инструменты. Существует несколько сторонних инструментов, обеспечивающих возможности двоичной авторизации. Эти инструменты часто интегрируются с Kubernetes и другими контейнерными платформами для обеспечения проверки изображений. Примеры включают Docker Content Trust, Twistlock и Anchore. Конкретная реализация и примеры кода будут различаться в зависимости от выбранного инструмента.