Vault SSH CA: централізоване управління доступом за сертифікатами

Статичні ключі розходяться по парку серверів, і ніхто точно не знає, у кого залишився доступ. Ми налаштовуємо SSH Certificate Authority під ключ: видаємо сертифікати з коротким строком дії, ведемо ролі й відкликання доступу. Скорочуємо ручну роботу з доступами в рази, а звільнений співробітник втрачає вхід автоматично.
Часті запитання

Навіщо потрібен SSH Certificate Authority замість статичних ключів

Приватний ключ, скопійований у резервну копію, на другий ноутбук або в конфігурацію збірки, перестає бути секретом — але продовжує працювати. Довгоживучі SSH-ключі живуть роками: їх видають підряднику на час проєкту, а закривають ручним обходом парку.

На момент, коли потрібно довести, у кого є вхід, актуального списку немає ні в експлуатації, ні в служби безпеки.

SSH Certificate Authority знімає саму причину проблеми: замість довгоживучого ключа інженер отримує короткоживучий сертифікат, підписаний центром під конкретну роль.

На серверах залишається лише публічний ключ центру, приватний не покидає сховище, а строк дії та набір прав задаються в сертифікаті, а не на хості.

Управління SSH-доступом переїжджає в одну точку: видача, строк, відкликання. Інвентаризація ключів перетворюється на список виданих сертифікатів із власником і часом, а не на перепис файлів по всьому парку. Аудит доступів спирається на один журнал: хто, коли і під якою роллю отримав вхід.

Відкликання перестає бути ручною операцією. Видача припиняється, а вже виданий сертифікат спливає сам через заданий строк — від кількох хвилин до зміни. Копія, що залишилася на чужій машині, на цей момент марна: підпис центру в неї є, а дійсності вже немає.

Нижче розбираємо, як це поставити: де розміщувати центр, як пов'язати його з поточною автентифікацією і що робити з уже розісланими ключами.

Що дає централізована видача сертифікатів доступу

Централізована видача будується на одному довіреному ключі центру сертифікації: sshd на кожному хості читає його з TrustedUserCAKeys, а вхід дозволяється сертифікатом, підписаним цим центром.

Особисті відкриті ключі в authorized_keys перестають бути точкою управління — на хостах їх просто не залишається, а роль користувача задається полем principals у сертифікаті. Інженер отримує доступ тією ж звичною командою, змінюється лише джерело довіри.

Строк життя сертифіката стає параметром доступу. Для автоматизації та службових завдань видаємо його на хвилини, для ручного чергування — на робочу зміну, і після завершення вікна доступ закривається сам, без чиєїсь участі.

Вікно скорочується з «поки не згадають» до вимірюваного інтервалу, і цей інтервал однаковий для всіх хостів, бо задається в одному місці, а не в конфігурації кожної машини.

Відкликання доступу перестає бути проєктом. Достатньо припинити видачу нових сертифікатів для ролі або людини, а чинні погасити через список відкликання — це хвилини роботи, а не обхід парку хостів і правка ключів.

Під час звільнення або зміни ролі вікно доступу не тягнеться до наступної ревізії доступів, а закривається того ж дня.

З цього зникає цілий клас відмов: «забули видалити ключ». Нікому забувати — нічого видаляти, бо постійних ключів на хостах немає, а виданий сертифікат спливає за розкладом.

Окремо вирішується й спадщина, коли той самий ключ лежить у спільній папці й переходить між підрядниками та командами роками: такий ключ просто не проходить перевірку.

Журнал підключень стає повним і однозначним. У логах хоста видно серійний номер сертифіката, набір principals і відпечаток центру сертифікації, а в журналі видачі — кому, на яку роль і на який строк його було видано.

Два записи пов'язуються за номером, тому на питання «хто і коли заходив на цей хост» є відповідь без звірки таблиць доступу вручну.

Способи видачі SSH-доступу: порівняння варіантів

Варіантів три, і різняться вони не інструментом, а точкою, де ухвалюється рішення про доступ: на самому хості, у центрі сертифікації або в обох одразу. Практичний критерій один — як швидко закривається доступ інженеру, який пішов або втратив ноутбук.

Усе інше — зручність видачі, строк життя доступу, повнота аудиту — наслідок вибраної точки. Нижче порівняння за двома осями: коли варіант доречний і чим за нього платить команда.

Варіант Коли підходить Обмеження
Статичні ключі в authorized_keys Невеликий парк хостів, один-два адміністратори, склад доступу змінюється рідко Відкликання — ручна правка на кожному хості; у ключа немає строку життя; копія файлу обходить контроль; аудит лише за журналами входу
Сертифікати з централізованою видачею Парк зростає, потрібні короткий строк життя доступу та єдині політики доступу на всі хости Потрібен власний центр сертифікації та його обслуговування; хости мають йому довіряти; потрібні регламенти видачі та ротації
Гібридний режим доступу Перехідний період: нові хости вже на сертифікатах, старі ще на ключах Два контури довіри одночасно; потрібно точно знати, хто і де ходить по статиці; вікно переходу треба обмежувати датою

Чистої схеми на практиці майже не буває: парк хостів оновлюється нерівномірно, і частина машин ще живе зі статикою.

Тому перехід оформлюють окремим етапом із датою закриття — інакше гібридний період перетворюється на постійний режим із подвійним обліком доступу та зайвими точками відмови.

Порядок впровадження: від аудиту ключів до передачі регламентів

Порядок впровадження сертифікатів будується так, щоб доступ до серверів не переривався ні на один черговий цикл. Спочатку фіксуємо поточний стан, потім проєктуємо схему довіри, і лише потім видаємо сертифікати по-справжньому — спочатку пілотній групі, потім усьому парку.

  1. Інвентаризація парку. Збираємо список хостів, службових облікових записів і людей, які ходять по SSH, відзначаємо, де осіли статичні ключі та які давно не використовувалися. Без цієї карти не зрозуміти, які ролі та принципали потрібні.
  2. Проєктування схеми довіри. Визначаємо ролі видачі, набір принципалів, строк життя сертифікатів і шаблони підпису; вирішуємо, що робити з довгоживучими ключами та як влаштувати аварійний доступ.
  3. Налаштування видачі. Розгортаємо Vault як центр сертифікації, пов'язуємо його з каталогом користувачів, вмикаємо журнал видачі та перевірку підпису на боці хостів.
  4. Пілотна група. Переводимо 5–10 інженерів і чергову зміну, перевіряємо штатний вхід, спливання сертифіката та відкликання доступу. Якщо черговий не може увійти в аварію, схема не готова.
  5. Поетапний перевід парку. Йдемо сегментами: спочатку тестові та внутрішні хости, потім робочі сервіси, в останню чергу критичні вузли. На кожному етапі видно частку успішних входів і причини відмов.
  6. Передача регламентів. Віддаємо документацію: як видати й відкликати сертифікат, що робити при компрометації, порядок чергування та підключення нових співробітників.

Політики доступу, ролі та документація після впровадження

Після впровадження в замовника залишається не лише працюючий доступ за сертифікатами, а й повний комплект артефактів у його власному репозиторії. Без нього рішення перетворюється на чорну скриньку, яку здатен супроводжувати лише автор налаштування. Нижче — що саме передаємо і за якими ознаками перевіряємо, що цим можна користуватися самостійно.

  • Схема довіри. Де лежить приватний ключ центру сертифікації, як хости отримують довіру до нього в налаштуванні sshd, які контури розведені окремими центрами, а не одним спільним.
  • Ролі підпису. Файли ролей під кожну групу: час життя сертифіката, дозволені принципали, набір розширень, заборона пробросу агента та довільних команд.
  • Політики доступу. Відповідність ролей і груп із каталогу, окремі правила для службових облікових записів і чергових, порядок видачі доступу поза планом із зазначенням того, хто погоджує.
  • Регламент відкликання. Як відкликається один ключ і як — доступ усій групі, куди потрапляє список відкликаних, за який час він розходиться по хостах і як перевірити факт відкликання.
  • Інструкції для чергових. Що робити при втраті ключа, кому ескалювати, як видати тимчасовий доступ і де подивитися журнал підпису щодо конкретного співробітника.
  • Аудит і виписки. Журналювання кожної видачі: хто, коли, за якою роллю і з яким принципалом; вивантаження в загальний збір логів і строк зберігання.
  • Експлуатаційна документація. Схеми стендів, ротація ключа центру, введення нових хостів і відновлення центру з резервної копії з перевіркою довіри на хостах.

