Skip to content

Security: cnc4e/cloudnative-practice

Security

docs/security.md

Top


セキュリティ

はじめに

このプラクティスでは、Kubernetesクラスターとアプリケーションのセキュリティを強化するための技術について学習します。

クラウドネイティブ環境において、セキュリティは設計の初期段階から組み込まれるべき重要な要素です。以下のような各レイヤーでセキュリティ対策を実装する必要があります。

  • クラウド
  • K8sクラスタ(コントロールプレーン、ノード)
  • Pod
  • イメージレジストリ
  • Gitリポジトリ

クラウドに関しては一般的なクラウドセキュリティに準ずるため、本プラクティスではK8sやIaCに特化したセキュリティ対策に焦点を当てます。

プラクティス

issue作成

自身のGitHubアカウントに作成したcloudnative-practiceリポジトリにIssueを作成します。issueを作成するスクリプトを用意しているためそれを使います。

  • まずはリポジトリのルートから以下コマンドでscriptsディレクトリに移動

    cd scripts
  • 環境変数に値を設定

    export GITHUB_TOKEN={あなたのGitHubのPAT}
    export GITHUB_REPO={あなたのGitHubアカウント名}/cloudnative-practice
  • スクリプト実行

    python create_issues.py security

自身のGitHubアカウントのcloudnative-practiceリポジトリを開き、Issuesタブにセキュリティのラベルがついたissueが作成されていることを確認してください。

issue対応

本プラクティスでは、多層防御(Defense in Depth)の考え方に基づき、各レイヤーでセキュリティを強化します。

プラットフォーム・クラスタセキュリティ

  • EKSクラスタエンドポイントのアクセス制御
  • EKSアクセスエントリーによる認証・認可の管理
  • EKSクラスタの監査ログ有効化

ネットワークセキュリティ

  • Kubernetes NetworkPolicyによるネットワークセキュリティ
  • EKSのSecurity Groups for Podsによるセキュリティ制御

Pod・コンテナ セキュリティ

  • Kubernetes RBACによるアクセス制御
  • ReadOnlyRootFilesystemによるセキュリティ強化
  • 非rootユーザーでのPod実行によるセキュリティ強化
  • allowPrivilegeEscalationによる特権昇格の防止
  • 特権のはく奪(Capability Drop)によるセキュリティ強化
  • Seccompプロファイルによるシステムコール制限
  • SELinuxによるファイルアクセスの制限

イメージセキュリティ

  • 信頼できるベースイメージの選定
  • 信頼できる提供元のコンテナイメージの使用
  • イメージスキャンによる脆弱性検査
  • マルチステージビルドによるイメージサイズとセキュリティの最適化
  • ECRレポジトリのアクセス制限とセキュリティ設定

機密情報管理・暗号化

  • SOPSを使ったK8s Secretの暗号化
  • Terraformにおける機密情報の管理
  • ノードの暗号化
  • ServiceMeshによるPod間通信の暗号化(mTLS)

監視・検知

  • Falcoによるランタイムセキュリティ監視
  • GuardDuty EKS Protectionの有効化とセキュリティ監視

静的解析・事前検証

  • 静的解析ツールによるTerraformのセキュリティスキャン
  • SBOMによるソフトウェア部品の可視化

Top

There aren’t any published security advisories