你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在应用服务部署中禁用基本身份验证
本文介绍如何在将代码部署到应用服务应用时禁用基本身份验证(用户名和密码身份验证)。
应用服务提供基本身份验证,供 FTP 和 WebDeploy 客户端使用部署凭据连接到它。 这些 API 非常适于浏览站点的文件系统、上传驱动程序和实用程序以及使用 MsBuild 进行部署。 但是,企业通常需要比基本身份验证更安全的部署方法,例如 Microsoft Entra ID 身份验证(请参阅 Azure 应用服务中按部署方法划分的身份验证类型)。 Microsoft Entra 使用基于 OAuth 2.0 令牌的授权,具有许多优势和改进,可帮助缓解基本身份验证中的问题。 例如,OAuth 访问令牌具有有限的可用生存期,并且特定于为其颁发这些令牌的应用程序和资源,因此无法重复使用。 Microsoft Entra 还支持使用托管标识从其他 Azure 服务进行部署。
禁用基本身份验证
基本身份验证有两个不同的控制措施可用。 具体而言:
- 对于 FTP 部署,基本身份验证由
basicPublishingCredentialsPolicies/ftp
标志(门户中的 FTP 基本身份验证发布凭据选项)控制。 - 对于使用基本身份验证的其他部署方法(如 Visual Studio、本地 Git 和 GitHub),基本身份验证由
basicPublishingCredentialsPolicies/scm
标志(门户中的 SCM 基本身份验证发布凭据选项)控制。
在 Azure 门户中搜索并选择“应用服务” ,然后选择应用。
在应用的左侧菜单中,选择“配置”>“常规设置”。
对于 SCM 基本身份验证发布凭据 或 FTP 基本身份验证发布凭据,选择“关闭” ,然后选择“保存 。
若要确认 FTP 访问被阻止,请尝试使用 FTP/S 连接到应用。 应收到 401 Unauthenticated
消息。
若要确认 Git 访问被阻止,请尝试 本地 Git 部署。 应收到 Authentication failed
消息。
不带基本身份验证的部署
禁用基本身份验证时,依赖于基本身份验证的部署方法会停止工作。
下表显示了禁用基本身份验证时各种部署方法的行为方式,以及是否存在任何回退机制。 有关详细信息,请参阅 Azure 应用服务中部署方法的身份验证类型。
部署方法 | 禁用基本身份验证时 |
---|---|
Visual Studio 部署 | 无效。 |
FTP | 无效。 |
本地 Git | 无效。 |
Azure CLI | 在 Azure CLI 2.48.1 或更高版本中,以下命令回退到 Microsoft Entra 身份验证: - az webapp up - az webapp deploy - az webapp log deployment show - az webapp log deployment list - az webapp log download - az webapp log tail - az webapp browse - az webapp create-remote-connection - az webapp ssh - az functionapp deploy - az functionapp log deployment list - az functionapp log deployment show - az functionapp deployment source config-zip |
Maven 插件或 Gradle 插件 | 有效。 |
具有应用服务生成服务的 GitHub | 无效。 |
GitHub Actions | - 使用基本身份验证的现有 GitHub Actions 工作流无法进行身份验证。 在部署中心中,断开现有 GitHub 配置的连接,然后改用“用户分配的标识”选项创建新的 GitHub Actions 配置。 - 如果现有的 GitHub Actions 部署是手动配置的,请尝试改用服务主体或 OpenID Connect。 - 对于部署中心中的新 GitHub Actions 配置,请使用“用户分配的标识”选项。 |
创建向导中的部署 | 当“基本身份验证”设置为“禁用”且“持续部署”设置为“启用”时,GitHub Actions 将使用“用户分配的标识”选项 (OpenID Connect) 进行配置。 |
具有应用服务生成服务的 Azure Repos | 无效。 |
BitBucket | 无效。 |
具有 AzureWebApp 任务的 Azure Pipelines | 有效。 |
具有 AzureRmWebAppDeployment 任务的 Azure Pipelines | - 使用最新的 AzureRmWebAppDeployment 任务获取回退行为。 - 发布配置文件 ( PublishProfile ) 连接类型不起作用,因为它使用基本身份验证。 将连接类型更改为“Azure 资源管理器(AzureRM )”。 - 在非 Windows Pipelines 代理上,身份验证有效。 - 在 Windows 代理上,可能需要修改任务使用的部署方法。 使用 Web 部署 ( DeploymentType: 'webDeploy' ) 并禁用基本身份验证时,任务将使用 Microsoft Entra 令牌进行身份验证。 如果不使用 windows-latest 代理,或者使用自托管代理,则还有其他要求。 有关详细信息,请参阅无法从 Windows 代理使用 Microsoft Entra 身份验证将 Web 部署到 Azure 应用服务。- 其他部署方法有效,例如“zip 部署”或“从包运行”。 |
创建没有基本身份验证权限的自定义角色
若要防止具有较低特权的用户为任何应用启用基本身份验证,可以创建自定义角色并将用户分配到该角色。
在 Azure 门户的顶部菜单中,搜索并选择要在其中创建自定义角色的订阅。
在左侧导航栏菜单中,选择“访问控制(IAM)”>“添加”>“添加自定义角色”。
根据需要设置“基本”选项卡,然后选择“下一步”。
在“权限”选项卡中,选择“排除权限”。
查找并选择“Microsoft Web 应用”,然后搜索以下操作:
Operation 说明 microsoft.web/sites/basicPublishingCredentialsPolicies/ftp
应用服务应用的 FTP 发布凭据。 microsoft.web/sites/basicPublishingCredentialsPolicies/scm
应用服务应用的 SCM 发布凭据。 microsoft.web/sites/slots/basicPublishingCredentialsPolicies/ftp
应用服务槽的 FTP 发布凭据。 microsoft.web/sites/slots/basicPublishingCredentialsPolicies/scm
应用服务槽的 SCM 发布凭据。 在其中的每个操作下,选中“写入”框,然后选择“添加”。 此步骤会将操作添加为角色的“NotActions”。
“权限”选项卡应如以下屏幕截图所示:
依次选择“查看 + 创建”、“创建”。
现在可以将此角色分配给组织的用户。
有关详细信息,请参阅使用 Azure 门户创建或更新 Azure 自定义角色
监视基本身份验证尝试
所有成功的登录和已尝试的登录都会记录到 Azure Monitor AppServiceAuditLogs
日志类型。 若要审核 FTP 和 WebDeploy 上已尝试的登录和成功的登录,请按照将日志发送到 Azure Monitor 中的步骤操作并启用 AppServiceAuditLogs
日志类型的传送。
若要确认日志已传送到所选服务,请尝试通过 FTP 或 WebDeploy 登录。 以下示例显示了一个存储帐户日志。
{ "time": "2023-10-16T17:42:32.9322528Z", "ResourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.WEB/SITES/MY-DEMO-APP", "Category": "AppServiceAuditLogs", "OperationName": "Authorization", "Properties": { "User": "$my-demo-app", "UserDisplayName": "$my-demo-app", "UserAddress": "24.19.191.170", "Protocol": "FTP" } }
与基本身份验证相关的策略
Azure Policy 可帮助实施组织标准并大规模评估符合性。 可以使用 Azure Policy 审核仍使用基本身份验证的任何应用,并修正任何不符合标准的资源。 下面是用于为应用服务审核和修正基本身份验证的内置策略:
下面是槽的相应策略:
常见问题解答
为什么我在 Visual Studio 中收到警告,指出基本身份验证已禁用?
Visual Studio 需要基本身份验证才能部署到 Azure 应用服务。 该警告提醒你应用上的配置已更改,无法再部署到该应用。 原因是你自己在应用上禁用了基本身份验证,或者你的组织策略强制为应用服务应用禁用基本身份验证。