見出し画像

クラウド基盤のセキュリティ設計について

世界的に外部攻撃による情報流出内部要因による流出は5割ずつと言われています。日本だけに限定すれば内部要因が7割です。

だから内部をきっちり設計するのが大事。権限付与を必要最小限にして操作ログもとって監視もする。ゼロトラストがバズキーワードになったのもこの辺りが原因です。
――それって本当に?実際にはそんなに簡単じゃないよね?

セキュリティに関する疑問やあれこれをインフラエンジニア観点で書いて、最先端のCSPM製品の概要説明まで書くのが今日のゴールです。指摘事項がある方は根拠を添えて優しくお願いします。

ウイルス対策ソフトの時代は終わった

おそらく今もなんとなくウイルス対策ソフトを使ってる企業は残ってるんじゃないかと思います。
昔はOS自体がセキュリティ的に頼りなかったので、ウイルス対策ソフトが必要な時代もありました。今は購入したPCにMcAfeeなどが入ってたら即時アンインストールする時代です。どうしてもサードパーティー製品は偽陽性(正規の製品を誤ってマルウェアとして検出)とかの品質で不利です。OSと一体化して開発した方が有利です。
それでも日本はウイルス対策ソフト信仰がまだ残っているので、ウイルスバスターなどアジアの製品は売れています。
サーバにおいては、外部公開されているWindowsサーバなんかはまだウイルス対策ソフトを導入する意味があると思います。内部の奥深くにあるDBサーバなんかでファイルの書き換えが多いサーバは、導入の意味が薄いです。今日言いたいのはクラウドのことなので、この辺りのオンプレ的話はこのくらいにして。

ウイルス対策ソフト以外に何をすればいいの?

クラウド基盤で考えると、最適な設計をしてクラウドのマネージドサービスを使い倒せば何もいらないと思います。
が、より強固により管理しやすくするために、EDRとか高機能なWAFとかCASB(Cloud Access Security Broker:キャスビー)とかSASE(Secure Access Service Edge:サシー)とかのモダンな製品を入れることが考えられます。
AWSでいえばCloudTrailなんかで変更履歴はすべて記録されています。今のトレンドは外部からすべての攻撃を遮断するよりも、問題が起きた場合に素早く検知して対応することを重視します。おかしな変更を検出することが、マルウェア検知と同等以上に大事なのです。

たとえばSOC製品を導入している環境で、標的型攻撃が行われて不幸にもランサムウェアに感染したとします。
ランサムウェアというのは人がいないところで悪さをします。可能な限りすべてのサーバやパソコンに感染を広げてファイルを片っ端から盗み出した後に、片っ端から暗号化します。この一連の流れはそこそこ時間がかかるので、人がいない週末を狙って攻撃されることが多いのが特徴です。その反面、振る舞い検知で気づくことは難しくありません。が、気づいてもブロックできる仕組みがあるかは別です。サーバがマルウェアに感染疑いがあっても、自動的にNWから隔離する設定を入れるのはあまりに業務リスクが大きく、検知の仕組みがあっても人間が判断する設計になっていることが多いです。また、脆弱性を狙って来たり、ウイルス対策ソフトの動作を止めてしまうものもあって、守りが甘いとダメです。
SOC製品で監視をしていると、仮にマルウェアスキャンをすり抜けても間違いなく振る舞い検知で気づきます。アナリストが監視しているので、問題のある箇所を隔離して切り離せます(事前にルールを作って合意しておくとスムーズです)。この手の攻撃は暗号化される前に気づけば復旧は楽です。

クラウドセキュリティ設計をするのに必要なスキルは?

やりたいことによって、複数の種類のスペシャリストが必要です。
SOCアナリストは分析のスペシャリストなので、予算があれば巻き込みたい存在です。基盤の理解は甘めな傾向にあります。
基盤エンジニアはセキュアな基盤設計をするために必要です。クラウドエンジニアと呼ばれる人がマッチします。
セキュリティ製品エンジニアも重要です。製品を使いこなすのが割と難しく、検知したリスクを適切に対処するのは本当大変。
これらを全部できる人はセキュリティトップベンダーにしかいません。

個人的に問題を感じてるのは、いわゆるセキュリティエンジニアと呼ばれる人は「ネットワーク」と何らかの「セキュリティ」のスペシャリストであるケースがほとんどであることです。やはり今も昔もセキュリティとネットワークは密接した技術です。ネットワークを制する者が勝つのです。
ここに落とし穴があります。

