この記事では、Azure App Service アプリにコードをデプロイするための基本的なユーザー名とパスワード認証を無効にする方法について説明します。 この記事では、基本認証を無効にするいくつかの方法、条件に応じたデプロイメントのフォールバック方法、および基本認証に関するアクセス試行を監視する方法について説明します。
App Service では、ユーザー名とパスワードのデプロイ資格情報を使用して接続するための FTP および Web 配置クライアントの基本認証が提供されます。 基本認証 API は、サイトのファイル システムの参照、ドライバーとユーティリティのアップロード、MSBuild での展開に適しています。 詳細については、「 Azure App Service のデプロイ資格情報を構成する」を参照してください。
多くの場合、企業では 、Microsoft Entra ID などの基本認証よりも安全な展開方法が必要です。 Microsoft Entra OAuth 2.0 アクセス トークンの有効期間は制限されており、発行対象のアプリケーションとリソースに固有であり、再利用することはできません。 OAuth トークン ベースの承認は、基本認証に関する多くの問題を軽減するのに役立ちます。
Microsoft Entra では、マネージド ID を使用して他の Azure サービスからデプロイすることもできます。 詳細については、「 Azure App Service でのデプロイ方法による認証の種類」を参照してください。
[前提条件]
- アプリへの FTP アクセスの基本認証を無効にするには、アプリへの所有者レベルのアクセス権が必要です。
- 低い特権を持つユーザーが基本認証を有効にできないようにロールを作成して割り当てるには、サブスクリプションの 所有者 または ユーザー アクセス管理者 のアクセス許可が必要です。
基本認証を無効にする
FTP デプロイの場合、基本認証は、basicPublishingCredentialsPolicies/ftp フラグまたは FTP 基本認証発行資格情報ポータル オプションによって制御されます。
Visual Studio、ローカル Git、GitHub などの基本認証を使用するその他のデプロイ方法では、基本認証は basicPublishingCredentialsPolicies/scm フラグまたは SCM 基本認証発行資格情報 ポータル オプションによって制御されます。
注
FTP 基本認証を有効にするには、SCM 基本認証が必要です。
基本認証を無効にするには:
Azure portal で、 [App Services] を探して選択してから、アプリを選択します。
アプリの左側のナビゲーション メニューで、[ 構成>一般設定] を選択します。
SCM Basic Auth Publishing Credentials、FTP Basic Auth Publishing Credentials、またはその両方で [オフ] を選択し、[保存] を選択します。
FTP アクセスがブロックされていることを確認するには、 FTP/FTPS を使用してアプリに接続してみてください。 認証されていない 401 メッセージが表示されます。
Git アクセスがブロックされていることを確認するには、ローカル Git デプロイを試してみてください。 認証に失敗したメッセージが表示されます。
基本認証なしでデプロイする
基本認証を無効にすると、基本認証に依存する展開方法は機能しなくなります。 一部のデプロイ方法には、フォールバック デプロイ メカニズムがあります。
次の表は、基本認証が無効になっている場合のさまざまな展開方法と、フォールバック メカニズムがある場合の動作を示しています。 詳細については、「Azure App Service でのデプロイ方法別の認証の種類」を参照してください。
| デプロイ方法 | 基本認証が無効になっている場合 |
|---|---|
| Visual Studio のデプロイ | Microsoft Entra 認証を使用したデプロイには、Visual Studio 2022 バージョン 17.12 以降が必要です。 |
| FTP | 機能しません。 |
| ローカル Git | 機能しません。 |
| Azure CLI(Azure コマンドライン インターフェイス) | 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 構成を切断し、ユーザー割り当て ID を使用する新しい GitHub Actions 構成を作成します。 既存の GitHub Actions デプロイが 手動で構成されている場合は、代わりにサービス プリンシパルまたは OpenID Connect を使用してみてください。 新しい GitHub Actions ワークフローでは、 ユーザー割り当て ID オプションを 使用します。 |
| App Service ビルド サービスを使用した GitHub | 機能しません。 |
| ポータル作成ウィザードからのデプロイ | 基本認証が [無効] に設定されているときに継続的デプロイ ソースを選択した場合、GitHub Actions はユーザー割り当て ID オプション (OpenID Connect) で構成されます。 |
| Bitbucket | 機能しません。 |
| Azure Repos の App Service ビルド サービス | 機能しません。 |
| Azure Repos と Azure Pipelines の組み合わせ | 機能します。 |
タスクを使用した AzureWebApp |
機能します。 |
基本認証を有効にしないようにカスタム ロールを作成する
低い特権を持つユーザーが任意のアプリに対して基本認証を有効にできないようにするには、カスタム ロールを作成し、そのユーザーをロールに割り当てます。
Azure portal で、カスタム ロールを作成するサブスクリプションを選択します。
左側のナビゲーション メニューで、[アクセス制御 (IAM)]>[カスタム ロールの追加>を選択します。
[ カスタム ロールの作成 ] ページで、ロールに名前を付け、[ 次へ] を選択します。
[ アクセス許可 ] タブで、[ アクセス許可の除外] を選択します。
Microsoft Web Apps を検索して選択します。
microsoft.web/sites/basicPublishingCredentialsPolicies を検索して展開します。
[ 書き込み] ボックスを選択し、[ 追加] を選択します。 この手順では、ロールの NotActions に操作を追加します。
[ アクセス許可の除外] をもう一度選択します。
microsoft.web/sites/slots/basicPublishingCredentialsPolicies を検索して展開し、[書き込み] ボックスを選択して、[追加] を選択します。
[ アクセス許可] タブは、次のスクリーンショットのようになります。 [確認と作成] を選択し、次に [作成] を選択します。
これで、このロールを組織のユーザーに割り当てることができます。 詳細については、 Azure portal を使用した Azure カスタム ロールの作成または更新に関するページを参照してください。
基本認証の試行を監視する
成功したおよび試行されたログインはすべて、Azure Monitor AppServiceAuditLogs ログの種類に記録されます。 FTP と Web Deploy でのログインの試行と成功を監査するには、「 ログを Azure Monitor に送信する 」の手順に従って、 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 Policy は 、組織の標準を適用し、大規模なコンプライアンスを評価するのに役立ちます。 Azure Policy を使用して、基本認証を引き続き使用するすべてのアプリを監査し、準拠していないリソースを修復することができます。 次の一覧は、App Service での基本認証の監査と修復のための組み込みのポリシーを示しています。
次の一覧は、スロットの対応するポリシーを示しています。