$30 off During Our Annual Pro Sale. View Details »

AWS Systems Manager で実現する SSH レスでセキュアなクラウド運用

yuu26
March 25, 2021

AWS Systems Manager で実現する SSH レスでセキュアなクラウド運用

yuu26

March 25, 2021
Tweet

More Decks by yuu26

Other Decks in Technology

Transcript

  1. AWS Systems Manager で実現する
    SSH レスでセキュアなクラウド運用
    2021年3月25日
    AWS Startup Tech Meetup Online #3

    View Slide

  2. 2
    株式会社 Kyash
    SRE チーム (Tech Lead)
    SIer (オンプレミスのインフラ構築)
    → Web サービス企業2社 (SRE)
    → 現職
    副業として業務委託の SRE や LINE チャットボットの開発など
    m_on_yu yuu26jp
    上原 佑介

    View Slide

  3. 3
    ● Kyash について
    ● AWS Systems Manager (SSM) について
    ● SSM セッションマネージャーの仕組み
    ● SSM セッションマネージャーの始め方
    ● 運用上の工夫
    Kyash の SSM 運用について CodeZine にも寄稿しています!
    https://codezine.jp/article/detail/12714 ※下の概要欄からリンクに飛べます
    本日お話すること

    View Slide

  4. 4
    4
    Kyash について

    View Slide

  5. 5
    スマートフォンアプリと連動する Visa カード
    アプリのインストールから1分ですぐ使える
    Kyash Card (物理カード) を発行して実店舗でも使える
    決済するとプッシュ通知が届いて履歴にすぐ反映
    紛失時などはアプリからカードロック可能
    Visa のタッチ決済対応
    QUICPay+ (Apple Pay / Google Pay) 対応
    Kyash とは

    View Slide

  6. 6
    特徴:システムへの入口が2つある
    ● モバイルアプリ
    ● 決済ネットワーク
    ※ ECS に順次移行中
    Kyash のシステム構成

    View Slide

  7. 7
    カード会社のシステムはセキュリティ基準 PCI DSS への準拠が必要
    ● サーバやデータ(特にカード情報)への強固なアクセス制御
    ● カード情報への全アクセスの追跡及び監視
    ● 取得した監査証跡の保護(ログ自体の監視&改ざん検知など)
    など、大きく12の要件が定められている
    Kyash のシステムに求められる要件

    View Slide

  8. 8
    PCI DSS の要件を維持するにあたり以下の課題があった
    ● 開発メンバの増減に合わせた SSH ユーザの更新が大変
    ● ログや証跡保護のための運用負荷が高い
    ○ 操作内容をもれなく取得
    ○ 万が一のログ改ざん時の検知
    ○ ログ管理サーバの運用
    これらの問題を解決するために AWS Systems Manager を導入
    Kyash のシステムにおける運用課題

    View Slide

  9. 9
    9
    AWS Systems Manager について

    View Slide

  10. 10
    AWS におけるインフラ運用を支援するためのサービス群
    機密情報を管理する「パラメータストア」でも有名
    SSM の機能の一つとして「セッションマネージャー」が提供されている
    ● サーバ内にアクセスして任意のコマンドを実行できる
    ● 操作ログはすべて自動的に記録される
    ● SSH ポートの開放が不要
    AWS Systems Manager (SSM) とは

    View Slide

  11. 11
    SSM セッションマネージャーの仕組み
    インスタンス内の SSM エージェントが Systems Manager と連携して動作する
    ● 必要な通信は HTTPS Outbound のみ (ポート開放不要)
    ● 開発者は SSM を経由してサーバにアクセスする

    View Slide

  12. 12
    SSM セッションマネージャーのデモ
    https://www.youtube.com/watch?v=cc7jLW0FzzI
    ※下の概要欄からリンクに飛べます

    View Slide

  13. 13
    ブラウザしか使えない環境でもインスタンスに入れる
    コンソールからも利用可能

    View Slide

  14. 14
    誰が、いつ、どのインスタンスに、何分、アクセスしたか記録が残る
    セッション履歴

    View Slide

  15. 15
    セッションログ
    セッション内で実行されたコマンドとその応答がすべて記録される

    View Slide

  16. 16
    ● SSH ポートの開放が不要
    ● SSH ユーザや鍵の管理が不要
    ● 踏み台サーバが不要
    ● プライベートサブネットのインスタンスに直接接続できる
    ● IAM を用いた権限管理ができる
    ● 証跡が AWS CloudTrail / Amazon CloudWatch / Amazon S3 に残る
    ● (CloudTrail に残るので)GuardDuty の監視対象になる
    ● ログを改ざんされる心配がない
    SSM セッションマネージャーを使うと何が嬉しいか

    View Slide

  17. 17
    セッションマネージャーでのアクセスは内部的に AWS の API を呼んでいる
    → IAM を使った権限管理が可能
    ● リソースタグで接続先を絞る
    ● メンテナンス時間帯のみアクセスを許可する
    ● SAML 認証のロールと組み合わせるとさらに便利
    ○ ロール単位で接続先を制限
    ○ 異動や入退社があっても自動反映
    IAM を用いた権限管理

    View Slide

  18. 18
    【Before】各サーバから td-agent でログを集約して保管
    💀 ログ集約サーバ&ログ管理サーバが毎週のように不安定になっていた
    操作ログ・証跡が自動記録される

    View Slide

  19. 19
    【After】自動的に S3 / CloudWatch Logs に記録される
    ✨ ログサーバの運用とログのお守りから解放された
    操作ログ・証跡が自動記録される

    View Slide

  20. 20
    20
    セッションマネージャーの始め方

    View Slide

  21. 21
    インスタンスに IAM ポリシーを付与
    → AmazonSSMManagedInstanceCore
    → CloudWatch Logs への Put 権限など
    必要に応じて VPC エンドポイントを追加
    → ssm, ssmmessages, ec2
    サーバに SSM エージェントをインストール
    → Amazon Linux にはプリインストール済
    セッションマネージャーの始め方 (サーバ)

    View Slide

  22. 22
    IAM に SSM セッションマネージャー権限を付与
    https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/getting-started-restr
    ict-access-examples.html ※下の概要欄からリンクに飛べます
    AWS CLI のセッションマネージャー用プラグインをインストール
    (コンソールから試す場合は不要
    )
    https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-w
    orking-with-install-plugin.html ※下の概要欄からリンクに飛べます
    aws ssm start-session --target で接続!
    セッションマネージャーの始め方 (クライアント)

    View Slide

  23. 23
    23
    運用上の工夫

    View Slide

  24. 24
    ssm start-session コマンドを楽にする
    セッション開始時にインスタンス ID の指定が必要
    aws ssm start-session --target i-xxxxxxxx
    インスタンスはデプロイの度に入れ替わるため毎回調べるのは大変
    → 接続先を選ぶだけでアクセスできる shell function を配布
    ざっくり概要
    1. aws ssm describe-instance-information で
    接続可能なインスタンス ID の一覧を取得
    2. aws ec2 describe-instances でインスタンス詳細を取得
    3. IP アドレスやタグなどを抽出
    4. peco に渡して選択可能にする
    5. 選択されたインスタンスに対して aws ssm start-session

    View Slide

  25. 25
    shell function の動作デモ
    https://www.youtube.com/watch?v=p8Bb9MfCMog
    ※下の概要欄からリンクに飛べます

    View Slide

  26. 26
    SSM の通信を使ってサーバに SSH することができる
    → SSH ポートフォワードの通信経路としても利用可能
    ● Linux には SSM で直接接続
    ● RDS やリモートデスクトップは
    踏み台経由のポートフォワード
    ● 踏み台もポート開放不要
    SSH ポートフォワードとして利用する

    View Slide

  27. 27
    27
    まとめ

    View Slide

  28. 28
    ● SSH の管理が不要になる
    ● IAM だけで権限管理ができる
    ● 証跡や操作ログがしっかりと残る
    ● ポートを閉じれるのでよりセキュアになる
    ● 監査対応の工数を削減できる✨
    EC2 の運用コストを下げるにはセッションマネージャーがおすすめ!
    まとめ: SSM セッションマネージャーはいいぞ

    View Slide

  29. 29
    様々な職種で採用中です!
    Kyash で一緒に働きませんか?
    Kyash 採用 🔍

    View Slide