@esasahara
Cloud Security Alliance
Application Containers and Microservices WG
アプリケーションコンテナ/マイクロサービスの
セキュリティ概説
2
クラウドセキュリティアライアンス
アプリケーションコンテナ/マイクロサービスWGのご紹介
[目的]
セキュアなアプリケーションコンテナおよびマイクロサービス利用の
ためのガイダンスやベストプラクティスを発行する
アプリケーションコンテナおよびマイクロサービスのセキュリティに
関する啓発活動を行う
[WGリーダー]
Anil Karmel(NIST SP 800-180(Draft) 筆頭著者)
Andrew Wild(QTS Data Centers・CISO)
3
クラウドセキュリティアライアンス
アプリケーションコンテナ/マイクロサービスWGの
作成ドキュメント例
“Challenges in Securing Application
Containers”(2019年7月発行予定)
“Best Practices for Implementing a
Secure Microservices Architecture”
(2019年7月発行予定)
“A Unified Standard for the
Microservices Architecture”(作成中)
4
AGENDA
• 1. 「Fintech」事例に学ぶアプリケーションコンテナ/
マイクロサービス
• 2. アプリケーションコンテナのセキュリティ脅威と
インフラセキュリティ
• 3. マイクロサービスのセキュリティ脅威と
APIセキュリティ
• 4. 主要クラウドサービスのシフトレフト支援策
• 5. Q&A
5
AGENDA
• 1. 「Fintech」事例に学ぶアプリケーションコンテナ/
マイクロサービス
6
クラウドからアプリケーションコンテナ、マイクロサービスへの
移行
APIを軸とする自律サービスの疎結合型アーキテクチャへ
IaaS
PaaS
SaaS
OS
ミドル
ウェア
アプリ
ケー
ション
ミドル
ウェア
アプリ
ケー
ション
アプリケーションコンテナ
コンテナ管理
ソフトウェア
APIゲートウェイ
UI/
UX
UI/
UX
UI/
UX
UI/
UX
処理A
処理B 処理C
データ
データ データ
マイクロサービスクラウドサービス
出典:ヘルスケアクラウド研究会(2016年1月)
7
コンテナ/マイクロサービスの定義に関するガイドライン
• 米国立標準技術研究所(NIST) 「SP 800-180(Draft):
NIST Definition of Microservices, Application
Containers and System Virtual Machines」
(2016年2月)
• アプリケーションコンテナ:
共有OS上で稼働するアプリケーションまたはそのコンポーネントとして
パッケージ化し、稼働するように設計された構成物
• マイクロサービス:
アプリケーション・コンポーネントのアーキテクチャを、疎結合のパターンに
分解した結果生まれる基本的要素であり、標準的な通信プロトコルや
明確に定義された API を利用して相互に通信する自己充足型サービス
を構成し、いかなるベンダー、製品、技術からも独立している
8
(事例)中国の銀聯(UnionPay)をサポートする
Kubernetes - Xin Zhang & Deyuan Deng
KubeCon + CloudNativeCon Europe(2018年5月2-4日)
CNCF [Cloud Native Computing Foundation]
(https://www.youtube.com/watch?v=OS5DKWffn9s)
9
コンテナサービスの提供するビジネス機能
• ウォレット
• クイックペイ
• ユーザー認証
出典:“Kubernetes on Supporting $8 Trillion Card Payments in China - Xin Zhang & Deyuan
Deng“, KubeCon + CloudNativeCon Europe(2018年5月2-4日)
10
コンテナサービスの提供する技術機能
• OpenStack(マイクロサービスアーキテクチャを採用)の認証機能を担う
keystoneと連携したシングルサインオン(SSO)
• マルチテナンシー
• マルチ同期型イメージ・レジストリを含む高可用性(HA)
• マルチネットワーキング・プレーン
• 構成可能な静的IP
• よりよいストレージ管理(オンライン・スケーリング、ディスク分離)
• OpenStackとの統合
• 豊富なPaaS機能 など
出典:“Kubernetes on Supporting $8 Trillion Card Payments in China - Xin Zhang & Deyuan
Deng“, KubeCon + CloudNativeCon Europe(2018年5月2-4日)
11
コンテナサービスのアウトプット
• コードレビュー、リリース、分岐、バージョニング、ネーミングの管理
• 54のコード・レポジトリ
• 7つの環境向けの同期とオンライン・アップグレードのプロセスおよびツール
• マイクロサービスのコンサルティングおよび分割
• 包括的なテスト報告書
• CI/CD(継続的インテグレーション/継続的デプロイ)パイプライン
およびプラクティス
• 様々な文書:ユーザーガイド、管理者ガイド、インシデントプレイブック、
報告書など
出典:“Kubernetes on Supporting $8 Trillion Card Payments in China - Xin Zhang & Deyuan
Deng“, KubeCon + CloudNativeCon Europe(2018年5月2-4日)
12
コンテナサービスのアーキテクチャ
出典:“Kubernetes
on Supporting $8
Trillion Card
Payments in
China - Xin Zhang
& Deyuan Deng“,
KubeCon + Cloud
NativeCon
Europe(2018年5月
2-4日)
13
コンテナサービスのシングルサインオン(SSO)
• 要件
• 一度ログインしたら、KubernetesとOpenStackの間のどこでも
使える
• 既存の環境
• OAシステム:組織と従業員の情報
• IDサービス(SSOサーバー):従業員IDとパスワード
• Keystone:IDサービスと統合し、OAから毎日(深夜)情報を
引き出す
出典:“Kubernetes on Supporting $8 Trillion Card Payments in China - Xin Zhang & Deyuan
Deng“, KubeCon + CloudNativeCon Europe(2018年5月2-4日)
14
SSOのワークフロー
出典:“Kubernetes on Supporting $8 Trillion Card Payments in China - Xin Zhang & Deyuan
Deng“, KubeCon + CloudNativeCon Europe(2018年5月2-4日)
15
テナントの概念
• システム管理者
• プラットフォーム全体を管理する
• (異なるクラスターの周辺にある)リソースを、異なるリソースに割当てる
• ロールを異なるユーザーに割当てる(例.テナント管理者など)
• テナント管理者
• 単一のテナントを管理する
• ユーザーグループを追加/削除する
• グループごとに、リソースの許可を割当てる
• グループ/チームとユーザー
• グループ/チームがリソースの許可を保持する
• 所属するグループからユーザーが許可を引き継ぐ
出典:“Kubernetes on Supporting $8 Trillion Card Payments in China - Xin Zhang & Deyuan
Deng“, KubeCon + CloudNativeCon Europe(2018年5月2-4日)
16
テナントの全体イメージ
出典:“Kubernetes on Supporting $8 Trillion Card Payments in China
- Xin Zhang & Deyuan Deng“, KubeCon + CloudNativeCon Europe
(2018年5月2-4日)
17
ネットワーク
• 要件
• Podは、NATではなく、真のIPを持つべきである
• 構成可能なトラフィックシェイピングとテナントに渡る分離
• マルチプル・ネットワーク・プレーン(管理、制御、ビジネス、ストレージ)
• 修正したKuryr-kubernetesに基づく
• マルチテナントをサポートする
• GBP(Group Based Policy)をサポートする
• コンポーネント
• Kubernetes Controller
• OpenStack Neutronモデルに翻訳する
• Annotationを介してCNIドライバーに情報を渡す
• CNI(Container Network Interface)ドライバー
• Kubernetes PodをNeutron Portにバインドする
出典:“Kubernetes on Supporting $8 Trillion Card Payments in China
- Xin Zhang & Deyuan Deng“, KubeCon + CloudNativeCon Europe(2018年5月2-4日)
18
ネットワーク – マルチプレーン
出典:“Kubernetes on Supporting $8 Trillion Card Payments in China
- Xin Zhang & Deyuan Deng“, KubeCon + CloudNativeCon Europe(2018年5月2-4日)
19
ネットワーク – DNS
出典:“Kubernetes on Supporting $8 Trillion Card Payments in China
- Xin Zhang & Deyuan Deng“, KubeCon + CloudNativeCon Europe(2018年5月2-4日)
20
AGENDA
• 2. アプリケーションコンテナのセキュリティ脅威と
インフラセキュリティ
21
コンテナサービスとセキュリティ
• コンテナ=移植性の高いコード実行環境
[主要コンポーネント]
• 実行環境
• 統合管理とスケジューリングのコントローラ
• コンテナイメージまたは実行するコードのリポジトリ
• コンテナのセキュリティ要件
• 基盤となる物理インフラ(コンピューティング、ネットワーク、
ストレージ)のセキュリティを確保する
• イメージリポジトリを適切に保護する
• コンテナ内で実行されているタスク/コードにセキュリティを組込む
22
コンテナ・セキュリティのガイドライン
• 米国NIST 「SP 800-190: Application Container
Security Guide」(2017年9月)
• コンテナ技術アーキテクチャ層と構成要素
出典:NIST “SP 800-190: Application Container Security Guide”(2017年9月)
23
・コンテナ技術のコアコンポーネントのリスク
コンポーネント リスク
イメージ ・イメージの脆弱性
・イメージ構成の欠陥
・組込まれたマルウェア
・組込まれた平文の秘密
・信頼できないイメージの使用
レジストリ ・セキュアでないレジストリへの接続
・レジストリにおける古いイメージ
・不十分な認証および権限付与の制限
オーケストレーター ・制限のない管理者のアクセス
・不正なアクセス
・分離が不十分なコンテナ内のネットワークトラフィック
・ワークロードの機微度レベルの混在
・オーケストレーター・ノードの信頼性
出典:NIST “SP 800-190: Application Container Security Guide”(2017年9月)
24
・コンテナ技術のコアコンポーネントのリスク(続き)
コンポーネント リスク
コンテナ ・ランタイム・ソフトウェア内の脆弱性
・コンテナからの制限のないネットワークアクセス
・セキュアでないコンテナ・ランタイムの構成
・アプリケーションの脆弱性
・不正なコンテナ
ホストOS ・大規模攻撃の対象領域
・共有されたカーネル
・ホストOSコンポーネントの脆弱性
・不適切なユーザーアクセス権限
・ホストOSのファイルシステムの改ざん
出典:NIST “SP 800-190: Application Container Security Guide”(2017年9月)
25
AGENDA
• 3. マイクロサービスのセキュリティ脅威と
APIセキュリティ
26
マイクロサービス・セキュリティのガイドライン
• 米国NIST 「SP 800-204(Draft): Security Strategies
for Microservices-based Application Systems」
(2019年3月)
• 伝統的なモノリシック(一枚岩)・アーキテクチャのネット通販
アプリケーション
出典:NIST “SP 800-
204(Draft): Security
Strategies for
Microservices-based
Application Systems ”
(2019年3月)
27
・マイクロサービス・アーキテクチャのネット通販アプリケーション
出典:NIST “SP 800-204(Draft): Security Strategies for Microservices-based
Application Systems ”(2019年3月)
28
• マイクロサービス運用のアーキテクチャ・フレームワークの役割
アーキテクチャ・フレームワーク アーキテクチャ全体における役割
APIゲートウェイ ・南北・東西のトラフィックを制御するのに使用される
(後者はマイクロゲートウェイを使用)
・マイクロサービスがweb/アプリケーションサーバー
に展開される時、マイクロゲートウェイが導入される
サービス・メッシュ ・コンテナを使用してマイクロサービスが展開される時、
純粋に東西のトラフィックのために導入されるが、マ
イクロサービスがVMまたはアプリケーションサーバー
にハウジングされる状況下で使用することができる
出典:NIST “SP 800-204(Draft): Security Strategies for Microservices-based
Application Systems ”(2019年3月)
29
・マイクロサービスの脅威とセキュリティ戦略
脅威 セキュリティ戦略
アイデンティティ/アクセス管理 ・認証(MS-SS-1)
・アクセス管理(MS-SS-2)
サービス・ディスカバリーの
メカニズム
・サービスレジストリ構成(MS-SS-3)
セキュアな通信プロトコル ・セキュアな通信(MS-SS-4)
セキュリティモニタリング ・セキュリティモニタリング(MS-SS-5)
遮断機能の展開 ・遮断機能の展開(MS-SS-6)
ロードバランシング ・ロードバランシング(MS-SS-7)
レート制限 ・レート制限(MS-SS-8)
出典:NIST “SP 800-204(Draft): Security Strategies for Microservices-based
Application Systems ”(2019年3月)
30
・マイクロサービスの脅威とセキュリティ戦略(続き)
脅威 セキュリティ戦略
完全性の保証 ・マイクロサービスの最新版の導入(MS-SS-9)
・セッション維持の取扱(MS-SS-10)
ボットネット攻撃への対抗 ・資格情報の悪用やリスト型攻撃の防止(MS-SS-11)
マイクロサービスのアーキテク
チャ・フレームワーク
・APIゲートウェイの展開(MS-SS-12)
・サービス・メッシュの展開(MS-SS-13)
出典:NIST “SP 800-204(Draft): Security Strategies for Microservices-based
Application Systems ”(2019年3月)
31
AGENDA
• 4. 主要クラウドサービスのシフトレフト支援策
32
DevOpsとは?
• アプリケーションの開発と配備を自動化することにフォーカスした、
アプリケーション開発の新しい方法論であり考え方である
• 開発チームと運用チームの間の協力とコミュニケーションを改善
してより深く結びつけることを意味し、特にアプリケーション配備と
インフラストラクチャ運用の自動化に焦点を当てている
• コード堅牢化、変更管理、本番アプリケーションのセキュリティを
改善するだけでなくセキュリティ運用全般をも強化してくれる
33
・継続的インテグレーション/継続的デプロイ(CI/CD)
パイプライン
出典:日本クラウドセキュリティアライアンス「クラウドコンピューティングのための
セキュリティガイダンス v4.0」日本語版1.1(2017年7月)
34
(例1)AWSのKubernetesへのCI/CDパイプライン
[構成要素]
• AWS CodePipeline
• AWS CodeCommit
• AWS CodeBuild
• Docker
• Amazon ECR
• AWS Lambda
• Kubernetes など
出典:AWS DevOps Blog, “Continuous Deployment to Kubernetes using AWS CodePipeline, AWS
CodeCommit, AWS CodeBuild, Amazon ECR and AWS Lambda”(2018年1月11日)
35
(例2)Azure Kubernetes Service (AKS)
[構成要素]
• Azure Dev Spaces
• Azure Pipelines
• Azure Container
Registry
• Helm
• Terraform
• Azure Monitor など
出典:Microsoft, “Azure Kubernetes Service (AKS)”
36
(例3)Google Kubernetes
EngineへのJenkinsを利用した
CI/CDパイプライン
[構成要素]
• Google Kubernetes Engine
• Container Registry
• Jenkins など
出典:Google Cloud Platform, “Continuous Deployment to Kubernetes Engine using Jenkins”
37
(例4)Alibaba Cloud Aliyun Container for
KubernetesにおけるDevOpsの継続的デリバリー
[構成要素]
• Source Code Management
• CI Server/CD Server
• Alibaba Cloud Container
Service
• Alibaba Cloud Image
Service
• Testing and Deployment
など
出典:Alibaba Cloud Aliyun Container for
Kubernetes プロダクト紹介(2019年4月10日)
38
DevOpsのセキュリティへの波及効果
項目 波及効果と長所
標準化 DevOps では、本番に組み込まれるものはすべて、承認済みのコードと
設定用テンプレートに基づき、継続的インテグレーション/継続的デプロ
イ(CI/CD)パイプラインによって生み出される。開発、テスト、本番
(のコード)はすべて完全に 同一のソースファイルから派生しており、周
知となっている優れた標準からの逸脱を防いでいる。
自動化された
テスト
広範な種類のセキュリティテストは、必要に応じて補助的に手動 テストを
加えることで、CI/CD パイプラインに組み込むことが可能である。
不可変性
(immutable)
CI/CD パイプラインは、素早く確実に、仮想マシンやコンテナ、インフラス
トラクチャスタックのマスターイメージを生成する。これにより配備の自動
化と不可変(immutable)なインフラストラクチャを実現する。
出典:日本クラウドセキュリティアライアンス「クラウドコンピューティングのための
セキュリティガイダンス v4.0」日本語版1.1(2017年7月)
39
DevOpsのセキュリティへの波及効果(続き)
項目 波及効果と長所
監査と変更管理の
改善
CI/CD パイプラインはソースファイルにある 1 文字の変更に至るまでの
全て を追跡調査できる。バージョン管理リポジトリに格納され たアプリ
ケーションスタック(インフラストラクチャを含む)の全履歴と共に、その変
更は変更を行った人物と紐づけられる。
SecDevOps/D
evSecOps と
Rugged
DevOps
SecDevOps/DevSecOps は セキュリティ運用を改善するために
DevOps の自動化技術を使う。Rugged DevOps はアプリケーション
開発過程にセキュリティテスティングを組み入れることを意味し、よ り強固
で、よりセキュアで、より障害耐性の高いアプリケーションを生み出す。
出典:日本クラウドセキュリティアライアンス「クラウドコンピューティングのための
セキュリティガイダンス v4.0」日本語版1.1(2017年7月)
40
AGENDA
• 5. Q&A
https://www.linkedin.com/in/esasahara
https://www.facebook.com/esasahara
https://twitter.com/esasahara

アプリケーションコンテナ/マイクロサービスのセキュリティ概説