Кейс: перехід із довгоживучих ключів на сертифікати

Клієнт — розподілений парк із кількох сотень серверів у трьох контурах. Доступ видавався за SSH-ключами, які жили роками: ключ співробітника залишався робочим і після звільнення, а інвентарю «хто куди ходить» не було.

Відкликання перетворювалося на окреме завдання — погодження, розсилка по командах і ручна правка списків довірених ключів на кожному вузлі.

Як було

Аудит виявив близько шестисот довгоживучих ключів; частина не використовувалася понад рік, але залишалася в довірених списках. Середній строк відкликання після звільнення — кілька днів, і весь цей час перепустка залишалася чинною.

Вхід виконувався спільним ключем на роль, тому за журналами не можна було розрізнити, хто саме заходив на вузол.

Що змінили і що стало

Розгорнули Vault у ролі SSH Certificate Authority: довірені центри прописали в конфігурації вузлів, а ключі стали підписуватися на короткий строк — робоча зміна замість безстрокового доступу.

Права розклали за ролями через принципали та політики: адміністратор бази та черговий інженер отримують різні набори хостів.

Строк життя сертифіката — 8 годин, продовження автоматичне, поки сесія активна. Відкликання займає хвилини: сертифікат потрапляє до списку відкликання, і вузли перестають пускати власника без обходу парку вручну.

Частка довгоживучих ключів скоротилася до одиниць відсотків — залишилися службові облікові записи з обмеженими правами, а інциденти з чинним доступом звільнених припинилися.

Що робити, якщо статичні ключі вже розгорнуті в парку серверів?

Міграція не вимагає зупиняти доступ: на кожному вузлі до authorized_keys додається директива TrustedUserCAKeys із публічним ключем центру сертифікації, і сервер починає приймати обидва способи автентифікації одночасно.

Статичні ключі при цьому залишаються робочими, а отже відкат на будь-якому кроці коштує одного рядка в sshd_config. Саме це робить перехід керованим: старий контур живе рівно стільки, скільки потрібно, і вимикається усвідомлено, а не в момент аварії.

Порядок етапів підпорядкований правилу «спочатку розширюємо довіру, потім звужуємо права». Насамперед інвентаризація: хто підключається, до яких вузлів, з яких адрес і під яким іменем — за статикою це видно лише опосередковано, тому реєстр збирається з журналів і конфігурацій.

Далі довіра до центру роздається по всьому парку, потім видаються самі сертифікати, і лише після того, як весь трафік пішов через них, статика видаляється з authorized_keys.

Сумісність зі старими серверами вирішується не «оновити все», а розділенням на контури. Там, де актуальна гілка OpenSSH або оновлюваний дистрибутив, сертифікати вмикаються штатно.

Вузли, які оновити не можна — застарілі збірки, вбудовані системи, обладнання із закритою прошивкою, — залишаються на локальних ключах в окремому контурі з жорстким обмеженням за вихідними адресами та строком дії. Це не компроміс, а явна межа: вона документується і поступово скорочується.

Окрема робота — підрядники. Сертифікат видається не людині взагалі, а ролі з набором principals і коротким строком життя, тому доступ перестає бути безстроковим.

У журналах з'являється конкретне ім'я та серійний номер замість рядка «підключився спільний ключ» — під час розбору інциденту це різниця між розслідуванням і здогадами.

Завершується перехід видаленням статичних ключів і переводом доступу лише через сертифікати, при цьому на кожному контурі залишається задокументований спосіб відкату. Розбираємо, як розкласти такий перехід за етапами під ваш парк.

