在应用服务部署中禁用基本身份验证
本文介绍如何在将代码部署到应用服务应用时禁用基本身份验证(用户名和密码身份验证)。
应用服务提供基本身份验证,供 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 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 插件 | 有效。 |
创建向导中的部署 | 当“基本身份验证”设置为“禁用”,“持续部署”设置为“启用”时。 |
创建没有基本身份验证权限的自定义角色
若要防止较低特权的用户为任何应用启用基本身份验证,可以创建自定义角色并将用户分配到该角色。
在 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/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 审核仍使用基本身份验证的任何应用,并修正任何不符合标准的资源。 下面是用于为应用服务审核和修正基本身份验证的内置策略:
下面是槽的相应策略: