App Service デプロイで基本認証を無効にする

この記事では、App Service アプリにコードをデプロイする際に基本認証 (ユーザー名とパスワードの認証) を無効にする方法について説明します。

App Service ではデプロイ資格情報を使用して、FTP および WebDeploy クライアントが App Service に接続するための基本認証が提供されます。 これらの API は、サイトのファイル システムの参照、ドライバーとユーティリティのアップロード、MsBuild を使用したデプロイに優れています。 ただし多くの場合、企業では Microsoft Entra ID 認証など、基本認証よりも安全なデプロイ方法が必要とされます (「Azure App Service でのデプロイ方法別の認証の種類」をご参照ください)。 Microsoft Entra では OAuth 2.0 トークン ベースの認可を使用しており、基本認証の問題を軽減するのに役立つ、多くの利点と改善点があります。 たとえば、OAuth アクセス トークンは使用可能な有効期間が限られており、発行されるアプリケーションとリソースに固有のため、再利用することができません。 Microsoft Entra を使用すると、マネージド ID を使用して、他の Azure サービスからデプロイすることもできます。

基本認証を無効にする

基本認証には 2 つの異なるコントロールを使用できます。 具体的には、次のように使用します。

  • FTP デプロイの場合、基本認証は、basicPublishingCredentialsPolicies/ftp フラグ (ポータルの [FTP 基本認証の発行資格情報] オプション) によって制御されます。
  • Visual Studio、ローカル Git、GitHub など、基本認証を使用する他のデプロイ方法の場合、基本認証は、basicPublishingCredentialsPolicies/scm フラグ (ポータルの [SCM 基本認証の発行資格情報] オプション) によって制御されます。
  1. Azure portal で、 [App Services] を探して選択してから、アプリを選択します。

  2. アプリの左側のメニューで、 [構成]>[全般設定] を選択します。

  3. [SCM 基本認証の発行資格情報] または [FTP 基本認証の発行資格情報] で、[オフ] を選択し、[保存] を選択します。

    A screenshot showing how to disable basic authentication for Azure App Service in the Azure portal.

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 構成を切断し、代わりに [ユーザー割り当て ID] オプションを使用して新しい GitHub Actions 構成を作成します。
- 既存の GitHub Actions デプロイが手動で構成されている場合は、代わりにサービス プリンシパルまたは OpenID Connect を使用してみてください。
- デプロイ センターの新しい GitHub Actions 構成では、[ユーザー割り当て ID] オプションを使用します。
作成ウィザード のデプロイ [基本認証][無効] に設定され、[継続的デプロイ][有効] に設定されている場合、GitHub Actions は [ユーザー割り当て ID] オプション (OpenID Connect) を使用して構成されます。
App Service のビルド サービスを使用した Azure Repos 機能しません。
BitBucket 機能しません。
AzureWebApp タスクを使用した Azure Pipelines 機能します。
AzureRmWebAppDeployment タスクを使用した Azure Pipelines - フォールバック動作を取得するには、最新の AzureRmWebAppDeployment タスクを使用します。
- 発行プロファイル (PublishProfile) の接続の種類は、基本認証が使用されるため機能しません。 接続の種類を [Azure Resource Manager] (AzureRM) に変更します。
- Windows 以外のパイプライン エージェントでは、認証が機能します。
- Windows エージェントでは、タスク別の使用されるデプロイ方法を変更する必要がある場合があります。 Web Deploy を使用 (DeploymentType: 'webDeploy') し、基本認証を無効にすると、タスクは Microsoft Entra トークンを使用して認証されます。 windows-latest エージェントを使用していない場合、またはセルフホステッド エージェントを使用している場合は、追加の要件があります。 詳細については、Windows エージェントからの Microsoft Entra 認証を使用して Azure App Service に Web デプロイできないに関する記事を参照してください。
- zip デプロイパッケージから実行など、その他のデプロイ方法は機能します。

基本認証のアクセス許可がないカスタム ロールを作成する

低い特権のユーザーが任意のアプリに対して基本認証を有効にするのを防ぐには、カスタム ロールを作成し、ユーザーをそのロールに割り当ててください。

  1. Azure portal 内の上部メニュー内で、カスタム ロールを作成するサブスクリプションを検索して選択します。

  2. 左側のナビゲーションから、[アクセス制御 (IAM)]>[追加]>[カスタム ロールの追加] を選択します。

  3. [基本] タブを必要に応じて設定し、[次へ] を選択します。

  4. [アクセス許可] タブ内で、[権限を除外する] を選択します。

  5. [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 発行資格情報。
  6. これらの各操作の下で、[書き込み] のボックスを選択し、それから [追加] を選択します。 この手順では、この操作をロールの [NotActions] として追加します。

    ご利用の [アクセス許可] タブは、次のスクリーンショットのようになります。

    A screenshot showing the creation of a custom role with all basic authentication permissions excluded.

  7. [確認と作成](確認と作成) を選択し、次に [作成] を選択します。

  8. これで、このロールをご自身の組織のユーザーに割り当てることができます。

詳しくは、「Azure portal を使用して 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 を使用して、基本認証を引き続き使用するすべてのアプリを監査し、準拠していないリソースを修復することができます。 App Service 上の基本認証を監査および修復するための、組み込みのポリシーは次のとおりです。

スロットの対応するポリシーは次のとおりです。

よく寄せられる質問

Visual Studio で基本認証が無効になっているという警告が表示されるのはなぜですか?

Visual Studio では、Azure App Service にデプロイするには基本認証が必要です。 この警告では、アプリの構成が変更され、デプロイできなくなったことを通知しています。 アプリの基本認証を自分で無効にしたか、App Service アプリに対して基本認証を無効にすることが組織のポリシーによって強制されます。