Облачная платформаEvolution

Быстрый старт сервиса Container Security


С помощью быстрого старта вы:

  • Установите Container Security в кластер Managed Kubernetes.

  • Настроите доступ к панели управления Container Security с использованием плагина Ingress Nginx.

  • Создадите свою первую политику допуска.

  • Проверите выполнение политики допуска и посмотрите отчеты.

Перед началом работы

Если вы уже зарегистрированы, войдите под своей учетной записью.

1. Подготовьте кластер Managed Kubernetes и подключитесь к нему

  1. Убедитесь, что у вас достаточно прав на создание кластера Managed Kubernetes.

  2. Создайте кластер с параметрами:

    • Названиеcloudru-cluster.

    • Количество мастер-узлов1.

    • Гарантированная доля vCPU, %10.

    • CPU, шт.2.

    • RAM, ГБ4.

  3. В кластере cloudru-cluster создайте группу узлов с параметрами:

    • Названиеcloudru-nodepool.

    • Гарантированная доля vCPU, %10.

    • CPU, шт.4.

    • RAM, ГБ8.

    • Объем хранилища, ГБ40.

    • Количество узлов1.

  4. В кластер cloudru-cluster установите Ingress Nginx.

  5. В кластер cloudru-cluster установите Trivy.

2. Установите Container Security в созданный кластер

  1. В личном кабинете перейдите в сервис Container Security и нажмите Добавить плагин.

  2. Выберите кластер cloudru-cluster и нажмите Установить.

  3. На странице установки плагина на вкладке Расширенная конфигурация выберите YAML и укажите:

    core:
    controller:
    replicas: 1
    console:
    svc:
    type: "ClusterIP"
    ingress:
    enabled: true
    host: "console.evocs.ru"
    ingressClassName: "nginx"
  4. Нажмите Установить.

3. Получите внешний IP и пропишите hosts-запись

  1. Чтобы проверить назначенный IP-адрес, в терминале или PowerShell выполните:

    kubectl get ingress -n evocs

    В ответе значение поля ADDRESS — IP-адрес для доступа к панели управления из интернет.

  2. На устройстве, с которого подключились к кластеру, пропишите в hosts:

    <address> console.evocs.ru
  3. В адресную строку браузера введите https://console.evocs.ru.

  4. Нажмите Войдите по Cloud.ru ID.

4. Создайте политику

Политика будет проверять наличие тега у образа при развертывании пода.

  1. В панели управления Container Security перейдите в раздел Контроль допуска → Политики допуска.

  2. Нажмите Создать политику и выберите Kyverno (весь кластер).

  3. Скопируйте в окно редактора политику disallow-latest-tag-block:

    apiVersion: policies.kyverno.io/v1
    kind: ValidatingPolicy
    metadata:
    name: disallow-latest-tag-block
    spec:
    validationActions: [Audit,Deny]
    evaluation:
    background:
    enabled: true
    matchConstraints:
    resourceRules:
    - apiGroups: ['']
    apiVersions: [v1]
    operations: [CREATE, UPDATE]
    resources: [pods]
    validations:
    - expression: "object.spec.containers.all(container, container.image.contains(':'))"
    message: "An image tag is required."
    - expression: "object.spec.containers.all(container, !container.image.endsWith(':latest'))"
    message: "Using a mutable image tag e.g. 'latest' is not allowed."

    Если тег для образа указан не будет, правило заблокирует создание пода.

  4. Нажмите Создать.

5. Создайте под с образом контейнера без тега

  1. На устройстве, с которого подключились к кластеру, создайте файл cloudru-nginx-disallowed-pod.yaml и скопируйте в него следующий манифест:

    apiVersion: v1
    kind: Pod
    metadata:
    name: cloudru-nginx-disallowed-pod
    spec:
    containers:
    - name: cloudru-nginx-disallowed-pod
    image: nginx
  2. В терминале или PowerShell выполните команду:

    kubectl create -f cloudru-nginx-disallowed-pod.yaml

    Создание пода будет заблокировано.

    Примерный результат:

    ...
    resource Pod/default/cloudru-nginx-disallowed-pod was blocked due to the following policies
    disallow-latest-tag-block:
    validation failure: validation error: An image tag is required.
  3. Чтобы посмотреть отчет, перейдите в раздел Контроль допуска → Отчеты и в списке отчетов нажмите на cloudru-nginx-disallowed-pod.

6. Создайте под с образом контейнера и тегом latest

  1. Создайте файл cloudru-nginx-latest-tag.yaml и скопируйте в него следующую спецификацию:

    apiVersion: v1
    kind: Pod
    metadata:
    name: cloudru-nginx-latest-tag
    spec:
    containers:
    - name: cloudru-nginx-latest-tag
    image: nginx:latest
  2. Выполните команду:

    kubectl create -f cloudru-nginx-latest-tag.yaml

    Создание пода будет заблокировано.

    Примерный результат:

    ...
    resource Pod/default/cloudru-nginx-latest-tag was blocked due to the following policies
    disallow-latest-tag-block:
    Using a mutable image tag e.g. 'latest' is not allowed.
  3. Чтобы посмотреть отчет, перейдите в раздел Контроль допуска → Отчеты и в списке отчетов нажмите на cloudru-nginx-latest-tag.

7. Попробуйте создать под с образом контейнера и тегом, отличным от latest

  1. Создайте файл cloudru-nginx-allowed-pod.yaml и скопируйте в него следующую спецификацию:

    apiVersion: v1
    kind: Pod
    metadata:
    name: cloudru-nginx-allowed-pod
    spec:
    containers:
    - name: cloudru-nginx-allowed-pod
    image: nginx:1.26.3
  2. Выполните команду:

    kubectl create -f cloudru-nginx-allowed-pod.yaml

    Под cloudru-nginx-allowed-pod создан.

  3. Чтобы посмотреть отчет, перейдите в раздел Контроль допуска → Отчеты и в списке отчетов нажмите на cloudru-nginx-allowed-pod.

Что дальше

Далее вы можете: