如何通过 PowerShell 将具有数据写入和数据读取权限的 AAD 组添加到 Azure DB



我有一个带有SQL数据库的Azure SQL服务器。我想通过 PowerShell 向此数据库添加具有数据写入和数据读取权限的 AAD 组。

我不知道该怎么做。谁能帮忙?

通常使用 SQL 语句将用户添加到角色。这就是使用 SQL 完成此操作的方式。

CREATE USER [group name]
FROM external provider
DEFAULT_SCHEMA dbo

添加用户后,可以通过发出以下语句将其添加到组中;

ALTER ROLE db_datareader ADD MEMBER [group_name]
ALTER ROLE db_datawriter ADD MEMBER [group_name]

请注意,在 SSMS 中,必须位于要将用户添加到的数据库的上下文中。Azure SQL 不支持 USE 语句,因此请确保选择了正确的数据库。

若要通过 powershell 执行此操作,你可能希望使用以下 CmdLet、Add-RoleMember,但我以前从未将这些 CmdLet 与 Azure SQL Server 一起使用过。

这是通过 Powershell 将用户添加到 SQL 数据库的一种方法;

$Instance = $ENV:AzureSQLServer + ".database.windows.net"
$Query = "CREATE USER [$ENV:AdUser] FROM EXTERNAL PROVIDER"
$ConnString = "Server=" + $Instance + ";Database=master;Authentication=Active Directory Password;UID=" + $Env:SqlAdminUser + ";Password=" + $Env:SqlAdminPass + ";Trusted_Connection=false;Encrypt=True;Connection Timeout=30;"
Invoke-SQlCmd -ConnectionString $ConnString -Query $Query

我们在 Jenkins 的 PowerShell 任务中使用此脚本将用户添加到数据库。可以修改语句以将用户添加到相应的角色。

我假设您要将 AAD 组设置为 SQL 数据库的 AAD 管理员。

在此方案中,您可以使用Set-AzureRmSqlServerActiveDirectoryAdministrator

Set-AzureRmSqlServerActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -ServerName "Server01" -DisplayName "DBAs" -ObjectId "40b79501-b343-44ed-9ce7-da4c8cc7353b"

结果:

ResourceGroupName ServerName DisplayName ObjectId 
----------------- ---------- ----------- -------- 
ResourceGroup01   Server01   DBAs        40b79501-b343-44ed-9ce7-da4c8cc7353b

注意:

只能设置启用了安全性的 AAD 组。

如果这有帮助,请告诉我!

首先必须使用 Azure AD 模块中的New-AzureADGroupcmdlet 创建 ADD 组。

然后,您必须使用New-AzureRmRoleAssignmentcmdlet 将所需角色分配给所需的资源(例如,将 SQL DB 参与者角色分配给 DB 服务器(。

延伸阅读:使用 Azure PowerShell 管理基于角色的访问控制

最新更新