状況
App Service のアプリから Azure SQL Database に接続できない。アプリのログには「Cannot open server 'sql-prod' requested by the login. Client with IP address '20.x.x.x' is not allowed to access the server.」と出ている。
原因を調べる順番として、最も適切なものは?
- A接続文字列のユーザー名とパスワード
- BSQL Database を上位の価格レベルに変更する
- C接続文字列のサーバー名
- Dサーバーのファイアウォール規則に、エラー中の IP からの許可があるか
正答
- C → A → D → B
- A → C → D → B
- B → D → A → C
- D → A → C → B
解説
エラーは sql-prod サーバー自身が返しており、送信元の IP が許可されていないと言っている。名前解決とサーバー名は正しく、サーバーまで届いていると分かるので C は後回し。Azure SQL はログインを判定する前にファイアウォールで接続元を確かめるため、ユーザー名とパスワード(A)はまだ判定されておらず、ファイアウォール(D)を直した後に確かめる。価格レベル(B)は接続の可否と関係なく、料金が上がるだけなので最後。直すときに 0.0.0.0〜255.255.255.255 の規則を足すと全世界に開くことになる。「Azure サービスおよびリソースにこのサーバーへのアクセスを許可する」も他の顧客の Azure リソースからの接続まで含むので、アプリの送信 IP だけを許可するか、VNet 統合とプライベートエンドポイントで閉じた経路にする。
この問題を含む Azure のテストを制限時間つきで解く
Azureクイズへ