クラウド基盤でいえばIaaSまではオンプレと同じなので昔懐かしいレガシーのスキルで誰でも設計できます。IaaS以外を設計するにはネットワークだけでは不十分です。
たとえばコンテナ周りを理解するには仮想化基盤の理解がないと無理なので、サーバエンジニア寄りの知識が求められます。
コンテナの場合は、まずコンテナを読み取り専用で稼働させることを第一に検討すべきです。そうすれば気にするのは稼働前のセキュリティに集中できます。具体的にはイメージファイルをスキャンして脆弱性がなければいいのです。これも、OSイメージから仮想マシンを作ってきたインフラエンジニアには容易に理解できる世界ですが、そのバックボーンがない相手には説明に骨が折れます。
難しい話ですがもうちょっと進めます。
イメージとコンテナそのものがセキュアなら十分かといえば、そうとも言い切れません。ランタイムの脆弱性でコンテナが乗っ取られる例もあるので、厳密に対応するならランタイムもスキャンすべきです。
ランタイムとは何か。雑に一言で説明すると「イメージからコンテナを作るためのプロセス」です。このレベルの話になると、セキュリティベンダーでもほとんど理解できてる人はいません。私も浅い知識しかありません。
しかし、ランタイムの脆弱性をスキャンする製品は結構多いです。ランタイムの脆弱性からコンテナを乗っ取られる例もあるので、無視できません。セキュリティに関わるなら、何から何を守るべきなのかしっかり理解しましょう。

私はコンテナ周りを触るエンジニアには、遠回りでもハイパーバイザー型の仮想化の説明をしてコンテナ型仮想化の説明をして、違いを理解してもらってからアサインしてもらってます。
サーバエンジニアにとっても学習コストが高い基盤なので、コンテナはセキュリティを考えるのは大変です。
仮想化基盤の知見がないエンジニアはさらに大変だと思います。
別の観点も必要だよって意見がありましたら、優しく教えてください。

CSPM製品とは

クラウド基盤そのものが結構難しい。
「クラウドはちゃんと設計すれば安価でセキュアな基盤が簡単に作れる」――その通りなんだけど、それってそんなに簡単じゃありません。

たとえばS3ひとつ作るのにも、間違ってインターネットに公開設定してしまう人はいなくなりません。
巨大プロジェクトなら、S3作る専任者に依頼するフローを用意できるでしょうが、流れ作業にすると人が育ちません。
これはジレンマです。人も育てたいし、安全に運用したい。しかしあなたのプロジェクトにもクラウド基盤に不慣れなエンジニアはいませんか?誤った設定が公開されるリスクはありませんか?

そこで出てくるのがCSPM(Cloud Security Posture Management : クラウドセキュリティ ポスチュア マネジメント)です。
この製品を導入してクラウド基盤の読み取り専用権限を付与すると、基盤全体を監視やスキャンして、不適切な設定を見つけてアラート通知してくれます。
もし誤ってS3を外部公開してしまったら、すぐに検知して修正方法をメール連絡します。問題が修正されたら自動で課題をクローズしてくれる製品もあります。

これがまた痒い所に手が届く製品で、サーバレスやコンテナも全部見てくれます。今までIaaSにEDRをインストールしてたのがなんだったの?ってくらい広範囲に色々見てくれます。
しかし、日本で導入事例が少ないせいで日本語に対応してる製品はほとんどありません。品質もまだまだ低いので運用コストもそれなりにかかります。ぶっちゃけ難しいです。正直シニアエンジニアをこんな運用に入れるのもったいないし、セキュリティ製品ごときに手厚い体制を用意したくない。

そうなると有償でTAM(テクニカルアカウントマネージャ)のサポートもつけませんかと提案されます。どこのベンダーでも用意があると思います。
「TAMって高いんですよねぇ」
「そうですね。うちでは〇百万です」
こういう会話をして盛り上がった後に「佐々木さんのような詳しい人にパートナーになってほしい。製品もお安くしますよ」と口説かれたのはやっぱり誰も詳しい人いない世界なんだろうなって感想でした。
もし将来パートナーになったら、各社製品の比較記事を書きます。

まとめ

だいぶ散らかってきたのでまとめに入ります。
セキュリティ設計もまず目的を確認して、何から何を守りたいのか確認することから始まります。(他の設計と同じです)

その際に会社のポリシーと交渉して弾力を持たせることも大事です。「認証回数を増やしてセキュアにします、不便だけど我慢してね」っていうのを現場目線だと丸のみしたくない。
その話し合いをするなら、何のためにそれをするのか、徹底的に掘り下げて必要なことだけを盛り込むのが理想です。掘り下げれば、参照アカウントなら認証を一段緩くしても問題ないかもしれない。説明できないことはお気持ちとして受け取って、丁寧に破棄しましょう。無駄なセキュリティは運用も甘くなって穴になったりします。多層防御だからと一つ一つを甘くすると崩壊します。
かといって矛盾するようだけど一つ一つを手をかけすぎてもダメなんです。IAMとか細かくやれば無限に厳しくできますが、ロールを作りまくって細かくしすぎても縛りゲーのように設計難易度が上がるばかりです。
やはり、振る舞い検知など含めた複数の視点からトータルでセキュアにする視点が大事だと思います。

僕も現場のやり方を直したい部分は無限にあるし、完璧なセキュリティを作ることは永遠に不可能です。

こういう難しい世界なので、優秀なCSPM製品なんかで楽に管理したいなぁというのが個人的な気持ちです。



この記事が気に入ったらサポートをしてみませんか?