我正在尝试使用Python脚本获取所有订阅。因此,我创建了服务主体并将其添加到Global administrator
角色中。
我仍然必须在每个订阅中手动添加用户,这是不需要的,因为我想自动在我们的Azure资源上创建报表,而无需记住为服务用户提供显式访问。
我的代码是:
from azure.common.credentials importServicePrincipalCredentials
from azure.mgmt.subscription import subscription_client
from pprint import pprint
def get_credentials():
cred = ServicePrincipalCredentials(
client_id="a",
secret="b",
tenant="c"
)
return cred
if __name__ == '__main__':
credentials = get_credentials()
client = subscription_client.SubscriptionClien(credentials, None)
for i in client.subscriptions.list(filter="*"):
pprint(i.display_name)
我在租户中有5个以上的订阅,但是只显示两个(一个是自动添加的,另一个是我手动添加的)
答案 0 :(得分:2)
还是我必须在每个订阅中手动添加用户 不需要,因为我想通过我们的Azure资源创建报告 自动执行,而无需记住为用户提供显式访问 服务用户。
这是预期的行为。本质上,Azure AD是一个用户存储,它不知道用户有权访问(或需要访问)哪些资源。
向该用户授予Global Administrator
角色将使该用户仅成为该Azure AD中的全局管理员。
您将需要使用Azure订阅基于角色的访问控制(RBAC)向该用户显式授予Azure订阅上的访问权限。
答案 1 :(得分:0)
为了下一个人寻求此信息...无需手动(门户、CLI 或脚本)向每个订阅添加用户,您只需将它们添加到租户根组和权限将级联到现有的所有其他订阅以及任何未来的订阅。
在 Web 门户中,主页 -> 管理组 -> 租户根组(详细信息) -> IAM -> 角色分配 -> 添加 -> 添加角色分配 -> [填写所需值] -> 保存>