Распечатать мой пароль sa
Я вошел в свой sqlserver с зарегистрированной учетной записью sql "sa" и хочу напечатать (а не изменить) свой текущий пароль. Я могу изменить его, но у меня есть приложение, использующее текущий пароль.
я сделал
выберите * из sys.sql_logins, где name ='sa'
но это дает мне хешированный пароль
Если это невозможно, как экспортировать мое соединение sa в другой экземпляр сервера sql?
1 ответ
ВНИМАНИЕ - УЖАСНАЯ ПРАКТИКА
Измените ваше приложение, чтобы использовать пользователя ДРУГОЕ, чем sa, и желательно без разрешений sysadmin. Обычно достаточно уровня базы данных db_datareader, db_datawriter и MAYBE db_ddladmin, хотя для базы данных может потребоваться GRANT EXECUTE.
Если не можете, тогда спорьте еще. На письме.
Если вы снова проиграете, смените пароль sa на длинный, надежный, криптографически случайный пароль в сочетании с обновлением приложения новым паролем.
И убедитесь, что этот экземпляр используется ТОЛЬКО для этого приложения, поэтому риск ограничен этой областью.
Восстановление текущего пароля sa
Во-первых, вы системный администратор, не так ли? Вы уже должны знать пароль sa! Если вы проиграли дважды, просто измените пароль sa на другом экземпляре на тот же (или, лучше, смените их оба на что-то лучше), через ALTER LOGIN (ниже) или через графический интерфейс.
Во-вторых, поймите, что КАЖДЫЙ ПОЛЬЗОВАТЕЛЬ ЭТОГО ПРИЛОЖЕНИЯ МОЖЕТ ПОЛУЧИТЬ ВАШ ПАРОЛЬ SA - они почти наверняка могут извлечь его прямо из приложения с помощью шестнадцатеричного редактора, ища строку pwd или pass (либо UCS-2 "Unicode", либо ASCII).
У вас есть приложение, верно? Проконсультируйтесь с местными администраторами безопасности и узнайте, можете ли вы открыть его в шестнадцатеричном редакторе и найти пароль sa самостоятельно.
Перемещение пароля sa
В общем, если вы хотите переместить один и тот же пароль, вы можете использовать
ALTER LOGIN sa PASSWORD = 'строка хеша' HASHED
изменить это.
Не делайте этого регулярно - если кто-то получает хэши всех ваших паролей (точно так же, как вы их получаете), лучше, чтобы у каждого была уникальная соль, поэтому злоумышленнику придется провести больше работы, проверяя множество солей, прежде чем он начнет находить пароли.
Не делайте этого от более низкого уровня защиты до более высокого уровня защиты - SQL Server 2005, 2008 и 2008R2 используют один и тот же алгоритм. SQL Server 2012 и 2014 используют то же самое. Не перемещайте хэш 2005/8/8R2 в 2012/14; он значительно слабее (и хэширование паролей в 2012/14 году жалко).
Таким образом, вам лучше сменить пароль на тот, который вы хотите в открытом тексте, поэтому SQL Server генерирует новую соль. Хэш пароля невероятно слаб, одна итерация SHA-1 или SHA-512, поэтому ему нужна вся помощь, которую он может получить.