sqlserver数据库管理操作命令

2022-05-30 00:00:00 用户 数据库 密码 权限 登录名

查询权限

---登入名表
  select * from master.sys.syslogins 
  ---登入名与服务器角色关联表
  select * from sys.server_role_members
  ---服务器角色表
  select * from sys.server_principals
  ----查询登入名拥有的服务器角色
  select SrvRole = g.name, MemberName = u.name, MemberSID = u.sid
  from sys.server_role_members m  inner join sys.server_principals g on  g.principal_id = m.role_principal_id 
  inner join sys.server_principals u on u.principal_id = m.member_principal_id

  ---数据库用户表
  select * from sysusers
  ---数据库用户表角色关联表
  select * from sysmembers 
  ---数据库角色表
  select * from sys.database_principals
  ----查询数据库用户拥有的角色
  select ta.name as username,tc.name as databaserole  from sysusers ta inner join sysmembers tb on ta.uid=tb.memberuid
  inner join  sys.database_principals tc on tb.groupuid=tc.principal_id  
复制代码

查询登入名与数据库用户之间的关系:

  use AdventureWorks2008R2
  select ta.name as loginname,tb.name as databaseusername from master.sys.syslogins ta inner join sysusers tb on ta.sid=tb.sid 
  
  /*如果将当前数据库还原到另一台服务器实例上,刚好那台服务器上也存在person登入用户,你会发现二者的sid不一样,
  由于sid不一样,所以登入用户不具有当前数据库的访问权限,我们要想办法将二者关联起来。
  */
  ---关联登入名与数据库用户(将数据库用户的sid刷成登入名的sid)
    use AdventureWorks2008R2
    EXEC sp_change_users_login 'Update_One', 'person', 'person'
    Go
复制代码

查询数据库用户被授予的权限

exec sp_helprotect @username = 'person'

--查询sql server的所有权限,很重要,要授予权限,总得先知道有哪些权限可以授予
select * from sys.fn_builtin_permissions(DEFAULT)
 
--查询schema的所有权限
select * from sys.fn_builtin_permissions('schema')
 
--查询server的所有权限
select * from sys.fn_builtin_permissions('server')
 
--查询database的所有权限
select * from sys.fn_builtin_permissions('database')
复制代码

高确保Sysadmin角色中所有经过SQL身份验证的登录名的“ CHECK_EXPIRATION”选项都设置为“ ON” | 访问控制描述 将Windows中使用的相同密码过期策略应用于SQL Server内部使用的密码。

确保SQL登录名符合Windows Server Benchmark所应用的安全密码策略,将确保频繁更改具有sysadmin特权的SQL登录名的密码,以帮助防止通过蛮力攻击造成的损害。

CONTROL SERVER是sysadmin的等效权限,并且还应该要求具有该权限的登录名具有到期的密码。 

检查提示--加固建议

运行以下T-SQL语句,以CHECK_EXPIRATION = OFF查找sysadmin或等效登录名。 不应返回任何行。

SELECT l.[name], 'sysadmin membership' AS 'Access_Method'
FROM sys.sql_logins AS l
WHERE IS_SRVROLEMEMBER('sysadmin',name) = 1
AND l.is_expiration_checked <> 1
UNION ALL
SELECT l.[name], 'CONTROL SERVER' AS 'Access_Method'
FROM sys.sql_logins AS l
JOIN sys.server_permissions AS p
ON l.principal_id = p.grantee_principal_id
WHERE p.type = 'CL' AND p.state IN ('G', 'W')
AND l.is_expiration_checked <> 1;对于审核程序发现的每个<login_name>,执行以下T-SQL语句:
ALTER LOGIN [login_name] WITH CHECK_EXPIRATION = ON;
复制代码

操作时建议做好记录或备份

确保所有SQL身份验证登录名的“ CHECK_POLICY”选项都设置为“ ON” | 身份鉴别描述 将Windows中使用的相同密码过期策略应用于SQL Server内部使用的密码。确保SQL登录名符合Windows Server Benchmark 所应用的安全密码策略,将确保频繁更改具有sysadmin特权的SQL登录名的密码,以帮助防止通过蛮力攻击造成的损害。 控制 SERVER是sysadmin的等效权限,并且还应该要求具有该权限的登录名具有到期的密码。 检查提示--加固建议 使用以下代码段确定SQL登录名的状态以及是否强制执行其密码复杂性。

SELECT name, is_disabled
FROM sys.sql_logins
WHERE is_policy_checked = 0;对于审核过程发现的每个<login_name>,执行以下T-SQL语句
ALTER LOGIN [login_name] WITH CHECK_POLICY= ON;
复制代码

操作时建议做好记录或备份 确定   确保将“登录审核”设置为“失败”和“成功登录” | 安全审计 描述 设置日志记录成功和失败的登录SQL Server身份验证尝试。记录成功和失败的登录信息可提供关键信息,这些信息可用于 检测/确认密码猜测攻击。 此外,记录成功的登录尝试可用于在司法调查期间确认服务器访问。

检查提示/加固建议

执行以下步骤来设置审核级别:

1.打开SQL Server Management Studio。 2.右键单击目标实例,然后选择“属性”并导航到 “安全性” 标签。 3.在“登录审核”下选择选项“成功登录失败和成功登录” 部分,然后单击确定。 4.重新启动SQL Server实例。 操作时建议做好记录或备份

--查看数据库schema, user 的存储过程
 select * from sys.database_principalsselect * from sys.schemasselect * from sys.server_principals
 --创建登陆帐户(create login)
 create login dba with password='abcd1234@', default_database=mydb
 --为登陆账户创建数据库用户(create user),在mydb数据库中的security中的user下可以找到新创建的dba
 create user dba for login dba with default_schema=dbo
 --通过加入数据库角色,赋予数据库用户“db_owner”权限
 exec sp_addrolemember 'db_owner', 'dba'
 
 --让 SQL Server 登陆帐户“dba”访问多个数据库
 use mydb2go create user dba for login dba with default_schema=dbogo exec sp_addrolemember 'db_owner', 'dba'go
 
 --禁用登陆帐户
 alter login dba disable--启用登陆帐户
 alter login dba enable--登陆帐户改名
 alter login dba with name=dba_tom--登陆帐户改密码:
 alter login dba with password='aabb@ccdd'
 --数据库用户改名:
 alter user dba with name=dba_tom--更改数据库用户 defult_schema:
 alter user dba with default_schema=sales--删除数据库用户:
 drop user dba--删除 SQL Server登陆帐户:
 drop login dba

相关文章