Azure App Service のデプロイ資格情報の構成
ローカル コンピューターからのアプリのデプロイをセキュリティで保護するために、Azure App Service では、ローカル Git デプロイと FTP/S デプロイに対して 2 種類の資格情報がサポートされています。 これらの資格情報は Azure サブスクリプションの資格情報とは異なります。
ユーザー レベルの資格情報: Azure アカウント全体の資格情報セットです。 これを使用して、Azure アカウントがアクセス許可を持っているすべてのアプリをサブスクリプションに関係なく App Service にデプロイできます。 これは、ポータルの GUI (アプリのリソース ページの [概要] や [プロパティ] など) に表示される既定のセットです。 ユーザーがロールベースのアクセス制御 (RBAC) または共同管理者のアクセス許可を使用してアプリのアクセス権を付与されると、そのユーザーは、アクセス権が取り消されるまで自分のユーザーレベル資格情報を使用できます。 これらの資格情報は他の Azure ユーザーと共有しないでください。
アプリ レベルの資格情報: アプリごとの資格情報セットです。 そのアプリのみにデプロイするために使用できます。 各アプリの資格情報は、アプリの作成時に自動的に生成されます。 これらは手動で構成できませんが、いつでもリセットできます。 RBAC を使用してアプリ レベルの資格情報へのアクセス権がユーザーに付与される場合、そのユーザーはアプリに対して共同作成者以上の権限 (Web サイトの共同作成者の組み込みロールを含む) を持つ必要があります。 閲覧者は発行を許可されていないため、この資格情報にアクセスできません。
Note
Azure portal の [開発センター (クラシック)] ページ (以前のデプロイ エクスペリエンス) は、2021 年 3 月に非推奨となる予定です。 この変更はアプリの既存のデプロイ設定には影響せず、 [デプロイ センター] ページで引き続きアプリのデプロイを管理できます。
ユーザー スコープの資格情報を構成する
az webapp deployment user set コマンドを実行します。 <username> と <password> を、デプロイ ユーザーのユーザー名とパスワードで置き換えます。
- ユーザー名は、Azure 内で一意である必要があり、ローカル Git プッシュの場合は "\@" シンボルを含めることはできません。
- パスワードは長さが 8 文字以上で、文字、数字、記号のうち 2 つを含む必要があります。
az webapp deployment user set --user-name <username> --password <password>
JSON 出力には、パスワードが null
として表示されます。
ユーザー スコープの資格情報と FTP/FTPS を使用する
ユーザー スコープの資格情報を使用した FTP または FTPS エンドポイントの認証には、<app-name>\<user-name>
の形式のユーザー名が必要です
ユーザー スコープの資格情報は、特定のリソースではなくユーザーにリンクされているため、適切なアプリのエンドポイントに対してサインイン アクションを実行するには、ユーザー名はこの形式でなければなりません。
アプリケーション スコープの資格情報を取得する
az webapp deployment list-publishing-profiles コマンドを使用して、アプリケーション スコープの資格情報を取得します。 次に例を示します。
az webapp deployment list-publishing-profiles --resource-group <group-name> --name <app-name>
ローカル Git デプロイの場合は、az webapp deployment list-publishing-credentials コマンドを使用して、アプリケーション スコープの資格情報が既に埋め込まれているアプリの Git リモート URI を取得することもできます。 次に例を示します。
az webapp deployment list-publishing-credentials --resource-group <group-name> --name <app-name> --query scmUri
アプリケーション スコープの資格情報をリセットする
az resource invoke-action コマンドを使用して、アプリケーション スコープの資格情報をリセットします。
az resource invoke-action --action newpassword --resource-group <group-name> --name <app-name> --resource-type Microsoft.Web/sites
基本認証を無効にする
組織によっては、セキュリティ要件を満たす必要があるため、FTP または WebDeploy によるアクセスを無効にした方がよい場合があります。 こうすることで、組織のメンバーは Azure Active Directory (Azure AD) で制御されている API を介してのみ App Services にアクセスできます。
FTP
サイトへの FTP アクセスを無効にするには、次の CLI コマンドを実行します。 プレースホルダーを目的のリソース グループとサイト名に置き換えます。
az resource update --resource-group <resource-group> --name ftp --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies --parent sites/<site-name> --set properties.allow=false
FTP アクセスがブロックされていることを確認するには、FileZilla などの FTP クライアントを使用して認証を試みます。 発行資格情報を取得するには、サイトの概要ブレードに移動して [発行プロファイルのダウンロード] をクリックします。 ファイルの FTP ホスト名、ユーザー名、パスワードを使用して認証すると、許可されないことを示す 401 エラー応答が表示されます。
WebDeploy と SCM
WebDeploy ポートと SCM サイトへの基本認証アクセスを無効にするには、次の CLI コマンドを実行します。 プレースホルダーを目的のリソース グループとサイト名に置き換えます。
az resource update --resource-group <resource-group> --name scm --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies --parent sites/<site-name> --set properties.allow=false
WebDeploy で発行プロファイルの資格情報がブロックされていることを確認するには、Visual Studio 2019 を使用して Web アプリを発行してみます。
API へのアクセスを無効にする
前のセクションの API は、Azure ロールベースのアクセス制御 (Azure RBAC) によってサポートされます。つまり、カスタム ロールを作成し、低い特権を持つユーザーをこのロールに割り当てると、これらのユーザーはどのサイトでも基本認証を有効化できなくなります。 カスタム ロールを構成するには、こちらの手順を実行します。
また、Azure Monitor を使用して成功した認証要求を監査し、Azure Policy を使用してサブスクリプション内のすべてのサイトにこの構成を適用することもできます。
次のステップ
これらの資格情報を使用して、ローカル Git から、または FTP/S を使用してアプリをデプロイする方法を確認します。