Технічні сумніви: строки життя, відкликання та сумісність

Питання на старті впровадження майже завжди одні й ті самі: скільки живе сертифікат, що робити при звільненні, чи доведеться обходити сотні хостів руками і що залишиться в журналах.

Нижче — відповіді по суті: з параметрами, які ми фіксуємо в конфігурації, і з описом того, як це поводиться в реальній експлуатації.

Наскільки коротким має бути строк життя сертифіката?

Робочий діапазон — від кількох годин до однієї доби для людей і хвилини для службових завдань. Випуск відбувається в момент підключення, приватний ключ не покидає робочу станцію інженера, тому довгий строк життя не дає жодних зручностей, лише ризик.

Короткий строк працює як заміна відкликання: на момент, коли доступ потрібно забрати, сертифікат найчастіше вже сплив, а продовження відбувається непомітно для людини.

Як відкликати доступ, якщо співробітник пішов, а сертифікат ще діє?

Два незалежні рівні. Перший — список відкликаних сертифікатів, який роздається на хости й підхоплюється службою доступу без перезапуску та без розриву активних сесій. Другий — блокування облікового запису в каталозі: продовження в цьому разі просто не видається. Вікно, у якому старий сертифікат ще приймається, обмежене хвилинами, а не добами.

Як хост переконується, що пред'явлений сертифікат справжній?

Хост довіряє лише відкритому ключу центру підпису — він один раз прописується в його налаштуваннях. Підпис перевіряється локально, звернення до центру в момент входу не відбувається, тому недоступність центру не блокує роботу.

Принципали та додаткові обмеження всередині сертифіката задають, на які облікові записи та хости він діє, — той самий ключ не відкриває все одразу.

Що потрапить у журналювання доступу?

У журналах залишається відпечаток і серійний номер сертифіката, а не лише ім'я користувача: сесію можна пов'язати з конкретним випуском і зрозуміти, яким ключем користувалися.

Записи збираються в загальний потік з ідентифікатором запиту, тому розбір інциденту не перетворюється на звірку логів по кожному хосту.

Чи можна впроваджувати поетапно, не зупиняючи роботу?

Так. Спочатку піднімається центр підпису і переводиться один контур, звичайні ключі продовжують діяти паралельно. Потім групи хостів переводяться по черзі, на кожному кроці відкат — повернення довіри до попередніх ключів, він оборотний і не потребує перезбирання інфраструктури.

Обговоримо задачу: підберемо схему доступу під ваш контур

Щоб оцінка була точною, а не «за відчуттями», нам потрібно побачити поточний ландшафт доступу: скільки машин у контурі, як ключі видаються сьогодні і що має потрапляти до журналу. Нижче — що варто підготувати до розмови. Зберемо це за одну сесію і повернемося з оцінкою та планом впровадження.

  • Карта парку: перелік серверів і стендів, згрупований за середовищами та рівнями критичності.
  • Ролі та принципали: хто до яких груп входить, які права потрібні, кому доступ видається тимчасово.
  • Поточна видача: як ключі з'являються зараз — вручну, скриптом, через панель або доменний обліковий запис.
  • Точки входу: бастіон, проміжні хости, раннери збірки, адміністративні підмережі.
  • Строк життя та відкликання: максимальний час дії сертифіката і порядок негайного відкликання при звільненні або інциденті.
  • Джерело облікових даних: каталог користувачів, служба єдиного входу або інвентар — щоб пов'язати видачу зі штатним розписом.
  • Обмеження контуру: ізольовані мережі, відсутність вихідного доступу, вимоги аудиту та внутрішні регламенти.
  • Цільові метрики: час видачі доступу, частка серверів під сертифікатами, обсяг ручних операцій.

За цим набором ми запропонуємо схему доступу під ваш контур: де розміщується довірений центр, як влаштовані ролі, строки та відкликання, що потрапляє до журналу і як це підтверджується перевіркою.

Опишіть задачу — повернемося з оцінкою, планом за етапами, зонами відповідальності та точками відкату на кожному кроці.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139