パスワードは無期限にすべき/「クラウドにパスワードを置くのは危険」は二重に間違い

過去から何度も言われていることですが、パスワードは無期限に設定したほうがセキュリティ対策上好ましいです。(反対派も根強く存在しますが)

先日、Office 365の管理者画面に久しぶりにアクセスしたところ、推奨事項として簡単にパスワードを無期限に設定できるようになっていました。感動してTwitterに投稿した所、3000回近くリツイート、お気に入り登録がなされました。

 

個人的には過去最高のTwitter上での反応でした。それだけパスワードの定期変更が設定され、それに不満を持っている人が多いということなのだと思います。

 

ただ、画像のメッセージ上では「ユーザーアカウントをクラウドで管理している場合は、パスワードを無期限に設定することをお勧めします。」という表現になっています。

「これを推奨する理由の詳細を表示」のリンク先は下記のアドレスをなっており、そこではオンプレミス、クラウドにかかわらずパスワードの定期変更は良くないこととして解説されています。

それでも、あえてOffice 365上の管理画面にて「クラウドで管理している場合は」という書き方をしているのかと言うと・・・、そこにはAzure Active Direcotryが備えているセキュリティ対策機能の存在があるからだろうと思いますし、ADFSを使わずにAzure Active Directory上でユーザー認証を可能な状態にしてほしいという思想が表現されていると思います。

以下は私の推測や考えも混じっていますので全部そのままうのみにはしないでいただきたいのですが…

まず、Azure Active Directoryの開発者はクラウド上でユーザーを管理する事、つまりパスワードハッシュもAzure Active Directory上まで同期する構成を強く推奨しています。(これは本当です。直接聞いてます。)

そうすることによって、脆弱なパスワードを設定しているユーザーは一発で判別できますし、怪しい挙動をしているユーザーをAzure Active Directory側で検知できます。

オンプレミスのActive Directoryで適当な管理をしている状態よりもAzure Active Directory上で管理したほうが遥かにセキュアにできるんです。

わたしはこれは自明なことだと思います。だって、Azure Active Directoryからユーザーデータベースを引っこ抜くのと、オンプレミスのActive Directoryからデータベースを引っこ抜くなり、DCのイメージを盗み出すなりするのと、どちらが簡単でしょうか?圧倒的に後者の方が簡単ですよね。というか、前者はできる気がしないです。

よく「クラウドにパスワードを置くのはセキュリティ的に危ない。だからADFSをつかってオンプレミスにパスワードを置く。」という言い方をする人がいますよね。これ、二重の意味で間違っています。

まず、そもそもパスワードってどこにも置かれていません。パスワードがそのまま生で暗号化もハッシュ化もされずに置かれているなんてとんでもなく間違った設計です。危険なんてもんじゃなく、ひどすぎます。

たしかに、「パスワードを忘れた」ボタンをおしたらメールで生のパスワードを教えてくれるWebサービスは存在します。残念ながら。ですが、それはあまりにもひどすぎる実装なのであって、そもそもそんなサービスをつかってはいけないと言っても過言じゃないくらいのひどい実装です。(だから、パスワードは全部違うものにしましょうね。)

パスワードはそのまま生で保存しては大変に危険なので、そのままは保存しないのが鉄則なんです。パスワードを生で保存しなくても正しいパスワードを入力したことを調べる術というのはきちんと存在していて、パスワードのハッシュ値を保存しておき、ユーザー認証時のパスワード入力に関してもそのハッシュ値を比較し、同一であれば正しいパスワードが入力されたということが判断できます。あるいはそもそもパスワードを必要としない実装にする方法もありますね。

なので、そもそも「パスワード」そのものはどこにも置かれていないのです。頭の中にあるだけです。その辺の紙に書かないでくださいね。(パスワード管理ソフトに可逆変換状態で保存されるのはありだと思います。)

そして、ADFSを使ってオンプレミスのADで認証を行った場合は、セキュリティ的にAzure Active Direcotryで認証させるよりもセキュリティ的に強固であるという主張の根拠が私には全くわからないです。

たとえば、外部からのアクセスは全部ブロックしてるんです…というのでも、それAzure Active Directoryでもできますしね。マイクロソフトが物凄い数の世界中の組織のIDを束ねて超厳格に管理してくれているAzure Active Directoryと、自前で構築しているADFS + Active Directoryとを比較して「うちの組織の認証システムはMicrosoftよりもイケてる!」と言えるって凄い自信だなと思います。これって製品コードだけではなくて、運用面等まですべて含めての話ですからね。

それで、Azure Active Directoryを前提とした時に「パスワードは無期限に設定したほうがよい」というのは真だと思います。

オンプレミスのADFS + Active Directoryに関しては「やられてるんだけど気がついてません。」という状況の時にパスワード変更を行ってその結果、セキュリティ対策的に意味があるものになる…という可能性は無いことは無い(そもそも前提からおかしいんだけど)という感じには思うわけです。

そもそもは、パスワードを十分に長くて複雑なものにしておけば良いわけです。そして、その上でパスワードが盗まれても大丈夫なように多要素認証にもしておくべきです。さらにさらに、ユーザーの挙動をみて、怪しいものはブロックもできるようにしておけばさらに安心ですし、ルールを守れず脆弱なパスワードを付けてしまう人も一定数いるでしょうからそれは設定できないようにブロックしたり、設定されてしまっているものは洗い出せるようにすべきです。冗長化、負荷分散もしっかりとしていないといけませんね。インターネットに公開されている認証の窓口なので、攻撃も沢山くるでしょう、それも検知してブロックしなければですね。DDos攻撃だってくるでしょう、それも対処可能でなければいけません。Azure Active Directory(+ Premium P1, P2)ならこれ全部やってくれます。この前提の中では当たり前にパスワードは無期限にして、ユーザーに正しく複雑なパスワードを設定してもらうのが良いですね。

クラウドにパスワードを置くのは危ないからADFS構成、パスワードは定期的に変更!…とやっている組織があったらそれは残念ながら勉強不足だと思います。

さらに、ADFSでユーザーエージェントベースでアクセスコントロールを判別するクレームルール書いてたりとかしてるともう頭がクラクラします…。(このパターン多いんですけどね…)

…。

…。

という認識だったのですが、今回TwitterでPマークをとりたいならパスワードの定期変更を実装しないといけない現実があるということを教えてもらいました。

 

全部わかった上でパスワード変更ポリシーを強制せざるを得ない管理者の方もいるのですね。世の中難しいですね…。

(2018/03/06追記)

マイクロソフトよりパスワード管理に関してのベストプラクティスのブログ記事が出ていましたので紹介します。具体的にどうしたら良いのかがわかりやすく書かれています。

その他参考記事も並べておきます。

子供3人。家族優先。都内SIer勤務。Windows系中心のインフラよりの何でも屋。脱原発。 Microsoft MVP for Cloud and Datacenter Management.

コメントを残す

メールアドレスが公開されることはありません。