代码之家  ›  专栏  ›  技术社区  ›  STORM

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

  •  1
  • STORM  · 技术社区  · 7 年前

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

    我不知道该怎么做。有人能帮忙吗?

    3 回复  |  直到 7 年前
        1
  •  0
  •   Sage    7 年前

    向角色添加用户通常是通过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 ,但我以前没有在Azure SQL Server中使用过这些Cmdlet。

    这是通过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任务中使用此脚本将用户添加到数据库中。语句也可以修改为将用户添加到适当的角色中。

        2
  •  1
  •   Sa Yang    7 年前

    我假设您希望将aad group设置为SQL数据库的aad admin。

    在这种情况下,您可以使用 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组。

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

        3
  •  0
  •   Martin Brandl    7 年前

    您首先必须使用例如 New-AzureADGroup 作为 AzureAD module .

    然后,您必须使用 New-AzureRmRoleAssignment Cmdlet。

    进一步阅读: Manage role-based access control with Azure PowerShell