本文介绍如何在将代码部署到 Azure 应用服务应用时禁用基本身份验证(用户名和密码身份验证)。
应用服务为 FTP 和 Web 部署客户端提供基本身份验证,可以使用 部署凭据进行连接。 这些 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 门户
- Azure CLI
在 Azure 门户中搜索并选择“应用服务” ,然后选择应用。
在应用的左侧菜单中,选择 “配置>常规”设置。
对于 SCM 基本身份验证发布凭据 或 FTP 基本身份验证发布凭据,请选择 “关闭 ”,然后选择“ 保存”。
若要确认 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 Actions 将使用“用户分配的标识”选项 (OpenID Connect) 进行配置。 |
若要防止具有较低特权的用户为任何应用启用基本身份验证,可以创建自定义角色并将用户分配到该角色。
- Azure 门户
- Azure CLI
在 Azure 门户中的顶部菜单中,搜索并选择要在其中创建自定义角色的订阅。
在左侧菜单中,选择“ 访问控制”(IAM)>“添加>自定义角色。
根据需要设置 “基本 ”选项卡,然后选择“ 下一步”。
在“ 权限 ”选项卡中,选择“ 排除权限”。
查找并选择 Microsoft Web 应用程序,然后搜索以下操作:
操作 DESCRIPTION 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 和 Web 部署上的尝试和成功登录,请按照 将日志发送到 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 审核仍使用基本身份验证的任何应用,并修正任何不符合标准的资源。 下面是用于为应用服务审核和修正基本身份验证的内置策略:
下面是槽的相应策略: