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

本文介绍如何在将代码部署到应用服务应用时禁用基本身份验证(用户名和密码身份验证)。

应用服务提供基本身份验证,供 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 Unauthenticted 消息。

若要确认 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 deployment source config-zip
- 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 插件 有效。
创建向导中的部署 当“基本身份验证”设置为“禁用”,“持续部署”设置为“启用”时。

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

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

  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/EF90E930-9D7F-4A60-8A99-748E0EEA69DE/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 审核仍使用基本身份验证的任何应用,并修正任何不符合标准的资源。 下面是用于为应用服务审核和修正基本身份验证的内置策略:

下面是槽的相应策略: