快速入门:使用 Go 创建管理组

管理组是一些容器,可以帮助跨多个订阅管理访问权限、策略和符合性。 可以创建这些容器来构建可以与 Azure PolicyAzure 基于角色的访问控制配合使用的有效且高效的层次结构。 若要详细了解管理组,请参阅使用 Azure 管理组整理资源

在目录中创建的第一个管理组可能需要最多 15 分钟才能完成。 一些进程会首次运行以在 Azure 中为目录设置管理组服务。 在进程完成后将显示通知。 有关详细信息,请参阅管理组的初始设置

先决条件

  • 如果没有 Azure 订阅,请在开始前创建一个试用版订阅帐户。

  • Azure 服务主体,包括 clientId 和 clientSecret 。 如果你没有与 Azure Policy 一起使用的服务主体,或想要创建一个新的服务主体,请参阅用于 .NET 身份验证的 Azure 管理库。 跳到安装 .NET Core 包的步骤,我们将在接下来的步骤中执行此安装。

  • 如果未启用层次结构保护,则租户中的任何 Azure AD 用户即使未分配有管理组写入权限,也可创建管理组。 这个新的管理组将成为根管理组的子级或默认管理组,并将为创建者分配“所有者”角色。 管理组服务允许此功能,因此不需要在根级别分配角色。 创建根管理组时,用户没有访问权限。 为避免在查找 Azure AD 全局管理员以开始使用管理组方面遇到阻碍,我们允许在根级别创建初始管理组。

注意

在可以在由世纪互联运营的 Microsoft Azure 中使用 Azure CLI 之前,请先运行 az cloud set -n AzureChinaCloud 来更改云环境。 若要切换回 Azure 公有云,请再次运行 az cloud set -n AzureCloud

添加管理组包

若要使用 Go 来管理管理组,必须添加包。 此包适用于可使用 Go 的任何情况,包括 Windows 10 上的 bash 或本地安装的 bash。

  1. 检查是否已安装最新的 Go(至少为 1.15 版)。 如果尚未安装,请在 Golang.org 下载。

  2. 请确保安装最新的 Azure CLI(至少为 2.5.1)。 如果尚未安装,请参阅安装 Azure CLI

    注意

    在以下示例中,需要 Azure CLI 来启用 Go 以使用 auth.NewAuthorizerFromCLI() 方法。 有关其他选项的信息,请参阅 Azure SDK for Go - 更多身份验证详细信息

  3. 通过 Azure CLI 进行身份验证。

    az login
    
  4. 在你选择的 Go 环境中,请安装管理组所需的包:

    # Add the management group package for Go
    go install github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2020-05-01/managementgroups@latest
    
    # Add the Azure auth package for Go
    go install github.com/Azure/go-autorest/autorest/azure/auth@latest
    

应用程序设置

将 Go 包添加到你选择的环境中后,就可设置能创建管理组的 Go 应用程序了。

  1. 创建 Go 应用程序并将以下源保存为 mgCreate.go

    package main
    
    import (
     "context"
     "fmt"
     "os"
    
     mg "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2020-05-01/managementgroups"
     "github.com/Azure/go-autorest/autorest/azure/auth"
    )
    
    func main() {
     // Get variables from command line arguments
     var mgName = os.Args[1]
    
     // Create and authorize a client
     mgClient := mg.NewClient()
     authorizer, err := auth.NewAuthorizerFromCLI()
     if err == nil {
     	mgClient.Authorizer = authorizer
     } else {
     	fmt.Printf(err.Error())
     }
    
     // Create the request
     Request := mg.CreateManagementGroupRequest{
     	Name: &mgName,
     }
    
     // Run the query and get the results
     var results, queryErr = mgClient.CreateOrUpdate(context.Background(), mgName, Request, "no-cache")
     if queryErr == nil {
     	fmt.Printf("Results: " + fmt.Sprint(results) + "\n")
     } else {
     	fmt.Printf(queryErr.Error())
     }
    }
    
  2. 构建 Go 应用程序:

    go build mgCreate.go
    
  3. 使用已编译的 Go 应用程序创建管理组。 将 <Name> 替换为新的管理组的名称:

    mgCreate "<Name>"
    

结果是根管理组中的一个新的管理组。

清理资源

如果希望从 Go 环境中删除已安装的包,可使用以下命令执行此操作:

# Remove the installed packages from the Go environment
go clean -i github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2020-05-01/managementgroups
go clean -i github.com/Azure/go-autorest/autorest/azure/auth

后续步骤

在本快速入门中,你创建了一个管理组来整理资源层次结构。 管理组可以包含订阅或其他管理组。

要详细了解管理组以及如何管理资源层次结构,请继续执行以下操作: