本文討論如何停用將程式代碼部署至 Azure App Service 應用程式的基本使用者名稱和密碼驗證。 本文說明數種方式可停用基本身份驗證、如果有的話後援部署方法,以及如何監視基本身份驗證存取嘗試。
App Service 提供 FTP 和 Web Deploy 用戶端的基本身份驗證,以使用使用者名稱和密碼部署認證進行連線。 基本身份驗證 API 適用於瀏覽網站的檔案系統、上傳驅動程式和公用程式,以及使用 MSBuild 進行部署。 如需詳細資訊,請參閱 設定 Azure App Service 的部署認證。
企業通常需要比基本身份驗證更安全的部署方法,例如 Microsoft Entra ID。 Microsoft Entra OAuth 2.0 存取令牌具有有限的可用存留期、專屬於發行的應用程式和資源,且無法重複使用。 OAuth 令牌型授權可協助減輕基本身份驗證的許多問題。
Microsoft Entra 也可讓您使用受控識別從其他 Azure 服務部署。 如需詳細資訊,請參閱 Azure App Service 中的部署方法驗證類型。
先決條件
- 若要停用應用程式 FTP 存取的基本身份驗證,您必須擁有應用程式的擁有者層級存取權。
- 若要建立並指派角色,以防止低許可權的用戶啟用基本身份驗證,您必須擁有訂用帳戶中的 擁有者 或 使用者存取系統管理員 許可權。
停用基本驗證
針對 FTP 部署,基本身份驗證是由 basicPublishingCredentialsPolicies/ftp
旗標或 FTP 基本身份驗證發佈認證 入口網站選項所控制。
對於使用基本身份驗證的其他部署方法,例如Visual Studio、本機 Git 和 GitHub,基本身份驗證是由 basicPublishingCredentialsPolicies/scm
旗標或 SCM 基本身份驗證發佈 認證入口網站選項所控制。
備註
啟用 FTP 基本身份驗證需要 SCM 基本身份驗證。
若要停用基本身份驗證:
在 Azure 入口網站中,搜尋並選取 [應用程式服務],然後選取您的應用程式。
在應用程式的左側導覽功能表上,選取 [ 組態>一般設定]。
針對 [SCM 基本身份驗證發佈認證]、[FTP 基本身份驗證發佈認證] 或兩者選取 [關閉],然後選取 [儲存]。
若要確認 FTP 存取遭到封鎖,請嘗試 使用 FTP/FTPS 連線到您的應用程式。 您應該會收到 401 未驗證的 訊息。
若要確認 Git 存取遭到封鎖,請嘗試本機 Git 部署。 您應該會收到 驗證失敗 的訊息。
在沒有基本身份驗證的情況下部署
當您停用基本身份驗證時,相依於基本身份驗證的部署方法將無法再運作。 某些部署方法具有後援部署機制。
下表顯示各種部署方法在基本身份驗證停用時的行為以及備援機制(若有)。 如需詳細資訊,請參閱 Azure App Service 中部署方法的驗證類型。
部署方法 | 停用基本驗證時 |
---|---|
Visual Studio 部署 | 使用 Microsoft Entra 驗證進行部署需要 Visual Studio 2022 17.12 版或更新版本。 |
FTP | 無法運作。 |
本機 Git | 無法運作。 |
Azure 命令列介面 (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 與 App Service 建置服務一同使用 | 無法運作。 |
從入口網站的建立精靈進行部署 | 如果您在 [基本身份驗證] 設定為 [停用] 時選取 [持續部署來源],則會使用使用者指派的身分識別選項 [OpenID Connect] 來設定 GitHub Actions。 |
Bitbucket | 無法運作。 |
搭配 App Service 建置服務的 Azure Repos | 無法運作。 |
Azure Repos 搭配 Azure Pipelines | 可以運作。 |
Azure Pipelines配合AzureWebApp 任務 |
可以運作。 |
建立自定義角色以防止啟用基本身份驗證
若要防止低許可權的使用者啟用任何應用程式的基本身份驗證,您可以建立自定義角色,並將使用者指派給角色。
在 Azure 入口網站中,選取您要在其中建立自定義角色的訂用帳戶。
在左側導覽功能表上,選取 [ 訪問控制][IAM][>新增>自定義角色]。
在 [ 建立自定義角色] 頁面上,為角色指定名稱,然後選取 [ 下一步]。
在 [ 許可權] 索引標籤中,選取 [排除許可權]。
搜尋並選取 [Microsoft Web Apps]。
搜尋並展開 microsoft.web/sites/basicPublishingCredentialsPolicies。
選取 [ 寫入] 的方塊,然後選取 [ 新增]。 此步驟會將該角色的作業新增至 NotActions 列表中。
再次選取 [排除許可權 ]。
搜尋並展開 microsoft.web/sites/slots/basicPublishingCredentialsPolicies、選取 [寫入 ] 方塊,然後選取 [ 新增]。
您的 [許可權] 索引標籤現在看起來應該像下列螢幕快照。 選取 審核 + 建立,然後選取 建立。
您現在可以將此角色指派給組織的使用者。 如需詳細資訊,請參閱 使用 Azure 入口網站建立或更新 Azure 自定義角色。
監視基本驗證嘗試
所有成功和嘗試的登入都會記錄到 Azure 監視器 AppServiceAuditLogs
記錄類型中。 若要稽核 FTP 和 Web Deploy 上的嘗試和成功登入,請遵循 將記錄傳送至 Azure 監視器 並啟用記錄類型的傳送 AppServiceAuditLogs
步驟。
若要確認記錄已寄送至您選取的服務,請嘗試透過FTP或Web Deploy登入。 下列範例顯示記憶體帳戶記錄。
{
"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 原則 可協助您強制執行組織標準,並大規模評估合規性。 您可以使用 Azure 原則來稽核任何仍使用基本驗證的應用程式,並補救任何不符合規範的資源。 下列清單顯示App Service上稽核和補救基本身份驗證的內建原則:
下列清單顯示插槽的對應政策: