Как стать автором
Обновить

Система централизованного управления авторизацией пользователей на FreeIPA в Docker

Время на прочтение6 мин
Количество просмотров90K
Всего голосов 12: ↑12 и ↓0+12
Комментарии21

Комментарии 21

Ну, простите, ничего не могу сделать, демо не моё. Хабр, такой хабр… Сейчас попробую у себя поднять, но у меня Atom сервер, вероятно умрёт ещё раньше. :)
Попробуйте https://freeipa.escalibro.com/ipa/ui/
Login: admin
Password: The-admin-password

Надеюсь никто ломать эту демку не станет, иначе прийдётся закрыть…
Умерла и эта демка (не от нагрузки через FreeIPA, а, видимо, из-за нехватки ОЗУ, в условиях которой была предпринята попытка загрузить VirtualBox, что привело к тому, что сервер ушёл из интернета и уже продолжительное количество времени не выходит на связь).

Есть желающие захостить ещё одну? :)
Официальное демо заработало.
Насчёт постфикса (а не префикса) :Z:rw:Z означает проброс контекстов selinux, :rw — rw-доступ к соответствующему volume, его можно не писать, оно по умолчанию rw.
Для того, чтобы :Z работал система должна быть запущена с рабочим selinux (в permissive, как минимум), докер должен быть запущен с --selinux-enabled. Storage-backend btrfs при этом не работал на 1.3.2 (последний в centos 7).
Спасибо!
Обязательно пишите и про другой проект. Информации много, но как оно на практике пишут единицы. Спасибо.
По docker бы надо уже отдельный тег сделать
Я что-то не понял — freeipa — это обвязка над лдап, которая позволяет мне логиниться как vasya@domain.com на все сервера, куда я влеплю его клиент? а сам freeipa живет в виртуалке докера в данной реализации?
Я не очень понял, если честно
Вы всё верно поняли, только не в виртуалке, а в Docker контейнере.
А у вас только 4 фиксированных контейнера? И адреса у них всегда именно такие? Сомневаюсь. Поищите на хабре статью про skydock и skydns.
У меня N фиксированный железных серверов со статическими IP.
А… Тогда понятно. Я-то думал, что вы виртуальную инфраструктуру поднимаете.
Кстати, стоит знать, что в докере 1.3 и ранее правила iptables писались в основные chain'ы, из-за чего -p/--publish публиковало порт так, что он торчал наружу, в обход firewall'а. Это стоит учитывать, если используется несколько сетей (внешняя и vpn, например) и контейнер должен быть доступен по vpn, но не снаружи.
Расскажите пожалуйста, как вся эта система работает спустя пару лет? Были ли какие-то проблемы? Сколько клиентов у вас? В первом приближении FreeIPA выглядит крутым комбайном, но это же и немного пугает ибо если что сломается — черт ногу сломит потом чинить все это.

Начну с хорошего — она работает. У нас небольшая команда, ~40 учетных записей и к FreeIPA подключены десяток серверов (sssd обеспечивает авторизацию для SSH сессий), GitLab (локальный сервер), Rancher, VPN. Опосредованно через GitLab авторизация работает для Mattermost и Docker Registry (приватный Docker Hub). В целом, если не трогать FreeIPA — всё работает отлично, но в один "прекрасный" я сделал апгрейд без бекапа (сам себе злой Буратино) и что-то пошло не так — один сервис так и не смог заставить после этого стартовать и теперь запуск этого комбайна приходится делать вручную… Как извлечь данные о пользователях (с паролями/хешами) чтобы пересетапить FreeIPA я так и не разобрался — вероятно, никак. Удивительно, но даже в таком состоянии FreeIPA работает без проблем. В целом, если бы была более легковесная альтернатива, я бы с удовольствием её рассмотрел, но я про такую не слышал пока.

389 DS не смотрели? Или у FreeIPA есть какой-то важный уникальный функционал? Что планируете делать дальше?

FreeIPA основан на 389 DS, он просто его упаковывает и предоставляет Web интерфейс. Как-то от Web интерфейса отказываться не хочется...

Прилагаю docker-compose, с помощью поднимаю freeipa. Думаю будет полезно.

version: "3.8"

services:
  freeipa:
    image: freeipa/freeipa-server:centos-8-stream-4.9.10
    container_name: freeipa
    restart: unless-stopped
    hostname: freeipa
    domainname: заменить на fqdn freeipa
    ports:
      - 123:123/udp
      - 389:389
      - 443:443
      - 464:464
      - 464:464/udp
#      - 53:53
#      - 53:53/udp
      - 636:636
      - 80:80
      - 88:88
      - 88:88/udp
    dns:
      - 8.8.8.8
      - 1.1.1.1
    tty: true
    stdin_open: true
    environment:
      IPA_SERVER_HOSTNAME: заменить на fqdn freeipa
      TZ: "Europe/Moscow"
    command:
      - --admin-password=заменить на password freeipa
      - --allow-zone-overlap
      - --auto-forwarders
      - --dirsrv-pin=заменить на password freeipa
      - --domain=заменить на domain freeipa
      - --ds-password=заменить на password freeipa
      - --http-pin=заменить на password freeipa
      - --no-dnssec-validation
      - --no-host-dns
      - --realm=заменить на domain freeipa
      - --setup-dns
      - --unattended
      - -U
    cap_add:
      - SYS_TIME
      - NET_ADMIN
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /sys/fs/cgroup:/sys/fs/cgroup:ro
      - freeipavolume:/data
      - freeipavolumelogs:/var/logs
    sysctls:
      - net.ipv6.conf.all.disable_ipv6=0
      - net.ipv6.conf.lo.disable_ipv6=0
    security_opt:
      - "seccomp:unconfined"

volumes:
  freeipavolume:
  freeipavolumelogs:

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории