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

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

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →
Avatar for yuu26 yuu26
March 25, 2021

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

Avatar for yuu26

yuu26

March 25, 2021

More Decks by yuu26

Other Decks in Technology

Transcript

  1. 2 株式会社 Kyash SRE チーム (Tech Lead) SIer (オンプレミスのインフラ構築) →

    Web サービス企業2社 (SRE) → 現職 副業として業務委託の SRE や LINE チャットボットの開発など m_on_yu yuu26jp 上原 佑介
  2. 3 • Kyash について • AWS Systems Manager (SSM) について

    • SSM セッションマネージャーの仕組み • SSM セッションマネージャーの始め方 • 運用上の工夫 Kyash の SSM 運用について CodeZine にも寄稿しています! https://codezine.jp/article/detail/12714 ※下の概要欄からリンクに飛べます 本日お話すること
  3. 7 カード会社のシステムはセキュリティ基準 PCI DSS への準拠が必要 • サーバやデータ(特にカード情報)への強固なアクセス制御 • カード情報への全アクセスの追跡及び監視 •

    取得した監査証跡の保護(ログ自体の監視&改ざん検知など) など、大きく12の要件が定められている Kyash のシステムに求められる要件
  4. 8 PCI DSS の要件を維持するにあたり以下の課題があった • 開発メンバの増減に合わせた SSH ユーザの更新が大変 • ログや証跡保護のための運用負荷が高い

    ◦ 操作内容をもれなく取得 ◦ 万が一のログ改ざん時の検知 ◦ ログ管理サーバの運用 これらの問題を解決するために AWS Systems Manager を導入 Kyash のシステムにおける運用課題
  5. 11 SSM セッションマネージャーの仕組み インスタンス内の SSM エージェントが Systems Manager と連携して動作する •

    必要な通信は HTTPS Outbound のみ (ポート開放不要) • 開発者は SSM を経由してサーバにアクセスする
  6. 16 • SSH ポートの開放が不要 • SSH ユーザや鍵の管理が不要 • 踏み台サーバが不要 •

    プライベートサブネットのインスタンスに直接接続できる • IAM を用いた権限管理ができる • 証跡が AWS CloudTrail / Amazon CloudWatch / Amazon S3 に残る • (CloudTrail に残るので)GuardDuty の監視対象になる • ログを改ざんされる心配がない SSM セッションマネージャーを使うと何が嬉しいか
  7. 17 セッションマネージャーでのアクセスは内部的に AWS の API を呼んでいる → IAM を使った権限管理が可能 •

    リソースタグで接続先を絞る • メンテナンス時間帯のみアクセスを許可する • SAML 認証のロールと組み合わせるとさらに便利 ◦ ロール単位で接続先を制限 ◦ 異動や入退社があっても自動反映 IAM を用いた権限管理
  8. 21 インスタンスに IAM ポリシーを付与 → AmazonSSMManagedInstanceCore → CloudWatch Logs への

    Put 権限など 必要に応じて VPC エンドポイントを追加 → ssm, ssmmessages, ec2 サーバに SSM エージェントをインストール → Amazon Linux にはプリインストール済 セッションマネージャーの始め方 (サーバ)
  9. 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 <instance id> で接続! セッションマネージャーの始め方 (クライアント)
  10. 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
  11. 26 SSM の通信を使ってサーバに SSH することができる → SSH ポートフォワードの通信経路としても利用可能 • Linux

    には SSM で直接接続 • RDS やリモートデスクトップは 踏み台経由のポートフォワード • 踏み台もポート開放不要 SSH ポートフォワードとして利用する
  12. 28 • SSH の管理が不要になる • IAM だけで権限管理ができる • 証跡や操作ログがしっかりと残る •

    ポートを閉じれるのでよりセキュアになる • 監査対応の工数を削減できる✨ EC2 の運用コストを下げるにはセッションマネージャーがおすすめ! まとめ: SSM セッションマネージャーはいいぞ