我有一个名为“1098Statement”的视图的数据库我们正在测试用户名为“appuser”的应用程序。
我尝试了以下解决方案来在视图上授予选择权并不断出错:
将用户添加到已在视图上授予选择权的数据库角色
消息 229,级别 14,状态 5,第 2 行 对象“1098Statement”、数据库“mydb”、架构“dbo”的 SELECT 权限被拒绝。
他们都没有工作。
是否有任何人可以提供有关解决此问题的任何指示。
我唯一剩下的想法是检查
我是一名新的 DBA,最近我发现了 Oracle 中使用 PREPROCESSOR 功能的外部表选项(http://download.oracle.com/otndocs/products/database/enterprise_edition/utilities/pdf/xtables_preproc11g_1009.pdf)不幸的是,此功能在我们的休息室中似乎非常有用,但似乎非常危险,因为可以访问操作系统(或远程......)的人可能会利用它来导致数据库受到损害,甚至最糟糕的是 - 整个操作系统。
我已将此功能的访问权限限制在最低限度,并撤销了可能允许外部访问操作系统(extproc、java 等)的任何其他权限
但是,有时我们必须使用此功能,这就是我问你们两个主要问题的地方:
谢谢 (:
我的公司希望有大约 100 名销售人员(分布在全国各地)能够从 excel 运行存储过程并将数据返回到电子表格中。
我们有 sql server 2008。我需要找出一种安全的方法来做到这一点。
我将在 excel 中创建一个表单,用户可以在其中按下命令按钮以根据他们选择的参数刷新数据。
我发现这是非常好的信息:http : //office.microsoft.com/en-us/excel-help/connect-to-import-sql-server-data-HA010217956.aspx
Windows 身份验证 选择此选项以使用当前用户的 Windows 用户名和密码。这是最安全的方法,但当许多用户连接到服务器时,它会影响性能。
但是,我希望您对此提出意见。
是的,销售代表确实有 Windows 登录,但是如果他们实际上要输入指定数据标准,然后将标准发送到存储过程,然后从服务器获取数据,我可以使用这个解决方案吗?
我有两个用户 A 和 B。我想授予 B 创建、删除等 A 架构中所有表的权限。据我所知,我可以授予 B 对所有模式的完全访问权限,而不是特定模式。这样对吗?
最近,我们有一个存储过程请求,需要跨多个数据库进行访问。当然,这种情况并不少见,但在我们的案例中,之前我们使用了服务帐户,并且该服务帐户具有对所有数据库的读/写权限。
但是现在我们将所有权限更改为windows登录AD组,AD组中的用户没有对所有数据库的所有权限。
例子:
众所周知,这种跨数据库的权限可以通过
我的问题是,关于安全性和保持简单和安全的最佳解决方案是什么?
请注意,没有任何开发人员是任何数据库的数据库所有者,并且提升的权限仅分配给 DBA,因此有人进行黑客攻击或 SQL 注入或冒充系统管理员的可能性是“无”的。
但同样,我想知道在这种情况下你会怎么做?我更喜欢选项3。
Microsoft 已知某些防病毒软件的实现会导致SQL Server 出现各种问题,并且 Microsoft 有一篇支持文章专门用于为您的 SQL Server 主机选择正确的防病毒软件。
根据您的经验,在您的数据库服务器上运行防病毒软件是否安全?
考虑到所有必需的防病毒排除和注意事项,它是否实用?
CREATE VIEW 语法是
CREATE
[OR REPLACE]
[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
[DEFINER = { user | CURRENT_USER }]
[SQL SECURITY { DEFINER | INVOKER }]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
Run Code Online (Sandbox Code Playgroud)
因为SECURITY您可以设置DEFINER或INVOKER。什么时候选择“定义器”才有意义?据我了解,这意味着检查我的安全权限,即创建视图的人。如果我对我们的数据库拥有完全权限,那么我只是创建了一个视图,为任何调用者提供完全访问权限。这听起来不对。难道您不总是希望安全性是实际使用视图的人吗?
如何检查 Oracle 数据库连接加密类型?(Oracle 数据库和其他客户端应用程序之间)我如何确保 Oracle 数据库和 Toad 之间的数据库连接是加密的?(我的 Toad 版本是 9.5,Oracle 数据库版本是 11g)
我的理解是,我可以将该EXECUTE AS OWNER子句用作我创建的过程的一部分,以使该过程的主体以不同的用户身份运行。我的目标是执行需要sysadmin角色 ( DBCC TRACEON(1224))的命令。此过程应该由非特权用户调用。
我在sa用户下运行了以下脚本:
SELECT USER_NAME(), USER_ID(), IsSysAdmin = IS_SRVROLEMEMBER('sysadmin')
-- dbo 1 1
IF EXISTS(SELECT * FROM sys.procedures WHERE name = 'MyProc')
DROP PROCEDURE MyProc
GO
CREATE PROCEDURE MyProc
WITH EXECUTE AS OWNER
AS
SELECT USER_NAME(), USER_ID(), IsSysAdmin = IS_SRVROLEMEMBER('sysadmin');
-- dbo 1 0
DBCC TRACEON(1224)
--Msg 2571, Level 14, State 3, Procedure MyProc, Line 7
--User 'dbo' does not have permission to run DBCC TRACEON.
RETURN
GO
EXEC …Run Code Online (Sandbox Code Playgroud) 在我的一台服务器(Win 2012 R2)上,SQL Server 2012 不断受到攻击,SA 帐户每秒被攻击 10 次,使用不同的密码。我没有 SA 帐户,但我仍然想停止这种探测,因为它可能会消耗资源。我一直在手动检查日志并在防火墙级别阻止有问题的 IP,但我仍然想要一个更好的解决方案。SQL Server 使用 IIS 在本地运行以为其网站提供服务,我只需要远程连接到 SQL Server 以使用 SSMS 进行数据库开发,所以起初我想设置一个 VPN,但不确定这是否会与 SSMS 和其他服务一起使用像 FTP。作为临时解决方案,我可以通过禁用端口 1433 来阻止 SQL Server 在防火墙处对外界可见,或其他地方?然后我可以在开发时启用/禁用它,也许只是为了我的 IP。谢谢。
security ×10
sql-server ×4
oracle ×3
dbcc ×1
encryption ×1
mysql ×1
role ×1
toad ×1
view ×1
windows ×1