Я запускаю Apache Tomcat на Windows 2003 Server, и у меня есть данные, хранящиеся в базе данных mySQL.
Как я могу запретить администратору сервера видеть какие-либо данные?
Вы действительно не можете.
Пользователь «Администратор» на машине Windows имеет полный контроль над этой машиной. Вот так вот".
Кто-то, вероятно, предложит вам зашифровать данные в базе. Предполагая, что ключи для этого шифрования находятся где-то на этом компьютере (поскольку вы хотите, чтобы приложение имело к ним доступ), «Администратор» может просто взять этот ключ и расшифровать данные.
Кто-то другой предложит вам использовать какие-то права доступа к файлам. Это тоже не сработает - «Администратор» может их просто изменить.
Если вы не можете предоставить своему пользователю «Администратор» ограниченную учетную запись, с помощью которой он может выполнять все свои повседневные действия, но в остальном не являетесь «Администратором», единственный ответ - «не храните там такие данные. ". Любой «ответ», в котором пользователь «Администратор» сохраняет свои права «Администратор», не даст вам реальной защиты.
Редактирование ради Джимби:
JimB оставил несколько комментариев, которые, я думаю, заслуживают более подробного ответа, чем я могу дать в комментарии, поэтому я оставляю здесь правку.
Я ответил на вопрос автора с технической точностью с учетом привилегий, предоставленных группе «Администраторы» Windows. Автор, безусловно, может проводить все время, которое ему нужно, «настраивая» разрешения безопасности по умолчанию в операционной системе, пытаясь либо (а) лишить группу «Администраторы» привилегий, эквивалентных root (что, как я ожидал, Microsoft скажет вам не делать) или (б) создать группу с меньшими привилегиями, которая могла бы выполнять все необходимые повседневные функции администрирования сервера, но в противном случае не была бы «Администратором».
Я предполагаю, что, если потребности плаката в «администраторе сервера» не являются очень элементарными, он попадет на неизведанную и недокументированную территорию.
Возможно, плакату нужен «администратор сервера», который может выполнять только самые основные операции с серверным компьютером, а пароль «администратора» может быть установлен в произвольно сложной строке и сохранен в запертом сейфе. Это одна из возможных стратегий, если бизнес-требования плаката, касающиеся "администратора сервера", позволяют такое.
Если требования к плакату более сложные, я ожидаю, что МНОГО списков ACL (по крайней мере, в файловой системе, реестре, диспетчере глобальных объектов и диспетчере управления службами) необходимо будет изменить, чтобы предоставить члену группы, не являющемуся администратором, возможности, близкие к возможностям члена группы «Администраторы». . Плакат также потеряет полезность хорошо известного BUILTIN \ Administrators SID.
Я был бы в шоке если нет каких-то предположений, довольно глубоко укоренившихся в ОС Windows NT, относительно готовых привилегий, назначенных членам группы «Администраторы». Попытка отобрать привилегии у группы BUILTIN \ Administrators, на мой взгляд, вызывает нестабильность и проблемы с ОС.
Я не делал никаких заявлений о "бизнес-политике", обеспечивающей безопасность. Я не знаю, что JimB получил из моего сообщения или комментариев, которые натолкнули его на эту идею. Бизнес-политика не может изменить способ работы кода, и все мои утверждения относятся к тому, как работает код.
Проверка того, что произошло нарушение, не снижает его вероятность. Вы можете знать, что кто-то нарушил конфиденциальность, но никакой механизм аудита не может сказать вам, сколько или несколько копий конфиденциальных битов было сделано после нарушения конфиденциальности. Это логическое значение - конфиденциальность либо была нарушена, либо нет. Аудит может сказать вам это, и не более того.
Бизнес может попытаться «обеспечить безопасность» во всей «бизнес-политике», которую они хотели бы, но если эта «бизнес-политика» не согласуется с тем, как работает код и реальность, это действительно бессмысленно.
Сказанное выше, но я бы добавил, что неэтичный администратор ничего не стоит. Если вы не доверяете своему системному администратору, чтобы он не заглядывал (кроме случаев, когда это требуется для выполнения его обязанностей), то вам действительно нужно найти замену.
В общем, вы можете сделать так, чтобы административные учетные записи не могли что-то делать, но администраторы обычно могут включить это, чтобы они могли.
Например, вы можете запретить доступ на чтение к каталогу для пользователя Administrator, но администратор может снова предоставить себе доступ, если захотят.
Итак, с этим, я думаю, вы можете (но не уверен) просто запретить доступ для чтения к указанным базам данных, отредактировав привилегии MySQL для пользователя root в базе данных MySQL. Но это ненастоящая безопасность. Или вы не можете дать администратору какой-либо из паролей MySQL, но он, вероятно, сможет найти способ просмотреть данные, если у них есть доступ к серверу (или даже сбросить пароль root).
Вопросы, о которых говорил Эван, - одна из причин, по которой системные администраторы так тщательно проверяют мою работу. В конечном итоге каждый должен доверять нам свои данные, и у каждого есть свои требования к «доверию». В некоторых системах можно заблокировать системного администратора, но Windows не является такой системой.
Есть кое-что, что вы можете сделать на применение уровень, чтобы скрыть ваши данные от любопытных системных администраторов, например, используя таблицы с зашифрованными данными в них. Это зависит от наличия ключей шифрования и данных в разных доменах системного администратора, иначе в этом нет особого смысла. Примером этого может быть приложение Tomcat / PHP, работающее на сервере Linux, и младше возраста системных администраторов Linux, с базой данных на MS-SQL, младше возраста системных администраторов Microsoft. Если предположить, что администраторы Linux / MS не вступают в сговор, вероятность того, что данные будут отслежены, будет ниже.
Вы можете запретить администратору доступ ко всему, что захотите. По умолчанию администратор просто имеет права практически на все. То, что вы не можете удалить (по крайней мере, я никогда этого не делал - это может быть возможно, но я бы не рекомендовал это), так это возможность администратора взять на себя ответственность за файлы, о которых идет речь, и прочитать их, однако это проверяемый и необратимый - нет права собственности на предоставление прав.
Администратор - это особая учетная запись, но она не эквивалентна учетной записи root в системе UNIX. Это очень распространенное заблуждение.
Вы также можете использовать инфраструктура классификации файлов примерно через месяц, когда выйдет 2008 R2.
Большинство основных операционных систем (Linux, Windows, Mac OS X) не могут делать это напрямую. Всегда есть учетная запись, которая может делать все в системе (администратор или root), и эта учетная запись необходима для многих административных задач. На самом деле, никак.
Чтобы это стало возможным, вам понадобится что-то вроде Многоуровневая безопасность ОС или поддерживающая Обязательный контроль доступа. Что-то вроде SELinux, или Trusted Solaris, или Обязательный контроль целостности под Windows Vista.
Тем не менее, это очень сложно настроить и может вызвать проблемы совместимости с приложениями, которые были написаны без учета ограничений. И в конечном итоге кто то по-прежнему потребуется доступ для изменения настроек безопасности.
Поэтому, хотя это технически возможно, вам следует тщательно оценить, стоит ли оно дополнительных сложностей и затрат.
Получите доступ к платежной ведомости с назначенных рабочих станций, к которым конкретный администратор не имеет прав или физического доступа.
Зашифровать / расшифровать данные клиент сторона, поэтому, когда он прибывает / покидает сервер, он всегда зашифрован. это только незашифрованный на стороне клиента и только тогда, когда пользователь предоставляет правильную парольную фразу или ключи.
Создайте клиентскую программу, которая шифрует данные перед их отправкой, или скопируйте код из Открытый исходный код ClipperZ проект управления паролями. ClipperZ использует javascript для этого шифрования в браузере. Излишне говорить, что используйте только очень заблокированный веб-браузер с песочницей selinux с профилем Firefox, специально настроенным только для расчета заработной платы. Не по электронной почте. Ничего больше.
Вы можете даже подумать о том, чтобы сервер по-прежнему зашифровывал его, чтобы уменьшить некоторые формы руткитов на стороне клиента, особенно человека в браузере.