如何创建映射到 dbo 用户的 RDS 登录

问题描述 投票:0回答:1

我正在将 SQL Server 数据库从 Azure SQL 迁移到 AWS RDS,我发现对象所有权存在一些差异。

以下是上下文情况的简要概述:

  • 对象(表、视图、模式)由具有
    migration
    角色的
    db_owner
    用户运行的迁移过程创建。
  • 应用程序使用具有更多受限权限的不同
    app
    登录名运行
  • 我们有几个在
    dbo
    架构中创建的应用程序表
  • 我们有一个
    bi
    模式,其中包含从这些
    dbo
    表中选择的多个视图
  • 有一个
    bi
    登录映射到数据库中的
    bi
    用户,该用户被授予对
    bi
    模式的选择权限(最好仅来自
    bi
    模式)。

问题:

  • bi
    模式是由所有者
    migration
    通过数据库迁移创建的
  • dbo
    表由
    dbo
    所有,即使他
    migration
    用户在该模式中创建了表 - 这可能是有道理的,因为
    dbo
    模式由
    dbo
    用户拥有,但它仍然对我来说,由同一用户在不同模式中创建的对象最终由不同用户拥有似乎很奇怪。
  • 当我尝试使用
    bi
    模式从视图中进行选择时,我收到一条错误,指出我还必须向底层
    dbo
    表授予 SELECT 权限,这似乎是由于 SQL Server 中的所有权链所致,因为该表的所有者视图和表格不同

在我们的 Azure SQL 环境中,我们能够使用映射到数据库中的

dbo
用户的登录名运行迁移,以便
bi
视图和
dbo
表由同一用户拥有,我们做到了不必也向
dbo
显式授予 SELECT 权限。我尚未找到将 AWS RDS 中的登录映射到
dbo
用户的方法 - 似乎有一个已停用的
rdsa
登录映射到
dbo
,但我没有此登录的凭据。 RDS 仅提供不映射到
dbo
的主登录/用户。

在此期间,我还将

bi
用户 SELECT 权限授予
dbo
,但我想知道在解决此问题时有哪些更好的选择。有没有办法创建映射到
dbo
的登录名?我是否必须将所有应用程序表从
dbo
模式移至我可以控制所有权的另一个模式中?

sql-server amazon-rds database-administration
1个回答
0
投票

只需将所有模式的所有权更改为 DBO 即可。这将恢复所有所有权链。然后授予 bi 模式的 bi 选择权限。例如

alter authorization on schema::bi to dbo
grant select on schema::bi to bi

同一用户在不同模式中创建的对象最终归不同用户所有。

默认情况下,对象始终由架构所有者拥有。将单个对象的所有权更改给其他人是可能的,但这几乎从未完成过,而且没有人会想到它。所以不要这样做。

© www.soinside.com 2019 - 2024. All rights reserved.