Как восстановить доступ администратора Confluence через базу данных — экстренное руководство
Рассмотрим такой сценарий: утро понедельника, и команде нужно добавить нового участника в критически важное пространство Confluence. Проблема? Единственный администратор только что ушел в двухнедельный отпуск, полностью отключившись от сети. У любого, кто окажется в такой ситуации, может начаться паника... пока он не вспомнит, что у него есть доступ к серверу, на котором работает Confluence. Этот гипотетический сценарий иллюстрирует, когда может потребоваться следующее техническое решение.
Важное примечание: Эта статья предоставляется исключительно в образовательных целях. Методы, описанные здесь, следует использовать только в легитимных экстренных ситуациях, когда у вас есть соответствующее разрешение на доступ к базе данных и изменение административных прав. Несанкционированный доступ или изменение базы данных может нарушать:
- Политики безопасности вашей организации и условия трудоустройства
- Лицензионные соглашения с Atlassian
- Применимые законы о доступе к компьютерам в вашей юрисдикции
Всегда консультируйтесь с вашим ИТ-отделом, юридической командой и ознакомьтесь с политиками вашей организации, прежде чем пытаться вносить какие-либо прямые изменения в базу данных. Автор и этот веб-сайт не несут ответственности за любое неправомерное использование этой информации или ее последствия.
Что вам понадобится сначала
Прежде чем начать, убедитесь, что у вас есть:
- Доступ к серверу, на котором работает база данных Confluence.
- Имя пользователя и пароль для подключения к базе данных Confluence. (Подсказка: проверьте файл
confluence.cfg.xml
!) - Имя пользователя Confluence, которому вы хотите предоставить права администратора.
Шаг 1: Найдите сведения о вашей базе данных Confluence
Confluence хранит информацию о подключении к базе данных в файле под названием confluence.cfg.xml
. Этот файл обычно находится в домашнем каталоге Confluence на вашем сервере (часто что-то вроде /var/atlassian/application-data/confluence
).
Найдите файл:
Если вы знаете путь к домашнему каталогу Confluence, вы можете использовать команду вроде этой (замените /path/to/confluence/home
на фактический путь):
find /path/to/confluence/home -name \"confluence.cfg.xml\"
Если вы не уверены, где находится домашний каталог Confluence, попробуйте выполнить поиск из корневого каталога (это может занять некоторое время) или перейдите в предполагаемый родительский каталог (например, /var/atlassian
или /opt
) и выполните поиск оттуда:
# Сначала перейдите в предполагаемый родительский каталог, затем выполните:
find . -name \"confluence.cfg.xml\"
Эта команда ищет файл в текущем каталоге (.
) и всех его подкаталогах.
Прочитайте файл:
Найдя файл, откройте confluence.cfg.xml
. Найдите строки, подобные этим:
<property name=\"hibernate.connection.url\">jdbc:postgresql://your-db-host:5432/confluence</property>
<property name=\"hibernate.connection.username\">confluenceuser</property>
<property name=\"hibernate.connection.password\">yourpassword</property>
Эти строки сообщают вам тип базы данных (например, PostgreSQL или MySQL), адрес сервера (your-db-host
), имя базы данных, имя пользователя и пароль, которые вам нужны для подключения.
Шаг 2: Подключитесь к базе данных
Теперь используйте найденные сведения для входа в базу данных.
Если это PostgreSQL:
psql -h your-db-host -U confluenceuser -d confluence
Если это MySQL:
mysql -h your-db-host -u confluenceuser -p confluence
Введите пароль, когда будет предложено.
Шаг 3: Получите идентификатор пользователя и идентификатор группы администраторов
Вам понадобятся две части информации из базы данных: идентификатор пользователя и идентификатор группы администраторов.
Найдите идентификатор пользователя (user_key
):
Выполните эту SQL-команду. Замените 'your-username'
на фактическое имя пользователя Confluence, которому вы хотите предоставить права администратора:
SELECT user_key FROM cwd_user WHERE user_name = 'your-username';
Запишите user_key
, которую он выдаст (это будет число).
Найдите идентификатор группы администраторов:
Выполните эту SQL-команду:
SELECT id FROM cwd_group WHERE group_name = 'confluence-administrators';
Запишите id
, которую он выдаст (это идентификатор группы администраторов).
Шаг 4: Добавьте пользователя в группу администраторов
Это решающий шаг, на котором вы связываете пользователя с группой администраторов.
Найдите следующий доступный идентификатор для связи:
Выполните это, чтобы увидеть самый высокий текущий идентификатор в таблице членства:
SELECT MAX(id) FROM cwd_membership;
Возьмите число, которое он выдаст, и добавьте 1. Например, если он показывает 1000
, вы будете использовать 1001
. Это будет уникальный идентификатор для новой связи.
Создайте связь:
Выполните следующую команду `INSERT`. **Аккуратно замените** `NEXT_MEMBERSHIP_ID` на идентификатор, который вы только что рассчитали (например, `1001`), `ADMIN_GROUP_ID` на идентификатор группы администраторов, который вы нашли, и `USER_KEY` на идентификатор пользователя, который вы нашли. Также замените `'your-username'` на фактическое имя пользователя еще раз.
INSERT INTO cwd_membership (id, parent_id, child_user_id, membership_type, group_type, parent_name, lower_parent_name, child_name, lower_child_name)
VALUES (NEXT_MEMBERSHIP_ID, ADMIN_GROUP_ID, USER_KEY, 'GROUP_USER', 'GROUP', 'confluence-administrators', 'confluence-administrators', 'your-username', 'your-username');
Пример:
-- Убедитесь, что вы используете фактические найденные идентификаторы!
INSERT INTO cwd_membership (id, parent_id, child_user_id, membership_type, group_type, parent_name, lower_parent_name, child_name, lower_child_name)
VALUES (1001, 4587522, 241106945, 'GROUP_USER', 'GROUP', 'confluence-administrators', 'confluence-administrators', 'jane.doe', 'jane.doe');
(Примечание: если вы получите ошибку об отсутствующих столбцах, ваша версия Confluence может отличаться. Возможно, вам понадобятся только `id`, `parent_id` и `child_user_id` в операторе `INSERT`. При необходимости проверьте структуру вашей таблицы.)
Шаг 5: Перезапустите Confluence
Изменение не вступит в силу до перезапуска Confluence.
Вариант 1: Использование systemd (распространено в Linux)
sudo systemctl restart confluence
Вариант 2: Использование скриптов Confluence
cd /path/to/confluence/bin # Перейдите в каталог bin Confluence
./shutdown.sh
./startup.sh # Подождите немного после остановки перед запуском
Как только Confluence снова заработает, выбранный вами пользователь сможет войти в систему с полными правами администратора!
Краткие советы и предупреждения
- Сначала сделайте резервную копию! Серьезно, всегда делайте резервную копию базы данных перед внесением каких-либо прямых изменений.
- База данных имеет значение: SQL-команды могут потребовать небольших корректировок, если вы используете Oracle или SQL Server вместо PostgreSQL/MySQL.
- Проверьте имена: Если команды не удаются, дважды проверьте имена таблиц (
cwd_user
,cwd_group
,cwd_membership
), так как они могут незначительно отличаться в разных версиях Confluence. - Будьте осторожны: Вы обходите обычные проверки безопасности. Убедитесь, что вы предоставляете права администратора правильной учетной записи пользователя.
- Проверьте свои политики: Этот метод следует использовать только в экстренных ситуациях, когда у вас есть соответствующее разрешение. Многие организации имеют политики в отношении доступа к базам данных и прав администратора. Всегда убеждайтесь, что вы соблюдаете правила ИТ-управления вашей компании и имеете соответствующее одобрение, прежде чем вносить эти изменения.
- Документируйте свои действия: Если вы используете этот метод, документируйте, что вы сделали, когда и почему. Прозрачность — ключ к успеху при внесении системных изменений, подобных этому.
Заключение
Потеря доступа администратора к вашему экземпляру Confluence может быть стрессовой ситуацией, особенно когда от нее зависит критически важная работа. Хотя метод, описанный в этом руководстве, следует рассматривать как крайнюю меру, он предоставляет ИТ-администраторам жизнеспособное экстренное решение при наличии надлежащего разрешения. Помните, что профилактика всегда лучше лечения; внедрение надлежащего управления доступом администратора и документации может помочь избежать таких ситуаций вовсе.
Часто задаваемые вопросы
Безопасно ли напрямую изменять базу данных Confluence?
Прямые изменения базы данных всегда сопряжены с риском и должны выполняться только квалифицированными администраторами баз данных с соответствующим разрешением, после создания полной резервной копии. Этот подход следует использовать только в экстренных ситуациях, когда нет других вариантов.
Будет ли этот метод работать для Confluence, размещенного в облаке?
Нет, этот метод работает только для локально размещенных экземпляров Confluence, где у вас есть прямой доступ к базовой базе данных. Для Confluence, размещенного в облаке, обратитесь в службу поддержки Atlassian для получения вариантов восстановления доступа администратора.
Существуют ли альтернативные способы восстановления доступа администратора к Confluence?
Да, альтернативы включают: 1) Связь с существующими администраторами, 2) Использование режима восстановления Confluence, если он включен, 3) Восстановление из резервной копии, где у вас был доступ администратора, или 4) Обращение в службу поддержки Atlassian за руководством, специфичным для вашей ситуации.