• Русский
  • Назначение UID/GID

    В Kubernetes каждый Pod запускается с определённым User ID (UID) и Group ID (GID) для обеспечения безопасности и правильного контроля доступа. По умолчанию Pods могут запускаться от имени пользователя root (UID 0), что может представлять угрозу безопасности. Для повышения безопасности рекомендуется назначать Pods не-root UID и GID.

    ACP позволяет автоматически назначать namespace с определёнными диапазонами UID и GID, чтобы гарантировать, что все Pods в namespace запускаются с заданными идентификаторами пользователя и группы.

    Включение назначения UID/GID

    Чтобы включить назначение UID/GID для namespace, выполните следующие шаги:

    1. Перейдите в Project Management.
    2. В левой навигационной панели нажмите Namespace.
    3. Выберите нужный namespace.
    4. Нажмите Actions > Upate Pod Security Policy.
    5. Измените значение опции Enforce на Restricted, нажмите Update.
    6. Нажмите иконку редактирования рядом с Labels, добавьте метку с ключом security.cpaas.io/enabled и значением true, нажмите Update. (Чтобы отключить, удалите эту метку или установите значение false.)
    7. Нажмите Save.

    Проверка назначения UID/GID

    Диапазон UID/GID

    На странице с деталями namespace вы можете увидеть назначенные диапазоны UID и GID в разделе Annotations.

    Аннотация security.cpaas.io/uid-range указывает диапазон UID/GID, которые могут быть назначены Pods в namespace, например, security.cpaas.io/uid-range=1000002000-1000011999 означает, что диапазон uid/gid находится в пределах от 1000002000 до 1000011999.

    Проверка UID/GID Pod

    Если pod не указывает runAsUser и fsGroup в securityContext, платформа автоматически назначит первое значение из назначенного диапазона uid.

    1. Создайте Pod в namespace с помощью следующей YAML-конфигурации:

      apiVersion: v1
      kind: Pod
      metadata:
        name: uid-gid-test-pod
      spec:
        containers:
        - name: test-container
          image: busybox
          command: ["sleep", "3600"]
    2. После создания Pod получите его YAML, чтобы проверить назначенные UID и GID:

      kubectl get pod uid-gid-test-pod -n <namespace-name> -o yaml

    В YAML Pod будут показаны назначенные UID и GID в разделе securityContext:

    apiVersion: v1
    kind: Pod
    metadata:
      name: uid-gid-test-pod
    spec:
      containers:
      - name: test-container
        image: busybox
        command: ["sleep", "3600"]
        securityContext:
          runAsUser: 1000000
      securityContext:
        fsGroup: 1000000

    Если pod указывает runAsUser и fsGroup в securityContext, платформа проверит, находятся ли указанные UID/GID в пределах назначенного диапазона. Если нет, создание Pod завершится ошибкой.

    1. Создайте Pod в namespace с помощью следующей YAML-конфигурации:

      apiVersion: v1
      kind: Pod
      metadata:
        name: uid-gid-test-pod-invalid
      spec:
        containers:
        - name: test-container
          image: busybox
          command: ["sleep", "3600"]
          securityContext:
            runAsUser: 2000000  # Неверный UID, вне назначенного диапазона
        securityContext:
          fsGroup: 2000000  # Неверный GID, вне назначенного диапазона
    2. После применения YAML создание Pod завершится ошибкой с сообщением, что указанные UID/GID находятся вне назначенного диапазона.