你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure 应用服务部署中禁用基本身份验证

本文介绍如何禁用基本用户名和密码身份验证,以便将代码部署到 Azure 应用服务应用。 本文介绍了几种禁用基本身份验证、回退部署方法(如果有)以及如何监视基本身份验证访问尝试的方法。

应用服务为 FTP 和 Web 部署客户端提供基本身份验证,以使用用户名和密码部署凭据进行连接。 基本身份验证 API 适用于浏览站点的文件系统、上传驱动程序和实用工具以及使用 MSBuild 进行部署。 有关详细信息,请参阅 配置 Azure 应用服务的部署凭据

企业通常需要比基本身份验证更安全的部署方法,例如 Microsoft Entra ID。 Microsoft Entra OAuth 2.0 访问令牌的生存期有限,特定于颁发的应用程序和资源,并且不能重复使用。 基于 OAuth 令牌的授权有助于缓解基本身份验证的许多问题。

Microsoft Entra 还允许使用托管标识从其他 Azure 服务进行部署。 有关详细信息,请参阅 Azure 应用服务中的部署方法的身份验证类型

先决条件

  • 若要禁用对应用的 FTP 访问的基本身份验证,必须具有对应用的所有者级访问权限。
  • 若要创建和分配角色以防止低特权用户启用基本身份验证,必须在订阅中具有 所有者用户访问管理员 权限。

禁用基本身份验证

对于 FTP 部署,基本身份验证由 basicPublishingCredentialsPolicies/ftp 标志或 FTP 基本身份验证发布凭据 门户选项控制。

对于使用基本身份验证的其他部署方法,例如 Visual Studio、本地 Git 和 GitHub,基本身份验证由 basicPublishingCredentialsPolicies/scm 标志或 SCM 基本身份验证发布凭据 门户选项控制。

注释

要启用 FTP 基本身份验证,首先需要进行 SCM 基本身份验证。

若要禁用基本身份验证,请执行以下作:

  1. Azure 门户中搜索并选择“应用服务” ,然后选择应用。

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

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

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

若要确认 FTP 访问被阻止,请尝试 使用 FTP/FTPS 连接到应用。 应收到 401 未经身份验证 的消息。

若要确认 Git 访问被阻止,请尝试 本地 Git 部署。 应收到 身份验证失败 消息。

在没有基本身份验证的情况下部署

禁用基本身份验证时,依赖于基本身份验证的部署方法不再有效。 某些部署方法具有回退部署机制。

下表显示了禁用基本身份验证时各种部署方法的行为方式,以及回退机制(如果有)。 有关详细信息,请参阅 Azure 应用服务中部署方法的身份验证类型

部署方法 禁用基本身份验证时
Visual Studio 部署 使用 Microsoft Entra 身份验证的部署需要 Visual Studio 2022 版本 17.12 或更高版本。
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 配置的连接,并创建使用用户分配标识的新 GitHub Actions 配置。
如果现有的 GitHub Actions 部署是手动配置的,请尝试改用服务主体或 OpenID Connect。
对于新的 GitHub Actions 工作流,请使用 用户分配的标识 选项。
具有应用服务生成服务的 GitHub 无效。
从门户“创建向导”进行的部署 如果将基本身份验证设置为“禁用”时选择持续部署源,则 GitHub Actions 配置了用户分配的标识选项(OpenID Connect)。
Bitbucket 无效。
将 Azure Repos 与应用服务生成服务配合使用 无效。
使用 Azure Pipelines 的 Azure Repos 有效。
使用 任务的 AzureWebApp 有效。

创建自定义角色以防止启用基本身份验证

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

  1. 在 Azure 门户中,选择要在其中创建自定义角色的订阅。

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

  3. 在“ 创建自定义角色 ”页上,为角色指定一个名称,然后选择“ 下一步”。

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

  5. 搜索并选择 Microsoft Web 应用

  6. 搜索并展开 microsoft.web/sites/basicPublishingCredentialsPolicies

  7. 选择“ 写入”框,然后选择“ 添加”。 此步骤会将操作添加到角色的“NotActions”

  8. 再次选择 “排除权限 ”。

  9. 搜索并展开 microsoft.web/sites/slots/basicPublishingCredentialsPolicies,选择“写入”框,然后选择“添加”

  10. 权限 ”选项卡现在应如以下屏幕截图所示。 选择“查看 + 创建”,然后选择“创建”。

    显示对 basicPublishingCredentialsPolicies 排除“写入”的屏幕截图。

现在可以将此角色分配给组织的用户。 有关详细信息,请参阅 使用 Azure 门户创建或更新 Azure 自定义角色

监视基本身份验证尝试

所有成功的登录和已尝试的登录都会记录到 Azure Monitor AppServiceAuditLogs 日志类型。 若要审核 FTP 和 Web Deploy 上的尝试和成功登录,请按照 发送日志到 Azure Monitor 中的步骤操作,并启用 AppServiceAuditLogs 日志类型的传输。

若要确认日志已寄送到所选服务,请尝试通过 FTP 或 Web 部署登录。 以下示例显示了存储帐户日志。

{
  "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 审核仍使用基本身份验证的任何应用,并修正任何不符合标准的资源。 以下列表显示了用于审核和修正应用服务上基本身份验证的内置策略:

以下列表显示槽的相应策略: