标签: security

通过插入触发器安全地发送数据库邮件

到目前为止,我已经花了大约 30 个小时努力sp_send_dbmail去上班。我终于得到了一些工作,但我严重怀疑它的安全性。我想知道一种更好但快速且易于设置的方法(此时我的时间受到严重限制),以及“理想”(最佳实践)解决方案。

当前 SQL Server 2005 配置

- `After Insert` Trigger on table executes `sp_send_dbmail`
- Database Mail SMTP Account setup (with successful mail test)
- Database Mail Profile setup (with "Public Profile" ticked)
- "guest" account added to "DatabaseMailUserRole"
Run Code Online (Sandbox Code Playgroud)

我发现这篇文章提出了“正确”的解决方案,我阅读了这篇文章,在那里我发现这是一个非常复杂的解决方案,似乎有太多可能出错的事情,更不用说难以维护了。

我对替代解决方案的想法是这些。

1. Setup an Application Role in msdb (this would be my first time using one
    and not even sure if it IS a solution :P), and use it to ensure that …
Run Code Online (Sandbox Code Playgroud)

trigger sql-server-2005 security database-mail

2
推荐指数
1
解决办法
1804
查看次数

使用来自另一个数据库的用户/登录名

是否可以在另一个(S)数据库中使用来自一个数据库(F)的登录名/用户?我知道我可以复制它,但是,当我将用户添加到 (F) 数据库时,我必须再次将它们全部复制(或将同一用户添加到 (S) 数据库)-我想避免这种情况...

我只想知道是否可以将安全/用户设置为来自另一个数据库的用户。

security sql-server

2
推荐指数
1
解决办法
111
查看次数

sys用户如何获得sysdba权限?

我在 Linux 上使用 oracle 12c。使用企业管理器数据库 express 我正在查看 sys 用户的权限和角色列表,但我没有找到在那里分配的 sysdba 权限。

sys 用户是 oracle 角色的成员还是具有 sysdba 权限的 Linux 组?什么角色或组?

oracle security linux

2
推荐指数
1
解决办法
4527
查看次数

如何在 Postgres 中授予对 IP 范围的访问权限?

我想将我的 Postgres 数据库配置为由任何 IP 10.8.101.* 访问。我知道我必须在其中创建一个规则,pg_hba.conf但我不确定它应该是什么样子。我的 LAN IP 目前是 10.8.101.128 所以我认为这会起作用:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             10.8.101.0/128         md5
Run Code Online (Sandbox Code Playgroud)

但我收到了一个错误could not load pg_hba.conf。有谁知道如何正确地做到这一点?

postgresql security network

2
推荐指数
1
解决办法
8263
查看次数

限制对特定表的写访问的最佳做法是什么?

我有一个表,我希望它是只读的,除了一些需要UPDATE表中行权限的特定存储过程。

之后,我只希望一组选定的附加存储过程具有EXECUTE上述UPDATE过程的权限。

我一直在阅读有关GRANT,并DENY在MSDN / TechNet和我也一直念叨模式,但文档是如此模糊和非听上去很像是我无法搞清楚如何实现基于真实世界的安全目标提供的说明。

我可以看到,你可以GRANTDENY个人的原则,一次一个权限-但我需要否定INSERT UPDATEDELETE对所有原则的权限,除了到我授予几个存储过程UPDATE的权限(以及sa和/或db_owner我想) . 默认情况下,
我不希望任何新用户拥有UPDATE此表的权限,而且我真的很想避免每次创建/修改用户或其他对象时都必须手动拒绝权限。

security sql-server permissions

2
推荐指数
1
解决办法
1647
查看次数

每小时监控数据库以防止数据丢失

这是我的要求,虽然我知道可以做些什么来实现它,但仍在寻找最佳解决方案。

几天前,有人(一些黑客或一些以前的开发人员)截断了我的重要表,给我的客户带来了不便。我需要更改我的数据库密码、服务器密码和其他应用程序的密码,以避免此类令人讨厌的行为并阻止我的应用程序。

此外,首先我需要知道是否在我的客户之前使用我的数据执行此类活动,以便我可以为他们找到任何解决方法。这是我到现在为止的想法——

  • 我应该创建一个窗口服务,它将每 1 小时运行一次并检查所有表,或者最重要的是在主表中检查记录数是否符合预期。如果没有,则会向我发送警报,以便我可以快速解决该问题。
  • 我应该创建一个 SQL 作业,该作业将执行我在第一点中提到的相同步骤。

这些变通方法似乎很好且可行。但我真的很想知道我还能做些什么来阻止我的数据或在数据丢失时提醒我。我相信还有其他有效且更可行的方法来实现我想要的。如果有人可以帮助我,那就太好了。

这是一个 Web 应用程序,只有经过身份验证的用户才能登录。我的 SQL Server 版本是企业版。

security sql-server

2
推荐指数
1
解决办法
679
查看次数

对用户定义查询的限制

我有一个客户希望我实现一个网页,该网页允许用户在文本框中输入自定义查询,以便他们可以直接查询 SQL Server 数据库。我担心用户输入恶意查询*。有没有办法(通过语法检查或角色权限或其他方式)确保数据库在提供此功能时保持安全?

*忽略拒绝服务。我担心的主要是数据丢失

security best-practices permissions sql-server-2008-r2 read-only-database

2
推荐指数
1
解决办法
141
查看次数

如何识别因登录尝试失败而被锁定的用户 (Oracle)

如何在oracle中区分安全管理员故意锁定的用户和由于登录尝试失败而锁定的用户

oracle security

2
推荐指数
1
解决办法
386
查看次数

登录 过去 1 个月内未使用

我需要创建一个查询,该查询可以获取上个月未使用的登录详细信息。我尝试了几种方法,如扩展事件和审计跟踪。但是我无法获得上个月未使用的登录列表,请帮我解决这个问题。

security sql-server audit logins

2
推荐指数
1
解决办法
1465
查看次数

授予对每个数据库中的系统“sys”表的最小选择权限

我们的开发团队创建了一些 SSRS 报告,这些报告仅从每个数据库中检索元数据(非“真实”数据)。我试图将运行这些报告的服务帐户锁定到所需的最低权限。

查询仅从每个数据库中的系统表中进行选择,例如:

 sys.tables
 sys.extended_properties
 SYS.objects
 SYS.schemas
 sys.dm_db_partition_stats
 sys.indexes
Run Code Online (Sandbox Code Playgroud)

我认为以下会做到这一点,但没有这样的运气。

 GRANT VIEW ANY DATABASE TO [DOMAIN\LOGIN]
 GRANT VIEW SERVER STATE TO [DOMAIN\LOGIN]
 GRANT VIEW DATABASE STATE TO [DOMAIN\LOGIN]
Run Code Online (Sandbox Code Playgroud)

查询系统表给出错误:

 The server principal "DOMAIN\LOGIN" is not able to access the database "DATABASENAME" under the current security context.
Run Code Online (Sandbox Code Playgroud)

除了为每个数据库的登录创建一个用户然后显式授予系统表的权限之外,我似乎找不到其他方法来解决这个问题。这对所有未来的数据库提出了一系列新的挑战。我是否遗漏了什么,或者没有简单的方法可以在不授予“系统管理员”服务器级角色的情况下向所有数据库授予此访问权限?

security sql-server permissions logins system-tables

2
推荐指数
1
解决办法
5234
查看次数