azure - 应向 Azure SQL Server 添加什么权限,以使 Active Directory 用户能够自动设置自己的防火墙 IP 异常(exception)?

标签 azure azure-active-directory azure-sql-server

我有一个 Azure SQL 服务器,在包含它的资源组下我拥有贡献者角色。我已将自己的用户设置为 Azure Active Directory 管理员。 我想这就是为什么我能够在通过 Management Studio 连接并且我的 IP 发生更改时自动将自己的 IP 添加为防火墙异常(exception)。 还有其他用户将使用同一台服务器,如果他们具有通过 Management Studio 自动设置防火墙异常(exception)的相同功能,那就太好了,但我无法让它工作。

以下是我所做的步骤:

  1. 要求订阅管理员向服务器资源组下的用户添加贡献者角色
  2. 我已通过以下方式将用户添加到主数据库:
CREATE USER [<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="533726373613372637367d3c2134" rel="noreferrer noopener nofollow">[email protected]</a>] 
    FROM EXTERNAL PROVIDER;

ALTER ROLE dbmanager ADD MEMBER [dude@dude.org];
ALTER ROLE loginmanager ADD MEMBER [<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="3f5b4a5b5a7f5b4a5b5a11504d58" rel="noreferrer noopener nofollow">[email protected]</a>];

使用此配置,当用户连接到服务器时,会弹出窗口提示将其 IP 添加到防火墙异常(exception),但在尝试保存时出现 401 错误。

An error occurred while creating a new firewall rule (HTTP Status Code 401)) (ConnectionDlg)

enter image description here

重要的一点是用户可以通过 Azure Portal 成功设置防火墙异常(exception)

关于如何解决这个问题有什么想法吗?

最佳答案

• 在您的方案中,您将需要配置 Azure SQL 数据库级防火墙规则并允许 IP 地址,通过该 IP 地址将允许或许可连接到 Azure SQL Server 上托管的数据库。这可以通过多种方法来完成,即通过 Azure 门户、powershell 命令或通过 transact-SQL 查询。

要允许特定 IP 地址范围访问 Azure SQL Server 数据库,用户应在特定数据库级别和此修改中拥有“CONTROL” 权限只能通过transact-SQL 查询来完成。但在您被允许连接到服务器以执行 Transact-SQL 查询之前,必须由具有 Azure 级别权限的用户通过门户本身创建服务器级别防火墙 IP 规则,即 Azure AD 管理员或服务器级主体登录。

• 因此,首先您必须通过您指定的 transact-SQL 查询将授权的 Azure AD 用户分配到相关数据库。完成后,通过 Transact-SQL 查询授予 Azure AD 用户对数据库的控制权限,如下例所示:-

  ‘ USE AdventureWorks2012;
    GRANT CONTROL ON DATABASE::AdventureWorks2012 TO Sarah;
    GO ’

• 将上述数据库访问权限授予相关 Azure AD 用户后,执行以下 transact-SQL 命令以允许从特定 IP 地址连接到该数据库:-

  ‘ exec sp_set_firewall_rule N'Allow Azure', '0.0.0.0', '0.0.0.0'; ‘

在上面的命令中,第一部分说明起始 IP 地址,另一部分说明应允许连接的结束 IP 地址。另外,上述命令只需要在master数据库中执行即可。

有关详细信息,请参阅以下文档链接以获取更多信息:-

https://learn.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-set-firewall-rule-azure-sql-database?view=azure-sqldw-latest

https://learn.microsoft.com/en-us/azure/azure-sql/database/firewall-configure

https://learn.microsoft.com/en-us/sql/t-sql/statements/grant-database-permissions-transact-sql?view=sql-server-ver15#examples

关于azure - 应向 Azure SQL Server 添加什么权限,以使 Active Directory 用户能够自动设置自己的防火墙 IP 异常(exception)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71439372/

相关文章:

azure - 如何以编程方式将用户分配的托管标识分配给 Azure Web App 暂存槽?

asp.net-mvc - 无法从 global.asax 检索 Azure 图形 token

sql-server - 如何将 Azure SQL Server 连接字符串添加到 Windows 窗体中的 app.config?

azure - 从 VS Code 部署 Azure 函数 - 成功但在门户中不可见

azure - 在 Graph api 上使用客户端凭证流会返回没有范围的 access_token

azure - 从模块中提取资源详细信息以在另一个模块中使用

Azure AD - 为什么我无法验证 Azure AD 为我的 Web API 颁发的 JWT token ?出现 "IDX10516: Signature validation failed"错误

在数据库的单元测试中 Azure 管道托管代理与 Azure SQL 数据库的连接

azure - 如何通过 Terraform 设置 Azure Web 应用程序防火墙 (WAF) 日志?