Azure App ServiceのManaged Instanceは、OSのカスタマイズ、オプションのプライベートネットワーキング、Azureサービスとの安全な統合が必要なWindowsウェブアプリ向けのプランスコープ付きホスティングオプションです。
- マネージド ID
- 構成 (インストール) スクリプト
- ストレージの取り付け
- レジストリ キー
- リモート デスクトップ プロトコル (RDP) アクセス
Important
Managed Instanceは、特定の地域でWindowsのウェブアプリ向けに一般的に利用可能で、Pv4およびPmv4の料金プランに限定されています。 Microsoftは今後さらに多くの地域を導入していく予定です。 Managed InstanceはLinuxやコンテナをサポートしていません。
マネージド ID を追加する (App Service プランに)
プランレベルのマネージドアイデンティティは、プラットフォーム層で行われるインフラ操作の認証を可能にします。例えば、設定(インストール)スクリプトが起動時にAzure Storageにアクセスしたり、ストレージマウントやレジストリキーアダプターのKey Vaultアクセスが可能になったりします。
次のシナリオでは、App Service プランのマネージド ID が必要です。
- Azure Storage に安全にアクセスして、そこから構成スクリプトを取得するため。
- ストレージ マウントとレジストリ キー アダプターの資格情報と値を指定するために Key Vault にアクセスする。
マネージド ID の作成については、ユーザー割り当てマネージド ID の管理に関する記事をご覧ください。
マネージド ID をマネージド インスタンス プランに追加するには:
- Azure portal でマネージド インスタンスに移動します。
- [ID]>[ユーザー割り当て] を選びます。
- [+ 追加] を選択します。
- サブスクリプションとマネージド ID を選びます。
- [追加] を選んで ID をプランに追加します。
構成 (インストール) スクリプトを追加する
設定(インストール)スクリプトは必須ではありません。 アプリが依存関係のインストールやOSレベルの機能設定が必要な場合はスクリプトを使いましょう。
構成 (インストール) スクリプトはインスタンスの起動時に実行され、永続的なカスタマイズを適用します。 例としては、コンポーネントオブジェクトモデル(COM)登録、Microsoft/Windowsインストーラー(MSI)のインストール、Windowsの役割や機能の有効化などがあります。 インスタンス再起動後も永続化しなければならない変更には設定スクリプトを使いましょう。 診断にはRDPを使い、永続的な設定には使いません。
構成 (インストール) スクリプトを使うには、次のものが必要です。
- App Service プランに割り当てられたマネージド ID
- 構成 (インストール) スクリプト パッケージ (zip) を保持する BLOB コンテナーのあるストレージ アカウント。
- ルートに
Install.ps1が含まれる 1 つの ZIP ファイル (エントリ ポイント) -
ストレージ アカウント、コンテナー、またはリソース グループに対する
Storage Blob Data Readerロール
構成スクリプトを追加するには:
Azure portal でマネージド インスタンスの App Service プランに移動します。
[構成]>[一般設定] を選びます。
[構成スクリプト] セクションで、まずスクリプトを構成します。
Setting 価値 ストレージ アカウント 使うストレージ アカウントを選ぶ コンテナ コンテナーの名前を入力します ZIP ファイル ZIP ファイルの名前を入力します 価値 この値が正しいことを確認します [適用] を選んで変更を保存します。
構成スクリプトのベスト プラクティス
- スクリプトをべき等にします (インストールの前に確認します)。
- 破壊的操作を防ぎます (保護された Windows システム ディレクトリを変更しないようにします)。
- 大きな負荷がかかるインストールを重ならないように調整して、開始時の待ち時間を短縮します。
最小限の zip 構造の例:
Install.ps1
myInstallerfileNameGoesHere.msi
config.xml
構成スクリプトの例:
# Install Components, for example Crystal Reports, Control Library, Database Driver
$ComponentInstaller = "myInstallerFileNameGoesHere.msi"
try {
$Component = Join-Path $PSScriptRoot $ComponentInstaller
Start-Process $Component -ArgumentList "/q" -Wait -ErrorAction Stop
} catch {
Write-Error "Failed to install ${ComponentInstaller}: $_"
exit 1
}
ストレージ マウントを構成する
ストレージマウントは、Azure Filesのような永続的な外部ストレージを提供し、アプリがアクセスできるようにします。 共有ファイルシステムアクセスが必要なレガシーコードにはストレージマウントを使いましょう。 秘密のために収納マウントは使わないでください。代わりにKey Vaultを使いましょう。 ローカルストレージは一時的ですが、Azure FilesやカスタムUNCマウントは再起動しても残ります。
ストレージ マウントを構成するには、次のものが必要です。
- マネージド ID (Key Vault アクセス用)
- Key Vault シークレット (資格情報ソース)
ストレージ マウントを構成するには:
- Azure portal でマネージド インスタンスに移動します。
- [構成]>[マウント] を選びます。
- [+ 新しいストレージ マウント] を選びます。
次の詳細を指定して、ストレージ マウントを構成します。
| Setting | 価値 |
|---|---|
| 名前 | マウント名を入力します |
| ストレージの種類 | Azure Files、カスタム、またはローカル (一時ストレージ) |
| ストレージ アカウント | ストレージ アカウントを選択または入力します |
| ファイル共有 | ファイル共有を選択します |
| 価値 | キー コンテナーを選択します |
| Secret | キー コンテナー シークレットを選択します |
| ドライブ文字をマウントする | ドライブ文字のパスを選択します |
外部ストレージをマネージド インスタンスにマウントできます。 マウントされたストレージは再起動後も永続的であり、アプリのファイル システムからアクセスできます。
Azure Files を使用してストレージ マウントを構成する
Azure Files のストレージ マウントを構成するには:
- Azure ストレージ アカウントと Azure Files 共有を作成します。
- 接続資格情報をシークレットとして Key Vault に格納します。
サポートされているシークレットの内容: (例:
DefaultEndpointsProtocol=...;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net) - マウントをマネージド インスタンスに追加します (Azure portal または ARM/Bicep/Terraform)。
ヒント
セキュリティを強化するために、Azure RBAC と共有 ACL を使って共有レベルのアクセス許可を適用します。
カスタム UNC を使用してストレージ マウントを構成する
他の場所 (オンプレミス、VM、または Microsoft 以外) でホストされている SMB 共有へのマウントを使います。 ネットワークに確実に接続します (仮想ネットワーク統合、プライベート エンドポイント、ファイアウォール)。
- 資格情報が必要な場合は、次の形式で Key Vault シークレットにそれを格納します:
username=<user>,password=<password>- ドメイン管理者アカウントは使わず、最小限の特権を持つサービス ID を使います。
- マウントをマネージド インスタンスに追加します。
レジストリ キーを構成する
アプリケーションの中には、Windows レジストリから読み取られた値に依存するものがあります。 レジストリ キー アダプターを使うと、レジストリ キーを作成し、Azure Key Vault のシークレットを値として使用できます。
レジストリ キーを構成するには、次のものが必要です。
- マネージド ID (Key Vault アクセス用)
- Key Vault シークレット (資格情報ソース)
レジストリ キーを構成するには:
[構成]>[レジストリ キー] に移動します。
[+ 追加] を選択します。
Setting 価値 経路 レジストリ パスを入力します Vault 既存のコンテナー名を入力します Secret キー コンテナー シークレットを選択または入力します タイプ 文字列または DWORD [追加] を選んでレジストリ キーを追加します。
注意事項
システムにとって重要なレジストリ パスを変更するときは注意してください。 誤って変更すると、インスタンスの安定性に影響する可能性があります。
RDP (Bastion) アクセスを構成する
クイック スタート: Azure Bastion を自動的にデプロイ すると、リモート デスクトップ プロトコル (RDP) を使用して VM インスタンスに安全に接続できます。 Azure Bastionを経由したRDPは診断やトラブルシューティングを目的としています。 永続的な変更には設定スクリプトを使いましょう。
Bastion と RDP のアクセスには、次のリソースが必要です。
- マネージド インスタンスは仮想ネットワークに統合されている必要があります
- ターゲット仮想ネットワーク上の Azure Bastion ホスト
- Bastion サブネットの NSG から App Service プラン サブネットの NSG へのポート 3389 を許可する必要があります
Bastion を構成するには:
- [構成]>[Bastion/RDP] に移動します。
- 仮想ネットワークが接続されていることを確認します。
- [リモート デスクトップを許可する (Bastion 経由)] を選びます。
注意事項
RDP 経由のみで、手動インストーラーや構成の変更を適用しないでください。 リサイクル時または構成ドリフトの作成時に変更が失われます。
よく寄せられる質問 (FAQ)
- Azure App Service マネージド インスタンスで実行されているオペレーティング システム (OS) は何ですか?
- その他の Windows の役割と機能を有効にすることはできますか?
- Azure App Service マネージド インスタンスは、プラットフォームとアプリケーションの定期的なスタック更新プログラムを受け取りますか?
- Azure App Service マネージド インスタンスにインストールされているプログラミング言語は何ですか?
- 構成 (インストール) スクリプトにはどのような制限がありますか?
- 構成 (インストール) スクリプトはどのアクセス許可レベルで実行されますか?
- Bastion を使用してインスタンスに接続するとき、オペレーターはどのようなロールのアクセス許可を持っていますか?
- 構成 (インストール) スクリプトまたはレジストリやストレージ アダプターでのエラーのトラブルシューティングを行うにはどうすればよいですか?
- Azure App Service マネージド インスタンスのワーカー インスタンスのアドレス指定可能なメモリは何ですか?
- 構成 (インストール) スクリプトをアップロードするには、どの Azure Storage サービスを使用する必要がありますか?
- 構成 (インストール) スクリプトの名前付けと形式に制限はありますか?
- ZIP ファイルの一部としてアップロードできる依存関係のサイズに制限はありますか?
- App Service プランのアダプターでマネージド インスタンスを追加または編集すると、プランのインスタンスが再起動されますか?
- マネージド インスタンスのプランに複数のインスタンスがある場合、1 つのインスタンスを再起動できますか?
- App Service プランのマネージド インスタンスに複数の Web アプリケーションがある場合、1 つの Web アプリケーションを再起動できますか?
- App Service プランのマネージド インスタンス内の Web アプリケーションにマネージド ID を割り当てることができますか?
- App Service プランのマネージド インスタンスに作成できるアダプターの数に制限はありますか?
Azure App Service マネージド インスタンスで実行されているオペレーティング システム (OS) は何ですか?
Windows Server 2022。
その他の Windows の役割と機能を有効にすることはできますか?
はい。構成スクリプトを使用します。 ただし、将来のWindows Serverのリリースから削除される機能は設定できません。
Azure App Service マネージド インスタンスは、プラットフォームとアプリケーションの定期的なスタック更新プログラムを受け取りますか?
はい。インスタンスは、定期的なプラットフォームの更新プログラムとメンテナンスを受け取ります。 また、サービスはプリインストールされたアプリケーションスタックも定期的に更新しています。 インストールするコンポーネントは設定スクリプトでメンテナンスする責任があります。
Azure App Service マネージド インスタンスにインストールされているプログラミング言語は何ですか?
サービスにはMicrosoft .NET Framework 3.5、4.8、Microsoft .NET 8.0が含まれています。 他のランタイムが必要な場合は、設定スクリプトを使ってインストールしてください。 Azure App Serviceはプラットフォームの一部として追加のランタイムを維持していません。
構成 (インストール) スクリプトにはどのような制限がありますか?
設定(インストール)スクリプトの制限は何ですか?
構成 (インストール) スクリプトを使うと、依存関係のインストール、役割と機能の有効化、オペレーティング システムのカスタマイズを行うことができます。 しかし、このサービスは破壊的な操作(例えば Windows\\System32の削除)をサポートしていません。なぜなら、それらはインスタンスの安定性に影響を与える可能性があるからです。
構成 (インストール) スクリプトはどのアクセス許可レベルで実行されますか?
システムレベルのコンポーネントをインストールして構成できるよう、構成 (インストール) スクリプトは管理者のアクセス許可で実行されます。
Bastion を使用してインスタンスに接続するとき、オペレーターはどのようなロールのアクセス許可を持っていますか?
Bastion 経由で接続するオペレーターは、セッション中に管理者特権を使用します。
構成 (インストール) スクリプトまたはレジストリやストレージ アダプターでのエラーのトラブルシューティングを行うにはどうすればよいですか?
Bastionを使って接続したオペレーターはセッション中に 管理者 権限を持ちます。 アダプターのログはマシンのルートにあるか、App Service Platform Logsにログインされています。
アダプター ログは、マシンのルートで見つかります。または、App Service のプラットフォーム ログにログされます。
Azure App Service マネージド インスタンスのワーカー インスタンスのアドレス指定可能なメモリは何ですか?
Azure App Serviceのワーカーインスタンス上のManaged Instanceのアドレス可能なメモリは、選択した料金プランによって異なります。 以下の表は、Managed Instanceワーカーインスタンスのアドレス指定メモリを示しています。
| 料金プラン | コア | メモリ (MB) |
|---|---|---|
| P0v4 | 1 | 2048 |
| P1v4 | 2 | 5952 |
| P2v4 | 4 | 13440 |
| P3v4 | 八 | 28672 |
| P1Mv4 | 2 | 13440 |
| P2Mv4 | 4 | 28672 |
| P3Mv4 | 八 | 60160 |
| P4Mv4 | 16 | 121088 |
| P5Mv4 | 32 | 246016 |
構成 (インストール) スクリプトをアップロードするには、どの Azure Storage サービスを使用する必要がありますか?
スクリプトと必要な依存関係のアップロードには Azure Storage Blob サービスを使います。
構成 (インストール) スクリプトの名前付けと形式に制限はありますか?
はい。スクリプトの名前は Install.ps1 にする必要があります。 PowerShell のみがサポートされています。 構成 (インストール) スクリプトと依存関係を 1 つの .zip ファイルとしてアップロードしてください。
ZIP ファイルの一部としてアップロードできる依存関係のサイズに制限はありますか?
サイズ制限は適用されません。 依存関係の全体的なサイズは、インスタンスのプロビジョニング時間に影響することに注意してください。
App Service プランのアダプターでマネージド インスタンスを追加または編集すると、プランのインスタンスが再起動されますか?
はい、Managed Instanceプランアダプター(設定スクリプト、ストレージ、レジストリ)を追加または編集すると、基盤となるインスタンスが再起動し、プランに展開されているすべてのウェブアプリに影響を及ぼします。 構成変更を適用するにはインスタンスの再起動が必要です。
マネージド インスタンスのプランに複数のインスタンスがある場合、1 つのインスタンスを再起動できますか?
はい。マネージド インスタンスを参照し、左側のメニューで [インスタンス] を選びます。 次に、インスタンス名の横にある [再起動] を選びます。
App Service プランのマネージド インスタンスに複数の Web アプリケーションがある場合、1 つの Web アプリケーションを再起動できますか?
はい。アプリの [概要] ページに移動して、[再起動] を選びます。
App Service プランのマネージド インスタンス内の Web アプリケーションにマネージド ID を割り当てることができますか?
はい。マネージド インスタンス内の Web アプリケーションに "異なる" マネージド ID を割り当てることができます。 マネージド ID のガイダンスに関する記事に従ってください
App Service プランのマネージド インスタンスに作成できるアダプターの数に制限はありますか?
App ServiceプランのManaged Instanceで作成できるアダプターの数に制限はありますか?
いいえ。ストレージまたはレジストリのアダプターの数に制限はありません。 App Service プランのマネージド インスタンスでは、構成 (インストール) スクリプト アダプターを 1 つだけ作成できます。 アダプターの数を増やすとインスタンスプロビジョニング時間が長くなるかもしれません。