在 App Service 部署中停用基本驗證
本文說明如何在程式碼部署至 App Service 應用程式時停用基本驗證 (使用者名稱和密碼驗證)。
App Service 為 FTP 和 WebDeploy 用戶端提供基本驗證,以使用部署認證連線到它。 這些 API 非常適合用來瀏覽網站的檔案系統、上傳驅動程式和公用程式,以及使用 MsBuild 進行部署。 不過,企業通常需要比基本驗證更安全的部署方法,例如 Microsoft Entra ID 驗證 (請參閱 Azure App Service 中部署方法的驗證類型)。 Microsoft Entra 使用 OAuth 2.0 權杖型授權,且有許多優點和改進項目可協助減輕基本驗證的問題。 例如,OAuth 存取權杖的可用存留期有限,而且專屬於發行的應用程式和資源,因此無法重複使用。 Microsoft Entra 也可讓您使用受控識別從其他 Azure 服務進行部署。
停用基本驗證
在 [Azure 入口網站] 中,搜尋並選取 [應用程式服務],然後選取您的應用程式。
在應用程式的左功能表中,選取 [設定]。
針對 [基本驗證發佈認證],選取 [關閉],然後選取 [儲存]。
若要確認 FTP 存取遭到封鎖,請嘗試使用 FTP/S 連線到您的應用程式。 您應該會收到 401 Unauthenticted
訊息。
若要確認 Git 存取遭到封鎖,請嘗試本機 Git 部署。 您應該會收到 Authentication failed
訊息。
不使用基本驗證的部署
當您停用基本驗證時,依賴基本驗證的部署方法會停止運作。 下表顯示各種部署方法在基本驗證停用時的行為,以及是否有任何後援機制。 如需詳細資訊,請參閱 Azure App Service 中部署方法的驗證類型。
部署方法 | 停用基本驗證時 |
---|---|
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 外掛程式 | 可以運作。 |
使用 App Service 組建服務的 GitHub | 無法運作。 |
GitHub 動作 | - 使用基本驗證的現有 GitHub Actions 工作流程無法驗證。 在部署中心內,中斷現有 GitHub 設定的連線,並改為使用使用者指派的身分識別選項建立的新 GitHub Actions 設定。 - 如果手動設定現有的 GitHub Actions 部署,請嘗試改用服務主體或 OpenID Connect。 - 針對部署中心的新 GitHub Actions 設定,請使用使用者指派的身分識別選項。 |
在建立精靈中部署 | 當 [基本驗證] 設定為 [停用] 且 [持續部署] 設定為 [啟用] 時,GitHub Actions 會使用 [使用者指派的身分識別] 選項 (OpenID Connect) 進行設定。 |
使用 App Service 組建服務的 Azure Repos | 無法運作。 |
BitBucket | 無法運作。 |
使用 AzureWebApp 工作的 Azure Pipelines | 可以運作。 |
使用 AzureRmWebAppDeployment 工作的 Azure Pipelines | - 使用最新的 AzureRmWebAppDeployment 工作來取得後援行為。 - 發行設定檔 ( PublishProfile ) 連線類型無法運作,因為其使用基本驗證。 將連線類型變更為 Azure Resource Manager (AzureRM )。 - 在非 Windows Pipelines 代理程式上,驗證可運作。 - 在 Windows 代理程式上,工作所使用的部署方法可能需要修改。 當使用 Web Deploy ( DeploymentType: 'webDeploy' ) 並停用基本驗證時,工作會使用 Microsoft Entra 權杖進行驗證。 如果您未使用 windows-latest 代理程式,或是使用自我裝載式代理程式,則還有其他需求。 如需詳細資訊,請參閱我無法使用 Windows 代理程式的 Microsoft Entra 驗證將 Web Deploy 部署至 Azure App Service。- 其他部署方法也可行,例如 zip 部署 或從套件執行。 |
建立沒有基本驗證權限的自訂角色
若要防止較低權限的使用者啟用任何應用程式的基本驗證,您可以建立自訂角色,並將使用者指派給角色。
在 Azure 入口網站的頂端功能表中,搜尋並選取您要在其中建立自訂角色的訂用帳戶。
從左側導覽列中,選取 [存取控制 (IAM)]>[新增]>[新增自訂角色]。
視需要設定 [基本] 索引標籤,然後選取 [下一步]。
在 [權限] 索引標籤中,選取 [排除權限]。
尋找並選取 [Microsoft Web Apps],然後搜尋下列作業:
作業 描述 microsoft.web/sites/basicPublishingCredentialsPolicies/ftp
App Service 應用程式的 FTP 發佈認證。 microsoft.web/sites/basicPublishingCredentialsPolicies/scm
App Service 應用程式的 SCM 發佈認證。 microsoft.web/sites/slots/basicPublishingCredentialsPolicies/ftp
App Service 位置的 FTP 發佈認證。 microsoft.web/sites/slots/basicPublishingCredentialsPolicies/scm
App Service 位置的 SCM 發佈認證。 在每個作業下方,選取 [寫入] 方塊,然後選取 [新增]。 此步驟會將作業新增為角色的 NotActions。
[權限] 索引標籤應該類似下列螢幕擷取畫面:
選取 [檢閱 + 建立],然後選取 [建立]。
您現在可以將此角色指派給組織的使用者。
如需詳細資訊,請參閱使用 Azure 入口網站建立或更新 Azure 自訂角色
監視基本驗證嘗試
所有成功和嘗試的登入都會記錄到 Azure 監視器 AppServiceAuditLogs
記錄類型中。 若要稽核 FTP 和 WebDeploy 上嘗試且成功的登入,請遵循將記錄傳送至 Azure 監視器的步驟,並啟用 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 原則有助於強制執行組織標準及大規模評估合規性。 您可以使用 Azure 原則來稽核任何仍使用基本驗證的應用程式,並補救任何不符合規範的資源。 下列是用於稽核和補救 App Service 上基本驗證的內建原則:
下列是位置的對應原則:
常見問題集
為什麼我在 Visual Studio 中收到一個警告,指出基本驗證已停用?
Visual Studio 需要基本驗證才能部署至 Azure App Service。 該警告提醒您應用程式上的設定已變更,且無法再對其進行部署。 您自己在應用程式上停用基本驗證,或者您的組織原則強制為 App Service 應用程式停用基本驗證。