Questions tagged «security»

允许用户仅访问他们有权访问的数据。它还包括在网络上移动以及磁盘和备份上的存储期间对数据的保护。

2
更改“ sa”密码是否需要重新启动SQL(在混合模式下)?
我们发现一个SQL“ sa”帐户的使用方式不应该被使用,因此我们正在更改所有SQL实例上的sa密码。 (我们有以混合身份验证模式运行的SQL 2005至2017服务器。所有用户和应用程序都应使用域帐户或非sa SQL帐户进行连接。我一直在监视,但未发现任何其他应用程序,用户或非-使用sa帐户的内部sps。) 几个问题: Q1:更改sa密码是否需要重新启动SQL? 我发现一些参考资料说更改sa帐户密码后需要重新启动SQL服务: DBA SE:更改sa密码 SQLAuthority:使用Management Studio更改SA登录的密码 真的吗?还是仅当我更改身份验证模式时?还是仅当我以sa常规身份登录时? 这个SQL Server Central线程甚至建议更改它可能会影响现有的SQL代理作业和其他内容。这是一个问题吗?还是仅当有人将SA帐户硬编码到SSIS包或其他内容中时? (如果很重要,我们将域帐户用于SQL服务和SQL代理服务,并将域代理帐户用于调用SSIS包或PowerShell脚本的作业。) Q2:我可以以“正常”方式更改sa密码吗? 我可以像重设其他帐户一样重设吗?使用SSMS,或更可能通过以下方式: ALTER LOGIN sa WITH PASSWORD = 'newpass'; 还是我必须进入单用户模式或需要计划停机的时间?(请注意,我将通过域帐户运行此文件,而不是以“ sa”身份连接。) 问题3:我们是否应该尝试定期进行此密码轮换?或仅在我们发现问题时? 这是推荐的“最佳实践”吗?


4
对应用程序的每个用户使用不同的数据库帐户是否曾经是一种好习惯?
我曾经使用的应用程序是基于服务器的,并为多个用户使用一个数据库帐户,而应用程序代码控制用户或单用户的工作。 是否有任何成功的复杂业务应用程序,每个人都需要他们自己的数据库帐户,并且依靠数据库服务器来执行关于应允许和不允许每个用户做什么的策略规则? 我正在考虑这样的应用程序,其中多个人可以在一个数据库中贡献信息,并且可以访问其他人存储的信息-例如组织中需要访问客户记录的同事。 还有这种类型的设置的名称吗?
13 security 

3
限制用户仅复制备份
我希望在我的生产环境中部署日志传送。这意味着我将不得不管理备份链,而备份链可能会因人们进行备份以刷新开发环境而中断。如果发生故障,并且想使用日志备份还原到某个时间点,则还需要开发人员进行备份。 如果开发人员仅使用“仅复制”备份,则不会发生这种情况。所以我的问题是:是否有一种方法可以限制用户只能执行“仅复制”备份?

2
了解MS SQL Server加密和备份
因此,我在聊天中询问有关SQL Server备份文件的安全性。 有人告诉我,如果攻击者可以访问未加密的.bak文件,则他们可以访问数据。 因此,让我们看一下这种情况: OPEN SYMMETRIC KEY MySymetricKey DECRYPTION BY CERTIFICATE MyCertificate 注意-这里没有密码。 然后我们通过以下方式加密表: UPDATE tbl1 SET namePAss = ENCRYPTBYKEY(KEY_GUID('MySymetricKey'),name) GO 现在,假设有黑客窃取了我的bak文件。为了查看数据(在他自己的计算机和sql-server中),他要做的所有事情是: SELECT convert( NVARCHAR(max), decryptbykey(namePAss)) FROM tbl1 他仍然可以访问数据吗?

2
SQL Server EXECUTE AS故障
我在尝试使存储过程使用时丢失了某些东西EXECUTE AS。存储过程正在从中读取数据source_db,对其进行汇总并将结果存储在中target_db。 sp本身在中target_db。我有一个专用的登录名,并将其映射到sp的所有者source_db和target_dbsp的所有者中(因此,app_agent在source_db和target_db登录中都有一个用户app_agent)。 如果我以身份登录app_agent并执行 EXEC target_db.app_agent_schema.import_data 一切正常。但是如果我改变 ALTER PROCEDURE app_agent_schema.import_data WITH EXECUTE AS OWNER` (or `AS SELF`) 并尝试执行它,它会抛出 服务器主体“ app_agent”在当前安全上下文下无法访问数据库“ source_db”。 我正在使用SQL Server 2008。 有人可以指出我的错误吗? 谢谢 更新 经过一番研究,我发现可以ALTER DATABASE target_db SET TRUSTWORTHY ON解决问题,但对于我来说似乎并不是正确的解决方案...

2
在Oracle中进行PL / SQL工作的应用程序开发人员的安全性
您如何处理Oracle中缺少架构级别特权的问题?Oracle的安全体系结构适用于只需要对象级特权的应用程序,并且适用于几乎不需要限制的DBA。但是,对于使用前端应用程序和多种模式的PL / SQL进行开发的程序员而言,体系结构中似乎存在很大的漏洞。这是我的一些缺点: 使每个程序员都按照自己的模式进行开发。DBA将向需要它们的程序员授予对象级别的特权。任何软件包开发都必须由DBA完成。主要缺点是程序员会像使用存储桶一样使用数据库,从而损害数据库性能。我希望程序员在数据库中进行开发,但是这种方法会大大不利于它。 为每个程序员提供他们需要进行开发的十几种模式的用户名/密码。向这些应用程序模式授予创建过程,表等的权限。这种方法的一些缺点是程序员必须维护多个登录名,并且必须很少自己登录。跨模式开发也很困难。 向程序员授予开发所需的每个模式的代理身份验证特权。这使他们可以自己登录,而不必授予他们代理权限以外的其他权限。缺点包括程序员必须为其代理的每个模式维护独立的连接,跨模式开发更加麻烦,因为连接必须不断更改,并且使用带有已通过身份验证的公共数据库链接的程序包无法在代理连接内部进行编译。 给每个程序员DBA特权。–这里的缺点是安全性。不能将任何模式程序员挡在任何模式之外,并且任何程序员都可以模仿任何其他程序员(DBA)。 似乎缺少一个选项来授予每个程序员SELECT / INSERT / CREATE / etc。他们需要在其中进行开发的模式具有特权。他们使用一个连接以自己的身份登录以完成工作。他们有权访问的架构中的新对象将立即可用。 我想念什么吗?您如何处理进行PL / SQL开发的应用程序程序员?

2
授予典型用户什么是合理的特权?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 6年前关闭。 我发现MySQL提供的特权列表有些让人不知所措。我不确定谁应该拥有什么特权。在我看来,有三种典型的用户适合我的情况: root developer application root不言自明。为此,developer该用户需要能够轻松访问任何数据库,对其进行调整等。对于初学者,我将该用户设置为以下特权集: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON application有一个更有限的设置。它应该仅限于处理特定的数据库。 我不确定要授予什么合理的特权。授予开发人员和应用程序合理的特权集是什么?为什么?


2
如何使用T-SQL(不是SSMS)将登录名映射到数据库
我正在编写一个程序,要求我分配代码中的所有权限和所有内容。我陷入了这一部分: 我只想做相当于单击msdb数据库的“地图”下的小框,然后将该用户分配给SqlAgentUser角色的等效操作。我需要一个用户才能添加/编辑SQL Server代理作业。我可以使用SSMS正确进行设置,但是我一生都无法弄清楚如何在原始SQL中进行设置。 我已经研究过ALTER LOGIN,但是没有看到任何可以满足我需求的东西。我怀疑我只是不知道Google的正确用语。我通常不会做这种事情。 任何帮助深表感谢!

1
什么函数在SQL Server的dynamic-sql中引用标识符?
用于动态sql生成的SQL Server安全引用标识符的方法是什么。 MySQL有 quote_identifier PostgreSQL有 quote_ident 如何确保给定动态生成的语句的动态生成的列名称,该列本身不是SQL注入攻击。 假设我有一条SQL语句, SELECT [$col] FROM table; 基本上与 'SELECT [' + $col + '] FROM table;' 什么阻止了注射攻击 $col = "name] FROM sys.objects; \r\n DROP TABLE my.accounts; \r\n\ --"; 导致 SELECT [name] FROM sys.objects; DROP TABLE my.accounts; -- ] FROM table;

3
如果有许多用户,则DROP USER将花费太长时间
在具有足够RAM和快速磁盘的SQL Server 2014实例上,有160多个用户可以访问数据库。由于某些我不知道的原因,DROP USER [username]在此数据库中运行该命令每个用户最多需要5秒钟。 重新映射用户以登录并恢复其权限非常快。 在从生产中刷新DEV数据库的上下文中,我必须删除并重新创建所有数据库用户。因此,必须删除数据库用户并重新创建它们。 如何加快DROP USER命令速度? 请记住,对于我正在写的实例,我必须运行160次以上。 这是我正在使用的SQL: DECLARE drop_user_cur CURSOR FOR SELECT name FROM #drop_users OPEN drop_user_cur FETCH NEXT FROM drop_user_cur INTO @user WHILE @@FETCH_STATUS = 0 BEGIN SET @sql = 'use [' + @db_name + '] DROP USER [' + @user + ']' BEGIN TRY …

3
验证现有用户的密码策略
我最近进入一种环境,其中许多数据库登录都未enforce_password_policy启用该标志。 即将进行的审核需要验证这些登录名的密码。 我使用以下查询来获取登录列表以及这些标志是打开还是关闭。 select @@SERVERNAME as servername, name, IS_SRVROLEMEMBER('sysadmin', name) as SYSADMIN, type_desc, create_date, is_policy_checked, is_disabled, password_hash, PWDCOMPARE(name, password_hash) as UsernameAsPassword FROM sys.sql_logins 但是,这并不能告诉我密码是否实际上遵守密码策略,因为该标志仅在创建用户时才相关。 有已知的方法来测试现有用户的密码策略遵从性吗? 我无法访问旧密码,因此我希望使用不需要它们的方法。


2
SQL Job步骤作为其他SQL帐户运行
我很好奇如何设置要作为其他SQL登录帐户执行的SQL作业步骤。看来我需要设置一个需要现有凭据的新代理帐户。创建凭据时,我唯一的选择是使用Windows登录凭据。 我尝试运行的作业如下。还有其他一些语句,但是当我将作业步骤设置为以SQL登录名运行时,它将失败。 insert into [dbo].[TableA] SELECT ss.[Ref_ID] ,mm.[studentID] ,mm.[studentPersonID] ,mm.[studentFirstname] FROM [dbo].[TableB] mm left outer join [dbo].[TableC] ss on ss.parentPersonID=mm.parentPersonID and mm.studentPersonID = ss.studentPersonID where ss.Ref_ID is not null; 通过SQL作业步骤运行此命令时,它将失败。 Executed as user: an_admin_account. Access to the remote server is denied because the current security context is not trusted. [SQLSTATE …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.