重要
2024 年 9 月 1 日に、すべてのお客様に対して Cloud Services (クラシック) は非推奨になりました。 既存の実行中のデプロイはすべて Microsoft によって停止およびシャットダウンされ、2024 年 10 月以降、データは永久的に失われます。 新しいデプロイでは、新しい Azure Resource Manager ベースのデプロイ モデル、 Azure Cloud Services (延長サポート) を使用してください。
この記事では、Microsoft Azure Cloud Services の構成と管理の問題についてよくあるご質問を紹介します。 サイズについては、Cloud Services Virtual Machine (VM) サイズのページ を参照してください。
この記事で Azure の問題に対処できない場合は、「Microsoft Q & A と Stack Overflow」の Azure 関連フォーラムを参照してください。 問題をこれらのフォーラムに投稿するか、または Twitter の @AzureSupport に投稿できます。 Azure サポート要求を送信することもできます。 サポート要求を送信するには、[Azure サポート] ページで [サポートを受ける] を選択します。
証明書
- 私のクラウド サービスの TLS または SSL 証明書の証明書チェーンが不完全なのはなぜですか。
- "Microsoft Azure Tools Encryption Certificate for Extensions" の目的は何ですか。
- インスタンスに "RDP 接続" せずに証明書署名要求 (CSR) を生成する方法を教えてください。
- クラウド サービス管理証明書の期限が切れました。 更新する方法を教えてください。
- メイン TLS または SSL 証明書 (.pfx) と中間証明書 (.p7b) のインストールを自動化する方法を教えてください。
- "Microsoft Azure Service Management for MachineKey" 証明書の目的は何ですか。
監視およびログ記録
- アプリケーションの管理と監視に利用できる Azure portal の今後の Cloud Service 機能について教えてください。
- インターネット インフォメーション サービス (IIS) によるログ ディレクトリへの書き込みが停止するのはなぜですか。
- Cloud Services の WAD ログ記録を有効にする方法を教えてください。
ネットワーク構成
- Azure Load Balancer のアイドル タイムアウトを設定する方法を教えてください。
- 私のクラウド サービスに静的 IP アドレスを関連付ける方法を教えてください。
- Azure の基本的な IPS/IDS と DDoS が提供する機能にはどのようなものがありますか。
- Cloud Services VM で HTTP/2 を有効にする方法を教えてください。
アクセス許可
- Microsoft 内部のエンジニアは、許可なくクラウド サービスのインスタンスにリモート デスクトップ接続できますか。
- RDP ファイルを使ってクラウド サービス VM にリモート デスクトップ接続できません。 "認証エラーが発生しました (コード: 0x80004005)" というエラーが発生します。
スケーリング
全般
- Web サイトに
nosniff
を追加する方法を教えてください。 - IIS の Web ロールをカスタマイズする方法を教えてください。
- クラウド サービスのクォータ制限とは何ですか。
- クラウド サービス VM 上のドライブで表示される空きディスク領域がほとんどないのはなぜですか。
- Cloud Services にマルウェア対策拡張機能を自動的に追加する方法を教えてください。
- Cloud Services で Server Name Indication (SNI) を有効にする方法を教えてください。
- Azure Cloud Service にタグを追加する方法を教えてください。
- Azure Portal に使っているクラウド サービスの SDK のバージョンが表示されません。 表示する方法を教えてください。
- 数か月間、クラウド サービスをシャットダウンしようと思います。 IP アドレスを失うことなくクラウド サービスの料金を減らす方法を教えてください。
証明書
私のクラウド サービスの TLS または SSL 証明書の証明書チェーンが不完全なのはなぜですか。
Microsoft では、リーフ証明書だけではなく、完全な証明書チェーン (リーフ証明書、中間証明書、およびルート証明書) をインストールすることをお客様にお勧めしています。 リーフ証明書だけをインストールする場合、Windows を使用して、証明書信頼リスト (CTL) を確認して証明書チェーンを構築します。 Windows が証明書を検証しようとしたときに、Azure または Windows Update で断続的なネットワークの問題やドメイン ネーム システム (DNS) の問題が発生すると、証明書は無効と見なされる可能性があります。 完全な証明書チェーンをインストールすると、この問題を回避できます。 完全な証明書チェーンをインストールする方法については、ブログ記事「チェーンされた SSL 証明書をインストールする方法」をご覧ください。
"Microsoft Azure Tools Encryption Certificate for Extensions" の目的は何ですか。
拡張機能がクラウド サービスに追加されると、必ず、これらの証明書が自動的に作成されます。 ほとんどの場合、この拡張機能は WAD 拡張機能または RDP 拡張機能ですが、マルウェア対策やログ コレクター拡張機能など、その他の拡張機能であることもあります。 これらの証明書は、拡張機能のプライベート構成を暗号化および復号化するためだけに使用されます。 有効期限の日付は確認されないため、証明書の有効期限が切れていてもかまいません。
これらの証明書を無視することができます。 証明書をクリーンアップする場合、それらの証明書すべての削除を試行することができます。 使用中の証明書を削除しようとすると、Azure からエラーがスローされます。
インスタンスに "RDP 接続" せずに証明書署名要求 (CSR) を生成する方法を教えてください。
次のガイダンス ドキュメントをご覧ください。
Microsoft Azure Web Sites (WAWS) で使用する証明書の取得
CSR は単なるテキスト ファイルです。 これは、証明書を使用する予定のマシンから作成する必要はありません。 このドキュメントは App Service 用に書かれるものですが、CSR の作成は汎用的で、Cloud Services にも適用されます。
クラウド サービス管理証明書の期限が切れました。 更新する方法を教えてください。
次の PowerShell コマンドを使って、管理証明書を更新できます。
Add-AzureAccount
Select-AzureSubscription -Current -SubscriptionName <your subscription name>
Get-AzurePublishSettingsFile
Get-AzurePublishSettingsFile は、Azure portal の [サブスクリプション]>[管理証明書] に新しい管理証明書を作成します。 新しい証明書の名前は、"<サブスクリプション名>-<今日の日付>-credentials" のようになります。
メイン TLS または SSL 証明書 (.pfx) と中間証明書 (.p7b) のインストールを自動化する方法を教えてください。
このタスクはスタートアップ スクリプト (batch/cmd/PowerShell) を使って自動化することができ、サービス定義ファイルでそのスタートアップ スクリプトを登録します。 スタートアップ スクリプトと証明書 (.p7b ファイル) の両方を、スタートアップ スクリプトの同じディレクトリのプロジェクト フォルダーに追加します。
"Microsoft Azure Service Management for MachineKey" 証明書の目的は何ですか。
この証明書は、Azure Web ロールでマシン キーを暗号化するために使用されます。 詳しくは、こちらのアドバイザリをご覧ください。
詳細については、次の記事を参照してください。
監視およびログ記録
アプリケーションの管理と監視に利用できる Azure portal の今後の Cloud Service 機能について教えてください。
リモート デスクトップ プロトコル (RDP) の新しい証明書を生成する機能が、リリースされる予定です。 代わりに、次のスクリプトを実行してもかまいません。
$cert = New-SelfSignedCertificate -DnsName yourdomain.cloudapp.net -CertStoreLocation "cert:\LocalMachine\My" -KeyLength 20 48 -KeySpec "KeyExchange"
$password = ConvertTo-SecureString -String "your-password" -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath ".\my-cert-file.pfx" -Password $password
csdef および cscfg のアップロード先に blob またはローカルを選択する機能が、リリースされる予定です。 New-AzureDeployment を使用して、各場所の値を設定できます。
インスタンス レベルでメトリックを監視する機能。 追加の監視機能は、「クラウド サービスの監視方法」で利用できます。
IIS によるログ ディレクトリへの書き込みが停止するのはなぜですか。
ログ ディレクトリに書き込むためのローカル ストレージ クォータを使い果たしました。 この問題を修正するには、次の 3 つのいずれかの操作を行います。
- IIS の診断を有効にし、診断を定期的に BLOB ストレージに移動する。
- ログ ディレクトリからログ ファイルを手動で削除する。
- ローカル リソースのクォータ制限を大きくする。
詳細については、以下のドキュメントをご覧ください。
- Azure Storage への診断データの保存と表示
- IIS Logs stop writing in Cloud Service (IIS ログがクラウド サービスで書き込みを停止する)
Cloud Services の WAD ログ記録を有効にする方法を教えてください。
Microsoft Azure Diagnostics (WAD) ログ記録は、次のオプションを使用して有効にできます。
Cloud Services の現在の WAD 設定を取得するには、Get-AzureServiceDiagnosticsExtensions PowerShell コマンドを使用できます。または、ポータルの [クラウド サービス] --> [拡張機能] ブレードにそれを表示できます。
ネットワーク構成
Azure Load Balancer のアイドル タイムアウトを設定する方法を教えてください。
サービス定義 (csdef) ファイルで、次のようにしてタイムアウトを指定できます。
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="mgVS2015Worker" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2015-04.2.6">
<WorkerRole name="WorkerRole1" vmsize="Small">
<ConfigurationSettings>
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" />
</ConfigurationSettings>
<Imports>
<Import moduleName="RemoteAccess" />
<Import moduleName="RemoteForwarder" />
</Imports>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="tcp" port="10100" idleTimeoutInMinutes="30" />
</Endpoints>
</WorkerRole>
詳細については、「New: Configurable Idle Timeout for Azure Load Balancer (Azure Load Balancer の構成可能なアイドル タイムアウト)」を参照してください。
私のクラウド サービスに静的 IP アドレスを関連付ける方法を教えてください。
静的 IP アドレスを設定するには、予約済み IP を作成する必要があります。 この予約済み IP は、新しいクラウド サービスに、または既存のデプロイに関連付けることができます。 詳細については、次のドキュメントをご覧ください。
Azure の基本的な IPS/IDS と DDoS が提供する機能にはどのようなものがありますか。
Azure では、脅威に対する防御のため、データセンターの物理サーバーに IPS/IDS を備えています。 それに加えて、お客様は、Web アプリケーション ファイアウォール、ネットワーク ファイアウォール、マルウェア対策、侵入検出/防御システム (IDS/IPS) など、Microsoft 以外のセキュリティ ソリューションを展開することができます。 詳細については、「データと資産を保護し、国際的なセキュリティ基準に準拠」をご覧ください。
Microsoft では、脅威を検出するためにサーバー、ネットワーク、アプリケーションを継続的に監視しています。 Azure の多面的な脅威管理アプローチでは、侵入の検出、分散型サービス拒否 (DDoS) 攻撃の防止、侵入テスト、行動分析、異常検出、機械学習を利用して、常に防御を強化し、リスク軽減に努めています。 Azure 向けの Microsoft マルウェア対策は、Azure Cloud Services および Virtual Machines を保護します。 お客様は、Web アプリケーション ファイアウォール、ネットワーク ファイアウォール、マルウェア対策、侵入検出/防御システム (IDS/IPS) など、Microsoft 以外のセキュリティ ソリューションを追加で展開することができます。
Cloud Services VM で HTTP/2 を有効にする方法を教えてください。
Windows 10 と Windows Server 2016 は、クライアントとサーバー側の両方で HTTP/2 に対応しています。 クライアント (ブラウザー) が、TLS 拡張機能を介して HTTP/2 をネゴシエートするトランスポート層セキュリティ (TLS) 経由で IIS サーバーに接続している場合、サーバー側で変更を加える必要はありません。 HTTP/2 の使用を指定した h2-14 ヘッダーが既定で TLS 上で送信されるため、変更を加える必要はありません。 一方、クライアントが HTTP/2 にアップグレードするために Upgrade ヘッダーを送信している場合は、サーバー側で以下の変更を行って、アップグレードが機能し、HTTP/2 接続できるようにする必要があります。
- regedit.exe を実行します。
- レジストリ キー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters を参照します。
- DuoEnabled という新しいダブルワード値を作成します。
- 値を 1 に設定します。
- サーバーを再起動します。
- [既定の Web サイト] 上の [バインド] の下に移動し、作成した自己署名証明書を使用して新しい TLS バインドを作成します。
詳細については、以下を参照してください:
- HTTP/2 on IIS (IIS 上の HTTP/2)
- ビデオ: Windows 10 の HTTP/2: ブラウザー、アプリ、Web サーバー
上記の手順は、スタートアップ タスクで自動化できます。これにより、新しい PaaS インスタンスが作成されるたびに、システム レジストリで前の変更を加えることができるようになります。 詳しくは、「クラウド サービスのスタートアップ タスクを構成して実行する方法」をご覧ください。
完了すると、次のいずれかの方法を使用して、HTTP/2 が有効かどうかを確認できます。
- IIS ログでプロトコルのバージョンを有効にして、IIS ログを確認します。 ログに HTTP/2 が表示されます。
- Internet Explorer または Microsoft Edge で F12 Developer Tool を有効にして、[ネットワーク] タブに切り替えます。ここで、プロトコルを確認できます。
詳細については、「HTTP/2 on IIS」(IIS 上の HTTP/2) を参照してください。
アクセス許可
Cloud Services のロールベースのアクセスを実装するにはどうすればよいですか。
Cloud Services は、Azure Resource Manager ベースのサービスではないため、Azure ロールベースのアクセス制御モデルをサポートしていません。
「Azure での各種ロールについて」を参照してください。
リモート デスクトップ
Microsoft 内部のエンジニアは、許可なくクラウド サービスのインスタンスにリモート デスクトップ接続できますか。
Microsoft では、所有者、またはその指名を受けた担当者からの書面 (電子メールまたはその他の書面による通信) による許可なしで、内部のエンジニアがお客様のクラウド サービスにリモート デスクトップ接続することがないように、厳格な手続きに従っています。
RDP ファイルを使ってクラウド サービス VM にリモート デスクトップ接続できません。 "認証エラーが発生しました (コード: 0x80004005)" というエラーが発生します。
このエラーは、Microsoft Entra ID に参加しているコンピューターから RDP ファイルを使った場合に発生する可能性があります。 この問題を解決するには、次の手順に従ってください。
- ダウンロードした RDP ファイルを右クリックして、 [編集] を選びます。
- ユーザー名の前にプレフィックスとして "\" を追加します。 たとえば、username の代わりに .\username を使います。
スケーリング
X 個のインスタンスを超えて拡張できません
Azure サブスクリプションには、使用できるコアの数に制限があります。 使用可能なすべてのコアを使用している場合、スケーリングは機能しません。 たとえば、コア数が 100 に制限されている場合、これは、クラウド サービスでは A1 サイズの仮想マシン インスタンスを 100 個、または A2 サイズの仮想マシン インスタンスを 50 個使用できることを意味します。
メモリ メトリックに基づく自動スケールを構成する方法を教えてください。
Cloud Services のメモリ メトリックに基づく自動スケーリングは、現在サポートされていません。
この問題を回避するには、Application Insights を使うことができます。 自動スケーリングは、メトリック ソースとして Application Insights をサポートし、"Memory" のようなゲスト メトリックに基づいてロール インスタンスの数をスケーリングできます。クラウド サービスのプロジェクト パッケージ ファイル (*.cspkg) で Application Insights を構成し、サービスで Azure Diagnostics 拡張機能を有効にしてこの機能を実装する必要があります。
Application Insights でカスタム メトリックを利用して、Cloud Services に自動スケーリングを構成する方法について詳しくは、Azure でのカスタム メトリックによる自動スケーリングの概要に関する記事をご覧ください
クラウド サービスの Application Insights に Azure Diagnostics を統合する方法について詳しくは、「Cloud Services、Virtual Machines、または Service Fabric の診断データを Application Insights に送信する」をご覧ください
Cloud Services 用に Application Insights を有効にする方法について詳しくは、「Azure Cloud Services 向けの Application Insights」をご覧ください
Cloud Services 用に Azure Diagnostics ログを有効にする方法について詳しくは、「Azure クラウド サービスと仮想マシンに対する診断を設定する」をご覧ください
ジェネリック
自分の Web サイトに "nosniff" を追加する方法を教えてください。
クライアントが MIME の種類をスニッフィングできないように、web.config ファイルに設定を追加します。
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Content-Type-Options" value="nosniff" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
これは、IIS に設定として追加することもできます。 一般的なスタートアップ タスクに関する記事を参照して、次のコマンドを使用します。
%windir%\system32\inetsrv\appcmd set config /section:httpProtocol /+customHeaders.[name='X-Content-Type-Options',value='nosniff']
IIS の Web ロールをカスタマイズする方法を教えてください。
一般的なスタートアップ タスクに関する記事にある IIS スタートアップ スクリプトを使用します。
クラウド サービスのクォータ制限とは何ですか。
サービス固有の制限のページをご覧ください。
クラウド サービス VM 上のドライブで表示される空きディスク領域がほとんどないのはなぜですか。
この動作は想定されたものであり、アプリケーションに問題が発生することはないはずです。 Azure PaaS VM の %approot% ドライブでジャーナルがオンになっているため、実質的に、ファイルが通常占有する領域の 2 倍の容量が消費されます。 ただし、この件で問題が起きないようにするには、いくつかの事柄に注意する必要があります。
%approot% ドライブのサイズは、<.cspkg のサイズ + ジャーナルの最大サイズ + 空き領域のマージン> の計算値と、1.5 GB のうち、どちらか大きい方になります。 VM のサイズは、この計算に影響を与えません。 (VM のサイズは、一時的な C: ドライブのサイズにのみ影響を与えます。)
%approot% ドライブへの書き込みはサポートされていません。 Azure VM に対して書き込む場合は、一時的な LocalStorage リソース (または、BLOB ストレージ、Azure Files など、その他のオプション) でこれを行う必要があります。 したがって、%approot% フォルダー上の空き領域の量は重要ではありません。 アプリケーションで %approot% ドライブに対して書き込んでいるかどうか不明の場合は、いつでも、サービスを数日間実行し、"実行前" と "実行後" のサイズを比較することができます。
Azure は、%approot% ドライブに対して何も書き込みません。 .cspkg
からバーチャル ハード ディスク (VHD) が作成され、Azure VM にマウントされた後、このドライブに書き込む可能性があるのはアプリケーションのみです。
ジャーナルの設定は構成できないため、オフにすることはできません。
Cloud Services にマルウェア対策拡張機能を自動的に追加する方法を教えてください。
スタートアップ タスクで PowerShell スクリプトを使用してマルウェア対策拡張機能を有効にすることができます。 これを実装するには、次の記事の手順に従ってください。
マルウェア対策デプロイ シナリオの詳細とポータルから有効にする方法については、「マルウェア対策のデプロイ シナリオ」を参照してください。
Cloud Services で Server Name Indication (SNI) を有効にする方法を教えてください。
Cloud Services で SNI を有効にするには、次のいずれかの方法を使用します。
方法 1: PowerShell を使用する
SNI バインドは、クラウド サービス ロール インスタンスのスタートアップ タスクで、以下の PowerShell コマンドレット New-WebBinding を使って構成できます。
New-WebBinding -Name $WebsiteName -Protocol "https" -Port 443 -IPAddress $IPAddress -HostHeader $HostHeader -SslFlags $sslFlags
こちらの説明のように、$sslFlags には次の値のいずれかを指定できます。
Value | 意味 |
---|---|
0 | SNI なし |
1 | SNI が有効 |
2 | 中央証明書ストアを使用する SNI 以外のバインド |
3 | 中央証明書ストアを使用する SNI バインド |
方法 2: コードを使用する
SNI バインドは、こちらのブログ投稿のように、ロール スタートアップでコードを使用して構成することもできます。
//<code snip>
var serverManager = new ServerManager();
var site = serverManager.Sites[0];
var binding = site.Bindings.Add(":443:www.test1.com", newCert.GetCertHash(), "My");
binding.SetAttributeValue("sslFlags", 1); //enables the SNI
serverManager.CommitChanges();
//</code snip>
SNI バインドを有効にするには、前述のいずれかのアプローチを使用して、まずスタートアップ タスクまたはコードを使用して、各ホスト名に対応する証明書 (*.pfx) をロール インスタンスにインストールする必要があります。
Azure Cloud Service にタグを追加する方法を教えてください。
クラウド サービスはクラシック リソースです。 Azure Resource Manager で作成したリソースだけがタグに対応しています。 クラウド サービスなど、クラシック リソースにタグを適用することはできません。
Azure Portal に使っているクラウド サービスの SDK のバージョンが表示されません。 表示する方法を教えてください。
現在、Azure portal にこの機能を組み込む作業を行っています。 その間は、次の PowerShell コマンドを使って SDK のバージョンを取得できます。
Get-AzureService -ServiceName "<Cloud Service name>" | Get-AzureDeployment | Where-Object -Property SdkVersion -NE -Value "" | select ServiceName,SdkVersion,OSVersion,Slot
数か月間、クラウド サービスをシャットダウンしようと思います。 IP アドレスを失うことなくクラウド サービスの料金を減らす方法を教えてください。
既にデプロイ済みのクラウド サービスについては、コンピューティングとストレージの使用量に対して課金されます。 そのため、Azure VM をシャットダウンした場合でも、ストレージについては引き続き料金がかかります。
サービスの IP アドレスを失うことがなく請求額を減らすには次のような方法があります。
- デプロイを削除する前に、IP アドレスを予約します。 Azure では、この IP アドレスに対してのみ課金されます。 IP アドレスの課金について詳しくは、「IP アドレスの価格」をご覧ください。
- デプロイを削除します。 後で使えるように、xxx.cloudapp.net は削除しないでください。
- サブスクリプションで予約したものと同じ予約 IP を使ってクラウド サービスを再デプロイする場合、「Reserved IP addresses for Cloud Services and Virtual Machines」(クラウド サービスおよび仮想マシンに対する予約済み IP アドレス) をご覧ください。