ひとつのドメインでプロトコルによって本番環境/テスト環境を切り替える手法はありか
ちょっと素人の僕にはわからないので玄人の皆さんにアンケートに答えていただきたいのですが https :// https://t.co/6EqviEPdFv で本番運用しているウェブサイトのテスト環境に http :// https://t.co/6EqviEPdFv でアクセスできるようにするのって一般的な手法なんですか?
— risou (@risou) November 26, 2019
先日、上記のツイートでアンケートをとった。
実は勤め先の社内でも「これってどうなんですかね」と大半が Web/App エンジニアで構成されている Slack 上のチャネルで質問をした。
ちなみにそのチャネルでは回答率約50%で、全員が「なし」だった。
そもそもなぜこのような問いかけをしたかというと、発端は以下のツイートである。
現在Twitterにて「http」で始まるセンクロWebサイトの情報が拡散されていることを確認しております。本来の公式サイトは「https」で始まるURLとなっており、「http」で始まるURLはお客様向けの正式なサイトではなく、掲載されている情報はテスト環境の内容となります。#センクロ
— 覇穹 封神演義 〜センカイクロニクル〜【公式】 (@houshinengi_sc) November 25, 2019
このツイートを見たとき、「どうしてそんな下手な嘘をつくんだろう」と思った。
嘘だと思ったのは、ひとつのドメインを https と http でそれぞれ本番環境、テスト環境につながるようにしておく、というやり方は明らかに良くない手法だ、と考えたからだ。
そして、このツイートの裏には「本当は隠しておきたい別の事柄があるのではないか」と考えたのだ。
しかし、軽く調べてみると、どうやら本当にそのような設定をしていたタイミングがあったようで、 Google にはテスト環境と思われるページのキャッシュが残っている。
(見た目でテスト環境と容易に判断できるものではなかったが、ページのタイトルが明らかに本番向けではない文字列だった)
となると嘘と判断したのは僕の早計で、これはもしやハンロンの剃刀なのでは、という可能性が思い浮かんだ。
そしてもうひとつ、そもそも「明らかに良くない手法」という僕の判断自体が間違っている可能性も思い浮かんだ。
そこで最初のツイートをした、というわけだ。
僕の周辺にいる人たちの大半はこの手法を良いとは思っていないようだ。
僕自身、改めて自分がなぜ良くないと判断したのかを整理しておく。
想定する状況は以下の通り。
- あるドメイン(ここでは
example.com
とする)を所有している https://example.com
にアクセスしたら、本番環境につながるように設定するhttp://example.com
にアクセスしたら、 SSL にリダイレクトする- テスト環境で動作を確認したい時のみ、
http://example.com
にアクセスしたら、テスト環境につながるように設定する
僕がこのやり方は良くない、と考えるのは以下の点だ。
- アクセスするタイミングによって
http://example.com
にアクセスしたときの接続先が異なる- 状況を知らない閲覧者に混乱を招く
- テスト環境に public にアクセスできる
- テスト環境には社内ネットワークからのみアクセスできるのが望ましい
- テスト環境が検索エンジンにキャッシュされる
noindex
なり robots.txt なりでキャッシュされないようにしておく必要がある- テスト環境のみ設定が必要になるので
noindex
などでは本番とコードを同一にできないデメリットがある - robots.txt で回避するのが良さそう
- (ちなみに、これを記載しているのは実際にテスト環境と思われるページのキャッシュが Google に残っているため)
- テスト環境のみ設定が必要になるので
- そもそもこれも社内ネットワークからしかアクセスできないようにしておけば解決する
ではどうするのが良いか、というと以下のような方法が考えられる。
- テスト環境用に別ドメインを用意する
- テスト環境へのアクセスを制限する
当然、これらの方法を取れないケースもある。
たとえば別途ドメインを取得する予算がなかったり、社外の関係者にテスト環境を見てもらうために不特定の IP から接続できる必要があったり。
リスクや回避方法を理解した上で仕方なくこのような手法をとっているのか、何も考えずにやっているのかで内部の状況は大きく異なるように思える。
一方で外からはその違いはわからないし、少々の制約があろうがこれは回避した方が良いリスクだと僕は思う。
とはいえ、僕の考えが正しいという確信を持っているわけでもない。
(やや誇張した表現ではあるが)最初のツイートにあるように、僕はこのあたりの専門家ではない。
個人的には専門家の意見を聞いてみたいが、専門家に問題ないと言われても、僕自身は選択の余地があればリスクを回避と思う。