你当前正在访问 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 基本身份验证发布凭据选项)控制。
  1. Azure 门户中搜索并选择“应用服务” ,然后选择应用。

  2. 在应用的左侧菜单中,选择“配置”>“常规设置”。

  3. 对于 SCM 基本身份验证发布凭据FTP 基本身份验证发布凭据,选择“关闭” ,然后选择“保存

    显示如何在 Azure 门户中禁用 Azure 应用服务的基本身份验证的屏幕截图。

若要确认 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 部署”或“从包运行”。

创建没有基本身份验证权限的自定义角色

若要防止具有较低特权的用户为任何应用启用基本身份验证,可以创建自定义角色并将用户分配到该角色。

  1. 在 Azure 门户的顶部菜单中,搜索并选择要在其中创建自定义角色的订阅。

  2. 在左侧导航栏菜单中,选择“访问控制(IAM)”>“添加”>“添加自定义角色”

  3. 根据需要设置“基本”选项卡,然后选择“下一步”

  4. 在“权限”选项卡中,选择“排除权限”

  5. 查找并选择“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 发布凭据。
  6. 在其中的每个操作下,选中“写入”框,然后选择“添加”。 此步骤会将操作添加为角色的“NotActions”

    “权限”选项卡应如以下屏幕截图所示:

    显示创建自定义角色的屏幕截图,其中排除了所有基本身份验证权限。

  7. 依次选择“查看 + 创建”、“创建”。

  8. 现在可以将此角色分配给组织的用户。

有关详细信息,请参阅使用 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 应用服务。 该警告提醒你应用上的配置已更改,无法再部署到该应用。 原因是你自己在应用上禁用了基本身份验证,或者你的组织策略强制为应用服务应用禁用基本身份验证。