我有一个带有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-AzureADGroup
cmdlet 创建 ADD 组。
然后,您必须使用New-AzureRmRoleAssignment
cmdlet 将所需角色分配给所需的资源(例如,将 SQL DB 参与者角色分配给 DB 服务器(。
延伸阅读:使用 Azure PowerShell 管理基于角色的访问控制