EntraMCP 逻辑应用模板

日语见下文/英文如下
概述
此存储库提供了一个通用的、参数化的Azure逻辑应用(按使用量计费)工作流模板,名为 EntraMCP 翻译为中文是“进入MCP(管理控制面板/多协议控制器等,具体含义根据上下文确定)”。不过,由于“MCP”可能有多种含义,具体翻译时需要根据上下文来确定其准确含义。如果“MCP”在特定领域或上下文中有一个固定或常用的翻译,那么应该采用那个翻译。
EntraMCP 是做什么的?
EntraMCP 是一个由 HTTP 触发的逻辑应用程序,用于执行 Entra ID(Azure AD)用户管理操作:
- 撤销会话撤销用户登录会话
- 禁用用户禁用用户账户并撤销会话
- 启用用户启用用户帐户
该工作流接受带有JSON有效载荷的HTTP POST请求:
{
"UPN": "user@domain.com",
"Action": "RevokeSession" // or "DisableUser" or "EnableUser"
}建筑学
- 触发器HTTP 请求(手动调用)
- 行动通过Azure AD连接器调用Microsoft Graph API的switch-case逻辑
- 回应成功/失败状态及操作详情
状态此模板包含了实际的生产工作流程定义。您可以直接部署,或根据需要进行定制。
🚀 快速部署
点击 “部署到Azure” 点击上方按钮,直接将此逻辑应用程序部署到您的 Azure 订阅中。
部署步骤:
- 点击“部署到 Azure”按钮
- 选择订阅和资源组
- 指定逻辑应用的名称和位置
- 审查并创建
部署后配置(必需):
重要的部署后,您必须授权 Azure AD API 连接:
- 前往 Azure 门户 → 资源组 → \[您的资源组\] → API 连接 →
azuread-1 - 点击“编辑API连接”
- 点击“授权”并使用相应权限登录
- 保存连接
所需权限:
Azure AD 连接需要:
User.ReadWrite.All- 启用/禁用用户User.RevokeSessions.All- 撤销用户会话
关键文件:
infra/main.bicep– 部署逻辑应用工作流的肱二头肌模板infra/connection.bicepAzure AD API 连接模板workflows/entra_mcp.definition.json– 生产工作流程定义(Entra ID 用户管理)azuredeploy.json– 用于“部署到Azure”按钮的ARM模板.github/workflows/deploy-logicapp.yml– 使用OIDC将GitHub Actions工作流(手动触发)发送到Azure。
如何使用
0. GitHub 仓库设置(仅首次需要)
如果是您第一次使用,请创建一个GitHub仓库:
- 访问 https://github.com/new
- 仓库名称:
EntraMCP - 所有者:
murasameabo - 设置可见性(公开或私有)
- 不要使用README文件进行初始化(我们已经有了一个)
- 创建仓库
- 推送这个模板:
cd "c:\Users\shishii\OneDrive - Microsoft\CODE\EntraMCP"
git branch -M main # Rename master to main if needed
git push -u origin main1. 获取现有工作流定义
重要在部署之前,您必须导出您的实际 Logic App 定义。
选项A - 使用Azure门户(推荐):
- 前往 Azure 门户 → 逻辑应用
- 找到名为“EntraMCP”的你的逻辑应用
- 点击“逻辑应用代码视图”或“导出模板”
- 复制 工作流定义 部分(而非整个ARM模板)
- 将其粘贴到
workflows/entra_mcp.definition.json - 确保它是有效的JSON(无注释,结构正确)
选项 B - 使用 Azure CLI(Azure 命令行界面) (如已安装):
# Find your Logic App
$subscriptionId = "your-subscription-id"
$resourceGroup = "your-resource-group"
$logicAppName = "EntraMCP"
az account set --subscription $subscriptionId
az logic workflow show -g $resourceGroup -n $logicAppName --query definition > workflows/entra_mcp.definition.json导出的定义应该如下所示:
{
"contentVersion": "1.0.0.0",
"parameters": {
"$connections": {
"type": "Object"
}
},
"triggers": {
"manual": {
"type": "Request",
"kind": "Http"
}
},
"actions": {
"YourAction": {
"type": "Http",
"inputs": { ... }
}
},
"outputs": {}
}2. 通过 Azure CLI 部署 Bicep
# Variables
$RG="my-rg"; $LOC="japaneast"; $NAME="entra-mcp-dev"
az group create -n $RG -l $LOC
az deployment group create -g $RG `
-f infra/main.bicep `
-p logicAppName=$NAME location=$LOC workflowDefinition=@workflows/entra_mcp.definition.json添加可选参数: workflowState, tags={env:'dev'} 等。
3. ARM 模板替代方案
你仍然可以使用 azuredeploy.parameters.json 通过翻译Bicep文件来使用它,或者创建一个ARM部署:
az deployment group create -g $RG -f infra/main.bicep -p @azuredeploy.parameters.json(此处参数文件已经嵌入了一个最小的空定义。)
4. GitHub Actions 部署
配置仓库密钥:
AZURE_CLIENT_ID– 联邦凭证服务主体。AZURE_TENANT_ID– Azure AD 租户 ID。
在Entra ID中为OIDC(GitHub Actions)创建一个联合凭据。 手动触发:操作 -> 部署逻辑应用(EntraMCP)-> 运行工作流 -> 填充输入项。
5. 安全更新定义
- 从门户导出新定义。
- 验证JSON(无注释,括号正确)。
- 提交并推送。
- 重新运行工作流或CLI部署(幂等操作)。
6. 连接与API连接器
此模板不部署API连接。如果您的工作流引用了类似以下的连接: @parameters('$connections'),你必须:
- 确保资源组中已存在连接。
- 或者扩展这个模板(添加类型为
Microsoft.Web/connections)。 - 通过密钥库或参数化方式提供安全的机密信息,切勿硬编码。
7. 安全与最佳实践
- 在可能的情况下,使用托管身份进行下游调用,而不是使用密钥。
- 将工作流定义置于版本控制(Git)之下。
- 避免在代码中硬编码敏感值;将其存储在密钥库中,并在操作中引用。
- 标记资源(
tags(参数)与环境/所有者一起用于治理。 - 使用OIDC从GitHub到Azure(已在Actions文件中配置)而不是发布密钥。
8. 清理工作
az group delete -n $RG --yes --no-wait______________________________________________________________________
日语说明

此存储库是Azure Logic Apps(按使用量付费/Consumption)工作流的通用模板。workflows/entra_mcp.definition.json 请将其替换为实际的导出定义后使用。
🚀 快速部署
上面 “部署到 Azure” 点击按钮后,可直接将内容部署到 Azure 订阅。请指定以下内容:
- 订阅和资源组的选择
- 指定逻辑应用程序的名称和位置
- 提供工作流定义(或使用占位符)
初次设置(创建GitHub存储库)
- 访问https://github.com/new
- 仓库名:
EntraMCP、店主:murasameabo - 选择公钥/私钥,不使用README初始化
- 创建仓库后:
cd "c:\Users\shishii\OneDrive - Microsoft\CODE\EntraMCP"
git branch -M main # master を main にリネーム (必要に応じて)
git push -u origin main使用方法概要
重要请务必在部署前,通过Azure门户导出现有Logic App的定义。
方法A - Azure 门户(推荐):
- Azure 门户 → 逻辑应用
- 查找名为“EntraMCP”的逻辑应用程序
- 点击“逻辑应用代码视图”或“导出模板”
- 工作流定义 复制部分(而非整个 ARM 模板)
workflows/entra_mcp.definition.json粘贴到- 确认JSON有效(删除注释,检查语法)
方法B - Azure CLI(Azure 命令行接口) (如已安装):
$subscriptionId = "your-subscription-id"
$resourceGroup = "your-resource-group"
$logicAppName = "EntraMCP"
az account set --subscription $subscriptionId
az logic workflow show -g $resourceGroup -n $logicAppName --query definition > workflows/entra_mcp.definition.json部署步骤
- 从现有Logic App导出定义JSON
workflows/entra_mcp.definition.json并进行覆盖。 - Bicep 部署示例:
$RG="my-rg"; $LOC="japaneast"; $NAME="entra-mcp-dev"
az group create -n $RG -l $LOC
az deployment group create -g $RG -f infra/main.bicep -p logicAppName=$NAME location=$LOC workflowDefinition=@workflows/entra_mcp.definition.json- 如使用GitHub Actions,则需OIDC服务主体和
AZURE_CLIENT_ID,AZURE_TENANT_ID设置其秘密,并通过手动触发器指定输入值。 - 需要另行创建连接(API Connections)。
Microsoft.Web/connections通过增加资源可以实现自动化。 - 请将机密值替换为对Key Vault的引用等,不要直接写入定义中。
常见的下一步
- 在 Bicep 中添加 API 连接
- 工作流定义的参数化(例如:复发频率、URL、邮件发送地址)
- 通过GitHub Actions的matrix部署到测试环境(dev/stg/prod)
API连接的附加提示
肱二头肌示例(之后会扩展):
resource connectionExample 'Microsoft.Web/connections@2021-06-01' = {
name: 'office365'
location: location
properties: {
displayName: 'Office365'
api: {
id: subscriptionResourceId('Microsoft.Web/locations/managedApis', location, 'office365')
}
}
}随后将其添加到 workflowDefinition.parameters 中 $connections 进行嵌入。
______________________________________________________________________
贡献;助力
欢迎提出问题/拉取请求(Pull Requests)。请保持定义的通用性,避免包含特定环境的敏感信息。
许可证
MIT(如需更改请自行修改)
