@matsumotory さんからお誘いいただいて、登壇した。

テーマは「インフラとセキュリティのこれから」ということで、コンテナや Kubernetes のセキュリティについて、DevSecOps の進め方などについて話した。

当日の様子は YouTube に上がっているので、どうぞ。また、使ったコマンドなどは gist にあります。

Infra Study の過去回を見るに、参加者層が幅広い印象を受けていたので、広く浅くセキュリティについて話そうと思った。
Docker などによって Linux コンテナは広く普及し、Linux コンテナの仕組みを理解している人も増える一方で、あまり Linux コンテナ自体(イメージではなく)のセキュリティについて触れている人はそう多くないと感じていた。

また、Kubernetes のセキュリティといえば PodSecurityPolicy 周りについて触れられることが多いが、そもそも Linux コンテナのセキュリティを知らなければ、これを適切に設定することは難しいだろう。加えて Kubernetes の Attack Surfaces やマネージド環境でのセキュリティについて日本語で触れられている記事も多くないので、そのあたりの啓蒙をしようと思い、これらについて話すことにした。

内容としては以前セキュリティ・ミニキャンプなどで行ったコンテナセキュリティの講義からいくつかピックアップしたものに加え、Kubernetes セキュリティについて付け加えた。

…とスライドの内容について書こうと思ったけど、動画を見てもらう方がいいので、ここでは割愛で。

Twitter の様子を見る限り、プラスな反応が多くてよかったと思う(Infra Study の参加者が優しいというのもあるが…)。
自分は質疑応答が本当に苦手で、想定質問をかなり考えて望んだのだけど、思った以上に DevSecOps や組織でのセキュリティ文化についての質問が多くて、想定していた質問は一個もこなかったw

slido への質問

当日時間の関係で答えられなかった質問があるので、ここでいくつか回答しようと思う。

コンテナでイミュータブルだぜ、と言いつつyum updateとかapt upgradeしているかと思うのですが、イミュータブルを目指す環境とアップデートの頻度やライフサイクルの兼ね合いはどのように考えられていますか?

コンテナで apt upgrade などをしたことがない…
アップデートの頻度は自由に決めていいと思いますが、脆弱性に関してはリスクに応じてすぐに対応する必要があると思います。
イメージをスキャンして、アップデートもしくはパッチを適用して、イメージを再構築するパイプラインやジョブを作って自動化するのが「イミュータブルを目指す環境」には必要だと考えています。
加えるとコンテナ内で root で実行することはベストプラクティスではないので、そこも禁止するべきだと思っています。

脆弱性が頻繁に出るというのは、そもそも不要なパッケージが含まれていたりするケースもあるので、つまるところベストプラクティスを実践していくと、次第にセキュアになっていくと思います。

PaaSのセキュリティについてお聞きしたいです。

ざっくりしているのでちょっと答えにくいですが… これも責任共有モデルに基づいて、どこまでは自分たちが守らないといけないのか判断することが必要です。
一般的に PaaS はミドルウェアやOSの下は面倒をみてくれますが、その上のアプリケーションなどは自分たちで守らなければいけません。また、PCI DSS のように要件がある場合は、項目がプロパイダ側で準拠しているかなどを確認、検証して選定する必要があると思います。

セキュリティーをどうコードとして落とし込めるか、気になります。

質問者さんの「コードとして落とし込む」がどのレベルかわかりませんが、自分が実践しているのはセキュリティのテストを含めることです1
インフラであれば inspec のようなツールを導入することで、意図した設定がされているかなどを確認できます。他にも tfsec などの静的解析ツールを導入することも、「コードとして落とし込む」うちに入ると思っています。

今後オンプレ(ハイパーコンバージド含む)とクラウドのどちらが優位になるか?

どっちが良い/悪いという話ではないですが、自分たちでセキュリティの面倒を見る領域が少なくなるクラウドの方が選択はされやすいだろうと思います。
コストや組織としての技術力次第かなと。

event