AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 19324
Accepted
DBAuser
DBAuser
Asked: 2012-06-16 05:57:16 +0800 CST2012-06-16 05:57:16 +0800 CST 2012-06-16 05:57:16 +0800 CST

跨数据库链接与可信赖选项

  • 772

最近,我们有一个存储过程请求,需要跨多个数据库进行访问。当然,这种情况并不少见,但在我们的例子中,之前我们使用了服务帐户,并且该服务帐户对所有数据库都有读/写权限。

但是现在我们将所有权限更改为 Windows 登录 AD 组,并且 AD 组中的用户没有对所有数据库的所有权限。

例子:

  • AD 组 UG1 有 10 个用户,它们是数据库 A 上的用户。
  • 存储过程 PROCA 驻留在数据库 A 中,但对属于数据库 B 和数据库 C 的表进行了选择。
  • 已将执行权限授予存储过程 PROCA 和 AD 组 UG1,因为已在数据库 B 和数据库 C 上创建用户(没有其他权限)。
  • DatabaseA、DatabaseB 和 DatabaseC 的数据库所有者在登录 XXX 下。

众所周知,这种跨数据库的权限可以通过

  • 选项 1:在所有数据库上打开数据库跨链,或
  • 选项 2:授予 AD 组 UG1 所需的数据库(B 和 C)的单个对象权限或
  • 选项 3:在 DatabaseA 上使用 Trustworthy db 选项并更改存储的 proc PROCA 以包括以“dbo”用户身份执行,以便可以模拟权限。
  • 选项 4:使用证书

我的问题是关于安全性并保持简单和安全的最佳解决方案是什么?

请注意,没有一个开发人员是任何数据库的数据库所有者,并且提升的权限只分配给 DBA,因此有人黑客攻击或 SQL 注入或冒充系统管理员的可能性是“无”的。

但同样,我想知道您在这种情况下会怎么做?我更喜欢选项3。

sql-server sql-server-2008
  • 1 1 个回答
  • 3711 Views

1 个回答

  • Voted
  1. Best Answer
    Jānis
    2012-06-29T05:57:35+08:002012-06-29T05:57:35+08:00

    选项1是最糟糕的..不会使用那个..

    选项 2 大量的管理工作..

    选项3(见最后一句话:))

    选项 4最近我不得不考虑如何保护数据库。我的解决方案就是这个。这里有一篇关于安全性的好文章。甚至认为一开始使用证书有点复杂(以前从未对它们做过任何事情)我对这个选择感到非常高兴。我授予证书登录/用户权限。我用该证书签署程序,一切正常。我使用相同的系统来授予动态 SQL 的权限(因此,如果存在 sp_executesql,我将必要表的最低权限授予证书用户,因此 proc 的调用者看不到表,我不必以所有者身份执行或 smthng)。授予使用非对称密钥的权利也是如此。而且我一直都知道谁是程序的调用者(没有执行为),即使在我的情况下它不是很重要..

    在开发期间签署程序有点麻烦(试图找到解决这个问题的好方法)。目前我正在搜索过程文本(DDL 触发器)以使用其他数据库,如果找到它,我会打印出警告,该过程可能必须签名..

    我想念的另一件事是无法签署函数或视图(必须有充分的理由),因此您不能使用它们来访问其他数据库。

    我想说的最后一件事 - 我更愿意用最少的模式解决尽可能多的问题。所以如果你广泛使用“执行为”和代理用户,那么可信选项可能是更好的选择。

    • 3

相关问题

  • 死锁的主要原因是什么,可以预防吗?

  • 我在索引上放了多少“填充”?

  • 是否有开发人员遵循数据库更改的“最佳实践”类型流程?

  • 如何确定是否需要或需要索引

  • 从 SQL Server 2008 降级到 2005

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何查看 Oracle 中的数据库列表?

    • 8 个回答
  • Marko Smith

    mysql innodb_buffer_pool_size 应该有多大?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    从 .frm 和 .ibd 文件恢复表?

    • 10 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve