awsでkubernetesの導入を検討するにあたり ...€¦ ·...
TRANSCRIPT
マスター タイトルの書式設定
AWSでkubernetesの導入を検討するにあたりコンテナプラットフォーム特有の考慮すべきセキュリティ対策とは!
2020/2/25
プラットフォームサービス本部クラウド基盤ソリューション部ソリューションアーキテクトチーム
マスター タイトルの書式設定目次
1
• AWSでコンテナを動かす選択肢
• CNCF セキュリティ対策ツールの紹介
• k8s環境でのセキュリティの整理
• まとめ
マスター タイトルの書式設定
AWSでコンテナを動かす選択肢
2
マスター タイトルの書式設定AWSでコンテナを動かす選択肢
AWSマネージド利用するAWSマネージド利用しない
Amazon ECS Amazon EKS k8s
Open Shift
EC2 Fargate EC2 Fargate EC2
ECR Docker hubなど
Orchestration
ComputeResource
ImageRegistry
など
3
マスター タイトルの書式設定AWSでコンテナを動かす場合も「責任共有モデル」は従来通り
4
「セキュリティとコンプライアンスは、クラウドベンダーと利用者の間で共有」
https://aws.amazon.com/jp/compliance/shared-responsibility-model/
マスター タイトルの書式設定AWSコンテナサービスのスタック
5
AWSマネージド利用するAWSマネージド利
用しない
Amazon ECS Amazon EKS(k8s) k8s、Open ShiftなどEC2 Fargate EC2 Fargate
App App App App App
Container Container Container Container Container
OS・MW OS・MW OS・MW OS・MW OS・MW
EC2 EC2 EC2 EC2 EC2
HW・NW HW・NW HW・NW HW・NW HW・NW
コンテナを動かす際のセキュリティに対するAWSの責任範囲
マスター タイトルの書式設定
CNCFセキュリティ対策ツールの紹介
6
マスター タイトルの書式設定CNCF Landscape > Security & Compliance
7
「sysdig」・・ Landscape>Monitoring でもカテゴライズされていてモニタリング機能あり。 「Falco」・・ sysdigやSumologicでも利用されている。コロプラも監査用途で使っているらしい。 「anchore」・・ sysdigの内部で利用されている。 「kube-bench」「kube-hunter」・・ AquaSecurityの製品群。最近Aquaが買収した「trivy」も仲間入りした。 「clair」・・ AWS ECRのコンテナイメージ脆弱性チェックで利用されている。 「StackRox」・・ k8sセキュリティソリューション企業。個人的に情報のキャッチアップで参考にしている。 「SONOBUOY」・・ vmware-tanzuプロジェクト。個人的にこのプロジェクトには注目している。 「paloalto」・・ twistlockを買収してここにいる模様。 「Open Policy Agent」・・ ガバナンス/コンプライアンス効かせるには有力候補か。Anthos Config Managementでも利用されている。
(2020年2月26日時点)
マスター タイトルの書式設定AWS / k8s レイヤにおけるセキュリティ対策ツール
認可
ワークロード分離(物理/論理)
ファイアウォール
認証
シークレット管理
脆弱性対策
モニタリング
暗号化(通信/データ)
バックアップ
ガバナンス/コンプライアンス
セキュリティカテゴリ AWS k8s
IAM
KMSSecretManager
KMS
kubesecKubernetes-External-secret
Sealed-secretes
Inspector
EC2
CNCFエコシステム
K8s dashboard
GuardDuty
ACM
Backup SystemManager
Cloudwatch
ES
ECR
Account VPC
NW ACLSG
EKS
WAF Shield
Cognito Directory
MacieSecurity HUb Admission
Controlkubeaudit
8
マスター タイトルの書式設定k8sセキュリティソリューション 3大ベンダー ※あくまで私の視点です
9
3製品ともコンテナやノードスキャン機能あり。スキャン精度は日進月歩なので〇×つけられないという意見あり。
DeepSecurityとかの併用有無は、販売代理店で見解が分かれたりしている。いずれせよライセンス費用がどれも高額なのは悩ましい。
項目 Aqua Twistlock Sysdig
起源 イスラエル(2015年~) アメリカ(2015年~) アメリカ(2013年~)
マネージャ k8sクラスタ環境に導入 • k8sクラスタ環境に導入• マネージャのSaaS版は2019年度内中に提供予定
• K8sクラスタ環境に導入• マネージャのSaaS版も提供
クライアント(k8s環境導入)
Sidecar • DaemonSet(コンテナランタイムにモジュール実装)• Sidecar(AWS Fargate形式の場合)
• DaemonSet (カーネルモードでシステムコールをフック)
特徴・差別化 vShield(バーチャルパッチ) WAF機能(AquaやSysdigには無いとの事) 元々モニタリングツールから開発され、セキュリティ領域に機能拡張
国内販売代理店 SB C&S、クリエーションライン マクニカネットワークス SCSK ※Sysdig日本法人いるが直販無し
内包OSSツール • Kube-bench(CIS benchmark)• Kube-hunter(ペネトレーションテスト)
ー • sysdig(I/O + system call caputure)• Prometheus(monitoring)• Inspect(visualize)• falco(behavior rule)• anchore(security check)
国内公開事例 カカクコム、Paidy クックパッド メルカリ
ライセンス形態 どれも年間サブスクモデルで最小 数百万円からの提供
その他 Trivy(コンテナイメージスキャン)を最近買収
• NIST著者が在籍• 2019年パロアルトがTwistlockとPureSecを買収した事によりパロアルトのクラウドセキュリティ製品群(Prisma)に統合予定
Wireshark開発者が創立
マスター タイトルの書式設定
k8s環境でのセキュリティの整理
10
マスター タイトルの書式設定AWS / k8s 環境でのセキュリティ整理
11
認可
ワークロード分離
(物理/論理)
脆弱性対策
暗号化
(通信/データ)
バックアップ
ファイアウォール
モニタリング
認証
ガバナンス/コンプライアンス
セキュリティカテゴリ セキュリティ境界
Public Cloud
k8s Cluster
Worker NodeMaster Node
Namespace
Pod
Container
Pod
Container
Application Application
シークレット管理
マスター タイトルの書式設定認証 / 認可 / Admission Control ※AWS EKSを意識
12
Public Cloud
k8s Cluster
Master Node
参考) https://kubernetes.io/docs/reference/access-authn-authz/https://medium.com/better-programming/k8s-tips-using-a-serviceaccount-801c433d0023
API Version
• Extension
• Core
• Apps
***
Resources
• Deployment
• Node
• Pod
***
Action
• Create
• Get
• List
***
Human
Namespace縛り
Pod用
User用
AdmissionControl
認証 認可
k8s cluster Guard rail
• ResourceQuota
• LimitRange
• AlwaysPullImages
• NamespaceLifecycle
• Priority
• Pod Security Policy
***
IAM
OpenID Connect
IAM Role for Service Account
IAM
aws-auth
マスター タイトルの書式設定ワークロード分離のパターン
13
Public Cloud
k8s Cluster
Namespace
Pod
Container
Pod
⑤サービス
K8s Cluster
Worker NodeWorker Node
③サービス ③サービス
Namespace
②サービス
④サービス ④サービス
②サービス
①サービス ①サービス
Container
⑤サービス
⑥サービス
⑥サービス
ワークロードの分離パターン
①Cluster
②Namespace
③Node
④Pod
⑤Container
⑥Volume
• MasterNodeでサービスワークロードは通常動かさないと思うので割愛。
マスター タイトルの書式設定ファイアーウォール / 暗号化(通信)の考慮すべき箇所
14
Public Cloud
k8s Cluster
WorkerNodeMaster Node
SaaSClientなど
コンテナレジストリ(ECRなど)
k8s cluster外部サービス(RDSなど)
Container
Container
Private subnet Network
通信用途
サービス・アプリワークロード
K8運用・保守ワークロード
• 複数MasterNode同士や複数WokerNode同士の通信は割愛。
• MasterNodeもPrivate subnet Network内に作れる場合は、それに越したことなし。
保守/運用(EC2など)
ELB
z
参考) https://github.com/cncf/financial-user-group/tree/master/projects/k8s-threat-model
マスター タイトルの書式設定
15
暗号化(データ)の考慮すべき箇所
Public Cloud
k8s Cluster
Master Node Woker Node
EBS
EFS
ECRなどのコンテナレジストリ
CodeCommitなどのGitリポジトリ
S3
AWS上でのk8s pv確保の選択肢はEBSかEFS
利用するAWSサービスのデータ暗号化(サーバサイド)は従来通り
EBS
参考) https://aws.amazon.com/premiumsupport/knowledge-center/eks-pods-efs/
RDSなど
マスター タイトルの書式設定
16
シークレット管理で考慮すべきこと
過去に話した「Kubernetes(k8s)でシステム運用する際のシークレット情報の管理について調べてみた」もよければ参照下さいhttps://speakerdeck.com/hiropinponpan/kubernetes-k8s-desisutemuyun-yong-suruji-falsesikuretutoqing-bao-falseguan-li-nituitediao-betemita
K8s secretリソース• k8sではデータベースなどに接続する際のユーザ名やパスワードなどの機密情報を、アプリコンテナなどのPodに環境変
数やVolumeとして渡す際に利用するk8s secretリソース機能が提供されている
懸念点• K8s secretリソースを生成するマニフェストファイル(例:secret.yml)は、base64でエンコードされているが暗号化さ
れている訳ではないのでマニフェストファイルをgithubなどにそのままpushするのはNG
シークレット情報をセキュアに管理する為のツール群をいくつか紹介
• Kubesec
• Kubernetes-external-secrets
• Sealed-secrets
• HashiCorp社 vault
マスター タイトルの書式設定k8sレイヤのバックアップ
Public Cloud
k8s Cluster
S3
Woker Node
backupData
Backup
Backup/Restore
ユースケース ※veleroいわく
• Backup/restore
• Disaster recovery
• Cluster migrationなど
バックアップデータ保存先
• AWS S3
• Azure Blob Storage
• Google Cloud Storage
• その他、互換ベンダーストレージ
backupData
など
17
参考) https://velero.io/docs/master/
マスター タイトルの書式設定脆弱性対策 ※コンテナライフサイクル視点
Public Cloud
k8s Cluster
Master / Woker Node
コンテナレジストリ(ECRなど)
Gitリポジトリ(codeCommitなど)
OS・MW
K8s・コンテナランタイム
K8s manifest
コンテナイメージ
コンテナ
運用/保守端末(EC2など)
GitHub、プライベート、コーポレートなどのレジストリ(redhat / googleなど)
コンテナイメージ
Build Ship Run
CIツール(CodeBuild、S3など)
Buildツール(docker、Bazelなど)
CDツール(CodeDeployなど)
ペネトレーションテストコンテナイメージスキャンコンテナイメージスキャン
コンテナライフサイクルにおいて、シフトレフトでの脆弱性対策が重要
kubeaudit
CIS k8s Benchmarkチェック
K8sセキュリティチェック
18
マスター タイトルの書式設定モニタリング ※Observabilityの視点
19
過去に話した「Cloud NativeなテクノロジーにおけるObservability(可観測性)とは?」もよければ参照下さいhttps://speakerdeck.com/hiropinponpan/cloudnativenatekufalseroziniokeruobservability-ke-guan-ce-xing-toha
1. Metrics• CPU/MEM/Diskなどのリソース使用率• APIリクエスト数、NWトラフィック、キャッシュヒット率、ページロードタイムなど
2. Logs• Syslog(サーバ、コンテナOSなど)、ミドルウェアやアプリケーションのログ• NWパケット、DBクエリ、構成変更、API操作、クラウド監査ログなど
3. Traces• アプリケーション、データベース、外部API、マイクロサービス間の処理や呼び出しタイムの計測と追跡
マスター タイトルの書式設定
20
ガバナンス / コンプライアンス
20
Public Cloud
k8s Cluster
Master Node Woker Node
AdmissionController
AuthZ Webhook
CloudWatch
アプリコンテナ Query
Data
Policy(Rego)
Rule
AdmissionReview
AuthZgatekeeper
Rule
・監査用途
・AdmissionControllerの拡張
gatekeeper
・認証/認可のオフロード
マスター タイトルの書式設定
まとめ
21
マスター タイトルの書式設定まとめ
22
• 企業 or プロジェクト or システムにおいて、ガバナンス/コンプライアンスの整理が必要
• 検証/開発/本番の実運用において、どこまでセキュリティ対策を行うべきか継続した検討が必要
• AWS、k8s、CNCFエコシステムのセキュリティソリューションの継続したキャッチアップが必要
マスター タイトルの書式設定
ご清聴ありがとうございました
23