Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWSにおけるコンテナサービスの変化と利用ユーザに求められることとは?

 AWSにおけるコンテナサービスの変化と利用ユーザに求められることとは?

yoshitaka KOITABASHI

December 09, 2022
Tweet

More Decks by yoshitaka KOITABASHI

Other Decks in Technology

Transcript

  1. 本日のセッションで話すこと・・・ • 話すこと • AWS におけるコンテナサービスについて • AWS App Runner

    / AWS Copilot やばいという話 • 責任共有モデルの話 • コンテナセキュリティと補助ツール • 話さないこと • コンテナについてや AWS の各コンテナサービスの詳細 • コンテナイメージ以外のセキュリティ 2022/12/9 yoshii0110 3
  2. コンテナサービス周りの変化 2014 2015 2016 2017 2018 2019 2020 2021 2022

    2022/12/9 yoshii0110 5 Amazon ECS Amazon ECR AWS Fargate Amazon EKS AWS Copilot AWS App Runner AWS Proton
  3. 各サービスを組み合わせると 2022/12/9 yoshii0110 6 Amazon EKS Amazon ECR Amazon ECS

    Container Container Container Container Container Container Container Container コンテナの 実行環境 コンテナ オーケストレータ イメージレジストリ AWS Fargate Amazon EC2
  4. Amazon ECS を使用したアーキテクチャ例 2022/12/9 yoshii0110 7 • ネットワークの設定 • Amazon

    VPC • ELB など • コンテナ実行環境の設定 • Amazon EC2 • AWS Fargate • オンプレ (AWS Outposts/ EKS Anywhere / ECS Anywhere) • Edge / 5G (AWS Local Zone / AWS Wavelength) • コンテナイメージのBuild から Deploy の自動化設定 • Codeシリーズ
  5. AWS App Runner 2022/12/9 yoshii0110 9 Webアプリを仕様に合わせデプロイすると・・・? • コンテナ管理とかVPC周り •

    ALB、NLB • scaling • 自動化するならcodebuildとか • => App Runnerがこれらをまとめて (隠蔽して) 提供してくれる。
  6. AWS Copilot • Amazon ECS CLI の後継にあたるもの • ECS CLI

    は、Amazon ECS 環境に対する コンテナデプロイのためのツール • AWS Copilot がなぜ登場したのかいうと、 より ECS (App Runnerへのデプロイも対応)でコンテナを実行したいとなった時の ワークフローをシンプルにするためというモチベーションがある 2022/12/9 yoshii0110 12 https://github.com/aws/copilot-cli/
  7. 責任共有モデルの違い 2022/12/9 yoshii0110 16 App Language Runtime OS EC2 Instance

    Hypervisor Hypervisor Customer responsibility AWS responsibility Amazon EC2 Amazon ECS AWS Fargate AWS App Runner Physical Server(s) Physical Server(s) Physical Server(s) ALB CI/CD App Language Runtime App Language Runtime Container Orchestration Agent OS EC2 Instance Customer responsibility AWS responsibility Container Orchestrator ALB CI/CD ALB CI/CD Hypervisor App Language Runtime App Language Runtime Container Orchestration Agent OS EC2 Instance Container Orchestrator Physical Server(s) ALB CI/CD Hypervisor App Language Runtime App Language Runtime Container Orchestration Agent OS EC2 Instance Container Orchestrator OR Auto Scaling Auto Scaling
  8. コンテナセキュリティの全体像 2022/12/9 yoshii0110 17 コンテナイメージ イメージレジストリ オーケストレータ 実行されている コンテナ コンテナのホスト

    • イメージの脆弱性 • イメージの設定内容 • シークレットな情報 • etc.. • レジストリへの接続 • レジストリ内のイメージ • 認証認可 • etc.. • 管理者アクセス • オーケストレータノードの 信頼性 • etc.. • ランタイムの脆弱性 • コンテナへのアクセス • アプリの脆弱性 • etc.. • 共有カーネル • ホスト OS の脆弱性 • 不適切な ユーザアクセス権限 • ホスト OS ファイルシス テムの改ざん • etc.. NIST SP800-190「アプリケーションコンテナセキュリティガイド」 https://www.ipa.go.jp/files/000085279.pdf
  9. コンテナイメージ作成の補助となる静的解析ツール ① 2022/12/9 yoshii0110 18 https://docs.docker.jp/develop/develop-images/dockerfile_best-practices.html hadolint • Dockerfile の静的解析を行なってくれる

    lint ツール • Dockerfile のベストプラクティスに従っているかをチェック • VS Codeのエクステンションも存在 https://github.com/hadolint/hadolint brew 経由でのインストール Hadolint の実行コマンド例
  10. コンテナイメージ作成の補助となる静的解析ツール ② 2022/12/9 yoshii0110 19 dockle • コンテナイメージのセキュリティ診断ツール • コンテナイメージの静的解析

    • ベストプラクティスに従っているかをチェック • またベースとする OS イメージの設定内容に関するもチェック https://github.com/hadolint/hadolint brew 経由でのインストール dockle の実行コマンド例
  11. コンテナイメージ作成の補助となる脆弱性スキャンツール ① 2022/12/9 yoshii0110 20 Trivy • コンテナイメージの脆弱性スキャン • OS

    パッケージと言語特有の依存関係に対するスキャン • Dockerfile を含む IaC の静的解析 https://github.com/hadolint/hadolint brew 経由でのインストール trivy の実行コマンド例
  12. コンテナイメージ作成の補助となる脆弱性スキャンツール ② 2022/12/9 yoshii0110 21 Amazon Inspector • コンテナイメージの脆弱性スキャン •

    基本スキャン イメージをプッシュしたタイミングで手動/自動で実施 • 拡張スキャン イメージのプッシュ時および継続的に Inspector による プログラミング言語のパッケージを含めたスキャンも実施 https://docs.aws.amazon.com/ja_jp/inspector/latest/use r/enable-disable-scanning-ecr.html
  13. まとめ • AWS におけるコンテナサービスの変化 • 責任共有モデルの aws 側が責任を持つ領域が増えたサービスが 生まれている •

    正直利用するときはユースケースに依存 => カスタマイズを細かくしたいなどの要件を満たせないといった場合がある • より運用が楽になるサービスを使えるのであれば検討を • その際にユーザ側に求められる責任範囲には注視する 2022/12/9 yoshii0110 22