Как я могу зашифровать функцию на SQL Server, чтобы ее нельзя было редактировать другим пользователям? Заранее спасибо.Как зашифровать функцию в SQL Server
ответ
Используйте ENCRYPTION
вариант:
CREATE FUNCTION testFunction()
RETURNS int
WITH ENCRYPTION
AS
BEGIN
RETURN 1
END
Это означает, что определение не будет храниться в любом месте, легко читается, например:
SELECT m.definition
FROM sys.sql_modules m
JOIN sys.objects o
on M.object_id = o.object_id AND o.type = 'FN' AND o.name = 'testFunction'
вернет ноль, и если пользователь (даже sysadmin
) пытается использовать SSMS для изменения функции, которую они получат MessageBox, заявив, что текст зашифрован и не может быть восстановлен. Тем не менее, за MSDN,
Определение понятия функций, созданных с помощью опции ENCRYPTION не может быть просмотрен с помощью sys.sql_modules; однако отображается другая информация о зашифрованных функциях.
и
Относится к: SQL Server 2008 с помощью SQL Server 2016.
Указывает, что компонент Database Engine преобразует исходный текст CREATE FUNCTION заявления на запутанном формате. Результат обфускации не отображается непосредственно в любых видах каталога. Пользователи, не имеющие доступа к системным таблицам или файлам базы данных, не могут получить обфускацию текста. Тем не менее, текст будет доступен для привилегированных пользователей, которые могут либо обращаться к системным таблицам через порт ЦАП, либо напрямую обращаться к файлам базы данных. Кроме того, пользователи, которые могут подключить отладчик к серверному процессу, могут извлечь исходную процедуру из памяти во время выполнения. Дополнительные сведения о доступе к системным метаданным см. В разделе Конфигурация видимости метаданных.
Использование этого параметра запрещает публикацию функции как часть репликации SQL Server. Этот параметр не может быть указан для функций CLR.
Вы по-прежнему должны обеспечить правильные привилегии для решения таких сценариев. Вы можете прочитать немного более подробно об этом here.
В конце концов, если это предназначено для отправки клиенту, к которому вы не хотите иметь доступ к источнику, они смогут получить к нему доступ, если они будут повторно настойчивыми (используя отладчик).
Есть ли способ, где я просто поставить пароль (но не обязательно пароль, просто пример) на него, и когда я хотел изменить что-то на нем, тогда я просто использую этот пароль? @Dan Field – JanLeeYu
На самом деле это не так. У вас будет пароль в учетной записи, и эта учетная запись может принадлежать роли, которой разрешено изменять функции. Тем не менее, любой, у кого есть владелец на БД или sysadmin на сервере, сможет «DROP» использовать эту функцию в любом случае. только способ контроля, который должен контролировать доступ к БД .... –
Хорошо. похоже, что ты прав. Я тоже ничего не нашел в сети. Но я действительно надеюсь, что смогу найти ... ха-ха. – JanLeeYu
Вы не можете запретить другим пользователям редактировать его, если у них есть права доступа.
Вы не можете запретить им иметь правильные разрешения, если у них есть физический доступ к SQL Server.
Они могут просто отказаться от него, а затем создать все, что захотят, с тем же именем; поэтому их собственный код берет на себя для вашего исходного кода
Они могут расшифровывать его различными способами; см. dba.stackexchange вопрос How to view an encrypted view or stored procedure
Red Gate SQL Prompt делает это на свой собственный
Заменить содержимое с тем же именем, а затем XOR результаты, чтобы увидеть оригинальную
Получите еще сложнее с поиском в ОЗУ.
- 1. Зашифровать существующий столбец таблицы SQL Server
- 2. Как зашифровать определенные столбцы определенных строк в SQL Server 2012
- 3. SQL, как зашифровать NVARCHAR колонки
- 4. SQL Server, используя функцию
- 5. Как зашифровать пароль на SQL Server и ASP.NET C#
- 6. Как зашифровать столбец SQL Server 2016 Всегда зашифрован? -Alter Query
- 7. Как выполнить функцию таблиц в SQL Server
- 8. Как выполнить функцию в SQL Server 2008
- 9. Как использовать функцию преобразования в SQL Server?
- 10. Как просмотреть сохраненную функцию - SQL Server
- 11. Как SQL Server вычисляет функцию DATEDIFF?
- 12. как написать функцию sql server 2008
- 13. Как создать функцию SQL Server 2008 R2?
- 14. ENCRYPTBYKEY sql server 2008 Только зашифровать первый символ
- 15. SQL Server - оценивать функцию в динамическом запросе
- 16. Escape wildcard (*) в SQL Server Содержит функцию
- 17. Как установить функцию как значение по умолчанию в SQL Server?
- 18. Как зашифровать/защитить SQL Compact 3.5, встроенную в настольное приложение?
- 19. Создайте пользовательскую функцию SQL в ColdFusion с MS SQL Server
- 20. SQL Server: связать функцию с столбцом представления
- 21. Как зашифровать значение в хранимой процедуре EXEC?
- 22. Выберите функцию SQL Server с Laravel
- 23. Как использовать функцию преобразования в SQL Server 2012?
- 24. Как правильно использовать функцию SET DATEFIRST в SQL Server?
- 25. Как вызвать и выполнить функцию SQL Server в Entity Framework?
- 26. Как использовать системную функцию в SQL Server 2008?
- 27. Как отредактировать функцию CLR в SQL Server 2008?
- 28. Как использовать функцию GETDATE() с LIKE в SQL Server?
- 29. Как использовать функцию Row_Number() в SQL Server 2012?
- 30. Как использовать функцию CONCAT в SQL Server 2008?
Удалить привилегию, чтобы просмотреть функции для других пользователей –