Slide 1

Slide 1 text

AWSにおけるコンテナサービスの変化と 利用ユーザに求められることとは? KOITABASHI Yoshitaka 2022/12/9 yoshii0110 1

Slide 2

Slide 2 text

2022/12/9 yoshii0110 2 KOITABASHI Yoshitaka @yoshii0110 Full Cycle Developer KDDIアジャイル開発センター株式会社 AWS App Runner, AWS Fargate, Amazon SQS 🥷 🏢 💕

Slide 3

Slide 3 text

本日のセッションで話すこと・・・ • 話すこと • AWS におけるコンテナサービスについて • AWS App Runner / AWS Copilot やばいという話 • 責任共有モデルの話 • コンテナセキュリティと補助ツール • 話さないこと • コンテナについてや AWS の各コンテナサービスの詳細 • コンテナイメージ以外のセキュリティ 2022/12/9 yoshii0110 3

Slide 4

Slide 4 text

AWS におけるコンテナサービス 2022/12/9 yoshii0110 4 コンテナオーケストレーションサービス イメージレジストリ データプレーン 関連サービス Copilot CLI AWS Proton AWS App Mesh AWS Cloud Map AWS App Runner Amazon CloudWatch Container Insights Amazon ECS Amazon EKS Amazon ECR

Slide 5

Slide 5 text

コンテナサービス周りの変化 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

Slide 6

Slide 6 text

各サービスを組み合わせると 2022/12/9 yoshii0110 6 Amazon EKS Amazon ECR Amazon ECS Container Container Container Container Container Container Container Container コンテナの 実行環境 コンテナ オーケストレータ イメージレジストリ AWS Fargate Amazon EC2

Slide 7

Slide 7 text

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シリーズ

Slide 8

Slide 8 text

めんどくさくないですか? 2022/12/9 yoshii0110 8

Slide 9

Slide 9 text

AWS App Runner 2022/12/9 yoshii0110 9 Webアプリを仕様に合わせデプロイすると・・・? • コンテナ管理とかVPC周り • ALB、NLB • scaling • 自動化するならcodebuildとか • => App Runnerがこれらをまとめて (隠蔽して) 提供してくれる。

Slide 10

Slide 10 text

AWS App Runner 上で アプリケーションをデプロイ 2022/12/9 yoshii0110 10

Slide 11

Slide 11 text

AWS App Runner 上のアプリケーションにおける ネットワーク設定 2022/12/9 yoshii0110 11

Slide 12

Slide 12 text

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/

Slide 13

Slide 13 text

AWS Copilot を触ってみると Copilot CLI のインストール 2022/12/9 yoshii0110 13 Dockerfileを用意 Copilot CLI のコマンド実行

Slide 14

Slide 14 text

AWS Copilot で作成した資源の見え方 2022/12/9 yoshii0110 14 • 既存のコンテナサービスへのデプロイのワークフローを シンプルにするだけなので、資源自体は存在

Slide 15

Slide 15 text

責任共有モデル 2022/12/9 yoshii0110 15 https://aws.amazon.com/jp/compliance/shared-responsibility-model/

Slide 16

Slide 16 text

責任共有モデルの違い 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

Slide 17

Slide 17 text

コンテナセキュリティの全体像 2022/12/9 yoshii0110 17 コンテナイメージ イメージレジストリ オーケストレータ 実行されている コンテナ コンテナのホスト • イメージの脆弱性 • イメージの設定内容 • シークレットな情報 • etc.. • レジストリへの接続 • レジストリ内のイメージ • 認証認可 • etc.. • 管理者アクセス • オーケストレータノードの 信頼性 • etc.. • ランタイムの脆弱性 • コンテナへのアクセス • アプリの脆弱性 • etc.. • 共有カーネル • ホスト OS の脆弱性 • 不適切な ユーザアクセス権限 • ホスト OS ファイルシス テムの改ざん • etc.. NIST SP800-190「アプリケーションコンテナセキュリティガイド」 https://www.ipa.go.jp/files/000085279.pdf

Slide 18

Slide 18 text

コンテナイメージ作成の補助となる静的解析ツール ① 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 の実行コマンド例

Slide 19

Slide 19 text

コンテナイメージ作成の補助となる静的解析ツール ② 2022/12/9 yoshii0110 19 dockle • コンテナイメージのセキュリティ診断ツール • コンテナイメージの静的解析 • ベストプラクティスに従っているかをチェック • またベースとする OS イメージの設定内容に関するもチェック https://github.com/hadolint/hadolint brew 経由でのインストール dockle の実行コマンド例

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

コンテナイメージ作成の補助となる脆弱性スキャンツール ② 2022/12/9 yoshii0110 21 Amazon Inspector • コンテナイメージの脆弱性スキャン • 基本スキャン イメージをプッシュしたタイミングで手動/自動で実施 • 拡張スキャン イメージのプッシュ時および継続的に Inspector による プログラミング言語のパッケージを含めたスキャンも実施 https://docs.aws.amazon.com/ja_jp/inspector/latest/use r/enable-disable-scanning-ecr.html

Slide 22

Slide 22 text

まとめ • AWS におけるコンテナサービスの変化 • 責任共有モデルの aws 側が責任を持つ領域が増えたサービスが 生まれている • 正直利用するときはユースケースに依存 => カスタマイズを細かくしたいなどの要件を満たせないといった場合がある • より運用が楽になるサービスを使えるのであれば検討を • その際にユーザ側に求められる責任範囲には注視する 2022/12/9 yoshii0110 22

Slide 23

Slide 23 text

一緒に働くメンバー大募集中!! 2022/12/9 yoshii0110 23 全社員がアジャイルネイティブ。 今年設立したばかりの会社!!🏢 ワイワイやっているので、興味あればぜひ!✨