【问题标题】:Create service principal programmatically in Azure Python API在 Azure Python API 中以编程方式创建服务主体
【发布时间】:2018-06-06 02:07:30
【问题描述】:

我如何使用 Azure Python API 创建一套完整的凭据,以便以后在没有任何其他权限的情况下启动和取消分配命名资源组中的所有 VM?

我已经彻底研究了示例代码以及官方和非官方文档,但我什至不知道从哪里开始......

我知道我需要租户 ID、客户端 ID、客户端密码和订阅 ID。我可以使用 API 进行哪些操作,我将如何分配角色以允许启动/取消分配现有资源组的 VM?

示例代码备受追捧,但会接受任何提示!

【问题讨论】:

  • 手动执行此操作会容易得多。为什么要在代码中创建服务主体,而这是一次性的事情?
  • 因为,为什么要做计算机的工作?我的程序从头开始设置定制集群,这是最后一步。如果我需要用户干预,它会破坏应用程序的目的。
  • 好吧,这不是为了自动化 :) phew 我想我很幸运!

标签: python api azure rbac service-principal


【解决方案1】:

您需要azure-graphrbac 包来创建服务主体:

更接近样本的可能是这个单元测试:

角色和权限需要azure-mgmt-authorization:

此示例的最佳示例,可能是此示例的子部分:

“msi_identity”在您的上下文中是“服务主体”的同义词。

请注意,CLI v2.0 支持所有这些:

可能有兴趣在--debug 模式下测试 CLI 并同时嗅探代码仓库:

(完全披露,我在微软 Azure SDK for Python 团队工作)

【讨论】:

  • @Laurent,Microsoft 能否在其 unittest 和 SDK 模块文档中添加更多描述和 cmets?似乎代码中或任何包或模块中都没有任何内容。
  • 您能否在 azure sdk for python repo 中创建一个问题,要求提供更多文档和您需要的东西?谢谢! github.com/Azure/azure-sdk-for-python/issues
  • @LaurentMazuel 我正在查看您答案中的角色分配步骤。我看到 authorization_client.role_assignments.create() 正在接受 res_group_id、role_assign_name 和 role_assign_parameter)但是,我正在查看 docs.microsoft.com/en-us/python/api/azure-mgmt- 上的官方文档授权/azure.mgmt.authorization.v2018_09_01_preview.operations.roleassignmentsoperations?view=azure-python#create-scope--role-assignment-name--parameters--custom-headers-none--raw-false----操作-config- 我看到它采用了一个名为“范围”的参数而不是“res_group_id”?
  • 范围可以是任何 REST 资源实例。例如,对订阅使用“/subscriptions/{subscription-id}/”,对资源组使用“/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}”。所以 res_group_id 是一个有效的范围
猜你喜欢
  • 2023-02-22
  • 2019-10-17
  • 1970-01-01
  • 2011-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多