只读用户拥有读取数据库信息、修改选择数据和执行安全查询报表的专属权限,以提高应用程序的安全级别。
角色要求: SDOrgAdmin/SDAdmin; 有创建查询报表权限的用户。
请参阅以下要点,了解如何根据所使用的数据库创建用户:
CREATE USER <username> WITH LOGIN PASSWORD <password>;
GRANT CONNECT ON DATABASE <databaseName> TO <username>;
GRANT USAGE ON SCHEMA public TO <username>;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO <username>;
CREATE LOGIN <username> WITH PASSWORD <password>;
CREATE USER <username> FOR LOGIN <username>;
DENY INSERT, UPDATE, DELETE ON SCHEMA :: [dbo] TO <userName>;
REVOKE SELECT ON SCHEMA :: [dbo] FROM <userName>;
declare commands cursor for
SELECT 'GRANT SELECT ON [dbo].' + QUOTENAME(t.TABLE_NAME) + ' TO <userName>;'
FROM TableDetails t
WHERE t.TABLE_NAME NOT LIKE 'AaaAccHttpSession' AND t.TABLE_NAME NOT LIKE 'AaaPassword' AND t.TABLE_NAME NOT LIKE 'RememberMeDetails' AND t.TABLE_NAME NOT LIKE 'ADSTFAUserEnrollment' AND t.TABLE_NAME NOT LIKE 'CustomFunctionDetails' AND t.TABLE_NAME NOT LIKE 'AdminAuditHistoryJson' AND t.TABLE_NAME NOT LIKE 'MobileAuthKey' AND t.TABLE_NAME NOT LIKE 'COMMONPASSWORD' AND t.TABLE_NAME NOT LIKE 'PasswordInfo' AND t.TABLE_NAME NOT LIKE 'PasswordResetLink' AND t.TABLE_NAME NOT LIKE 'BackupSchedule' AND t.TABLE_NAME NOT LIKE 'DBCredentialsAudit' AND t.TABLE_NAME NOT LIKE 'ChatJson' AND t.TABLE_NAME NOT LIKE 'ThrottleExceedingHistory' AND t.TABLE_NAME NOT LIKE 'UserAdditionalFields_multiselect' AND t.TABLE_NAME NOT LIKE 'UserAdditionalFields_history' AND t.TABLE_NAME NOT LIKE 'UserAdditionalFields_historydiff' AND t.TABLE_NAME NOT LIKE 'CustomPickListValues' AND t.TABLE_NAME NOT LIKE 'CustomModuleInstance' AND t.TABLE_NAME NOT LIKE 'CustomModuleInstanceImages' AND t.TABLE_NAME NOT LIKE 'CustomModuleDescription' AND t.TABLE_NAME NOT LIKE 'CustomModuleHistory' AND t.TABLE_NAME NOT LIKE 'CustomModuleHistoryDiff' AND t.TABLE_NAME NOT LIKE 'CM_Tasks' AND t.TABLE_NAME NOT LIKE 'CM_Comments' AND t.TABLE_NAME NOT LIKE 'CM_Attachments' AND t.TABLE_NAME NOT LIKE 'Custom_001' AND t.TABLE_NAME NOT LIKE 'Custom_MultiSelect_001';
declare @cmd varchar(max)
open commands
fetch next from commands into @cmd
while @@FETCH_STATUS=0
begin
exec(@cmd)
fetch next from commands into @cmd
end
close commands
deallocate commands
从备份数据恢复 ServiceDesk Plus 时
用于 Postgrest 数据库:
必须限制干扰或减缓查询报表生成速度的行政功能。
要限制 postgres 功能,请使用数据控制语言 (DCL) 命令删除公共角色的执行权限。
REVOKE EXECUTE ON FUNCTION <insert query result> FROM public;
REVOKE EXECUTE ON FUNCTION <insert query result> FROM <Read-Only User name>;
GRANT EXECUTE ON FUNCTION <insert query result> TO <users except Read-Only User and public>;
用于 MSSQL 数据库:
DENY EXECUTE ON [dbo].<FunctionName> TO <Read-Only User Name>;
默认情况下,限制用户查看内部表格,以避免暴露敏感数据。
要查看内部表,管理员可以执行以下查询。
For MSSQL Database:
SELECT * FROM ( SELECT DISTINCT(name) as "Name" FROM sys.objects WHERE type_desc = 'SYSTEM_TABLE' OR type_desc = 'INTERNAL_TABLE' OR type_desc = 'USER_TABLE' OR type_desc = 'VIEW' UNION SELECT DISTINCT(name) FROM sys.tables UNION SELECT DISTINCT(name) FROM sysobjects WHERE sysobjects.xtype = 'U' OR sysobjects.xtype = 'S' UNION SELECT DISTINCT(name) FROM sys.system_views UNION SELECT DISTINCT(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES ) AS t WHERE t.Name NOT IN (SELECT TableDetails.TABLE_NAME FROM TableDetails );
For Postgres Database:
SELECT Distinct(table_name) as "Name" FROM information_schema.tables WHERE lower(table_name) NOT IN (SELECT lower(table_name) from TableDetails ) ORDER BY table_name;