如何使用Python/Azure Databricks向Azure AD组添加成员?
在Azure Databricks中用Python批量添加服务主体到Azure AD组
步骤1:安装依赖包
在Databricks笔记本中运行以下命令安装Microsoft Graph Python SDK及身份认证库:
%pip install msgraph-sdk azure-identity
步骤2:配置身份权限
确保你用于认证的身份(Databricks工作区托管身份或自定义服务主体)拥有Microsoft Graph应用权限 GroupMember.ReadWrite.All,并已获得管理员同意:
- 登录Azure门户,找到目标身份(托管身份/服务主体)
- 进入「API权限」→「添加权限」→选择「Microsoft Graph」→「应用权限」
- 搜索并勾选
GroupMember.ReadWrite.All,点击「添加权限」 - 点击「授予管理员同意」完成权限配置
步骤3:Python实现代码
以下脚本通过Microsoft Graph API批量将服务主体添加到指定Azure AD组:
import asyncio from msgraph import GraphServiceClient from azure.identity import DefaultAzureCredential async def batch_add_sp_to_ad_group(): # 初始化Graph客户端,自动使用Databricks托管身份认证 credential = DefaultAzureCredential() graph_client = GraphServiceClient(credential, scopes=["https://graph.microsoft.com/.default"]) # 替换为你的AD组Object ID和服务主体Object ID列表 base_ad_group_object_id = "YOUR_GROUP_OBJECT_ID" service_principals = ["SP_OBJECT_ID_1", "SP_OBJECT_ID_2", "SP_OBJECT_ID_3"] for sp_object_id in service_principals: try: # 调用Graph API添加组成员 await graph_client.groups.by_group_id(base_ad_group_object_id).members.ref.post( body={"@odata.id": f"https://graph.microsoft.com/v1.0/directoryObjects/{sp_object_id}"} ) print(f"✅ 服务主体 {sp_object_id} 已成功添加到组") except Exception as e: print(f"❌ 添加服务主体 {sp_object_id} 失败: {str(e)}") # 执行异步任务 asyncio.run(batch_add_sp_to_ad_group())
可选:使用自定义服务主体认证
如果不使用托管身份,可通过服务主体密钥认证,修改初始化部分代码:
from azure.identity import ClientSecretCredential # 替换为你的租户ID、客户端ID、客户端密钥 tenant_id = "YOUR_TENANT_ID" client_id = "YOUR_CLIENT_ID" client_secret = "YOUR_CLIENT_SECRET" credential = ClientSecretCredential(tenant_id, client_id, client_secret) graph_client = GraphServiceClient(credential, scopes=["https://graph.microsoft.com/.default"])
内容的提问来源于stack exchange,提问作者LearneR
相关产品推荐
相关产品推荐

