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

[目指せ上級者] 最強にセキュアなAWSアカウントの作り方

[目指せ上級者] 最強にセキュアなAWSアカウントの作り方

DevelopersIO 2022で登壇した資料です。
https://classmethod.jp/m/developers-io/

詳細な解説はブログをご参照ください。
https://dev.classmethod.jp/articles/devio-2022-how2make-strongest-aws-secure-accounts/

cm-usuda-keisuke

July 26, 2022
Tweet

More Decks by cm-usuda-keisuke

Other Decks in Technology

Transcript

  1. [⽬指せ上級者] 最強にセキュアな AWSアカウントの作り⽅ 2022/07/26 AWS事業本部 コンサルティング部 ⾅⽥佳祐 ハッシュタグ #devio2022

  2. みなさん AWSのセキュリティ確保してますか︖ (挨拶

  3. 3 ⾃⼰紹介 ⾅⽥佳祐(うすだけいすけ) ・クラスメソッド株式会社 AWS事業本部 シニアソリューションアーキテクト セキュリティチームリーダー AWS公認インストラクター 2021 APN

    Ambassador ・CISSP ・Security-JAWS運営 ・好きなサービス: Amazon Detective みんなのAWS (技術評論社)
  4. 4 セッションテーマ ⾃分たちの 最強のAWS環境を作ろう

  5. 5 セッション対象者 • プロジェクトのAWSアカウント管理者 • 組織のAWSアカウント管理者 • セキュリティ担当者 • セキュリティ責任者

    • AWS利⽤者
  6. 6 アジェンダ 0. ⻑い前置き 1. セキュアなアカウント単体の原理 2. ベンディングマシンとアカウント運⽤ 3. 最強にセキュアな運⽤

  7. 7 0. ⻑い前置き

  8. 8 セッション概要 • 中級者から上級者を⽬指すセッション • 最強のAWSアカウントを作っていく • どうやって︖

  9. 9 最強にセキュアなAWSアカウントとは︖ AWSには最初から利⽤すべきサービスが様々ある • CloudTrail • Config • GuardDuty •

    Security Hub • IAM Access Analyzer • Detective • などなど
  10. 10 最強にセキュアなAWSアカウントとは︖ これらが設定されていればセキュア︖

  11. 11 最強にセキュアなAWSアカウントとは︖ 後から増えるAWSリソースはセキュアかわからない セキュリティグループは 社内IPのみに制限されている︖ RDSのスナップショットを 公開していない︖ EC2のAMIは信頼できる︖ ALBのログは取得している︖ Lambdaは外部から

    アクセス・実⾏できない︖ API Gatewayは X-Rayを適⽤している︖ SageMakerは直接 インターネットにアクセス できない︖ CloudFrontはOAIを 利⽤している︖
  12. 12 つまり… 最強にセキュアなAWSアカウントを作る = 継続的にセキュアな状態を 組織で維持する仕組みを作る = セキュリティ運⽤設計

  13. 13 上級者を⽬指すなら 組織全体を巻き込んで すべてのAWS利⽤者が セキュリティを意識して セキュアな環境が⾃動的に維持される ⽂化を作るべし (上級者は巻き込むことが仕事)

  14. 14 このセッションでは • 最初にセキュリティを確保する仕組みを説明し • 次にそれを展開する⽅法を説明し • 最後に運⽤実装例を⽰す

  15. 15 アジェンダ(再掲) 0. ⻑い前置き 1. セキュアなアカウント単体の原理 2. ベンディングマシンとアカウント運⽤ 3. 最強にセキュアな運⽤

  16. 16 合わせて読みたい セキュリティ対策 はだいたいここに 全部ある https://dev.classmethod.j p/articles/aws-security- all-in-one-2021/

  17. 17 1. セキュアなアカウント単体の原理

  18. 18 いろんな対策があるけど どこからやっていけばいい︖

  19. 19 AWS Security Hubはベースラインの参考になる 直感的な スコア表 ⽰で達成 度がわか りやすい

  20. 20 AWS Security Hubはベースラインの参考になる • AWS Security Hubの「AWS基礎セキュリティベ ストプラクティス」によるセキュリティチェックは 各種AWSサービスの危険な設定を発⾒し、ベストプ

    ラクティスに基づいた設定へ導いてくれる SSHポートが開放 されていないか S3バケットが公開 されていないか ルートユーザーの アクセスキーを利 用していないか ALBのログが保 存されているか CloudTrailで証跡 を保存しているか EC2にパブリック IPが付与されてい ないか GuardDutyを有 効化しているか Lambda関数が公 開されていないか
  21. 21 セキュアアカウントが参考になります セキュアなAWS設 定と実運⽤の例 デフォルトでセキュ リティを強化した AWSアカウント発 ⾏も無償でしてます (宣伝) https://dev.classmethod.

    jp/articles/aws-security- operation-bestpractice- on-secure-account/
  22. 22 合わせて読みたい セキュアアカウ ントの仕組みの 説明とコツはこ ちらにあります https://dev.classme thod.jp/articles/220 408-training- webinar-aws-

    security- management/
  23. 23 こんな感じの設定が⼊っているといい

  24. 24 各種設定の概要とコツを解説

  25. 25 AWS上の証跡管理 • CloudTrail • すべての管理イベント • Config • すべてのリソース記録

    • グローバルリソース記録 • S3 • ログのライフサイクル3年 • SSE-KMSによる暗号化
  26. 26 AWS上の証跡管理のコツ • Configのグローバルリソース 記録は東京リージョンのみ有 効化する(全リージョンで⼊れ ると重複して記録されるため) • ライフサイクル3年は⾃社の ログ保持基準に照らし合わせ

    て調整する • WORMを設定すると強⼒
  27. 27 デフォルトのS3公開防⽌ • AWSアカウントレベルのブロックパ ブリックアクセスを有効化 • ブロックパブリックアクセスはアカウン トレベルとバケットレベルがある • アカウントレベルを設定するとAWSアカ

    ウント全体で適用される • うっかり公開してしまうことを防げる
  28. 28 デフォルトのS3公開防⽌のコツ • S3に公開⽤のHTML / CSS / JavaScriptなどのWeb⽤や画像/動 画などの静的コンテンツを配置する 場合でもCloudFrontのOrigin

    Access Identity (OAI)を利⽤して 配信可能なので、ブロックパブリッ クアクセスを無効化しない
  29. 29 EBSのデフォルト暗号化 • EC2の設定ページからEBSのデフォ ルト暗号化を有効にする • デフォルトの暗号化キーを利⽤する

  30. 30 EBSのデフォルト暗号化のコツ • マルチテナントで様々なライフサイ クルのデータを扱う場合は、ライフ サイクルに合わせてKMSキーを作成 して個別に適⽤するといい(暗号化削 除を実施するため) • https://aws.amazon.com/jp/b

    logs/news/data_disposal/
  31. 31 パスワードポリシー強化 • パスワードの最⼩⻑: 8⽂字 • 少なくとも1つの⼤⽂字が必要 • 少なくとも1つの⼩⽂字が必要 •

    少なくとも1つの数字が必要 • 少なくとも1つの英数字以外の⽂字が 必要 • ユーザーにパスワードの変更を許可
  32. 32 パスワードポリシー強化のコツ • ⼀番理想はIAM Userがいないこと • Okta / OneLoginなどIdPの基盤を AWSに限らず全体で使⽤し、ID管理

    とアクセス制御を集約するとベスト • 次点として1つのAWSアカウントにだ けIAM Userを作るJumpアカウント⽅ 式も検討する • Assume Roleしないと権限がないため、万 が一不正に利用されても何もできない
  33. 33 デフォルトVPCの削除 • 明⽰的な意図に合わせてVPCリソー スを作成し、利⽤するためデフォルト VPCを削除 • 既存環境であれば削除は慎重に

  34. 34 デフォルトVPCの削除のコツ • 特にデフォルトセキュリティグルー プが危険なので利⽤しない • 合わせて、利⽤しているVPCのデフ ォルトセキュリティグループにある インバウンドとアウトバウンドのル ール両⽅とも削除する

  35. 35 セキュリティサービス有効化 + チューニング • 有効化 • GuardDuty • Security

    hub • Detective • IAM Access Analyzer
  36. 36 セキュリティサービスのコツ • 集約可能なら複数 AWSアカウント をまとめて集約す る • 運⽤に組み込む

  37. 37 セキュリティアラート整形 + 通知設定 • Amazon GuardDuty / AWS Security

    Hub / AWS IAM Access Analyzerからの通知を 運⽤しやすい場所(チャットな ど)に送る • ⾒やすく整形する
  38. 38 セキュリティアラート整形 + 通知設定のコツ • 関係者が多い場所に通知してみ んなに⾒えるようにする • 関係者の当事者意識が上がり、通 知を減らし、セキュリティスコア

    を上げることがモチベーションに 繋がる
  39. 39 整形例: ⽇本語をできる限り⼊れる

  40. 40 1. セキュアなアカウント単体の原理のまとめ • AWSアカウント単体のセキュリティはSecurity Hubの内容を中⼼にセットアップしていけばいい • ⾃動的にセットアップする仕組みが必要 • 周りを巻き込む仕組みも必要

  41. 41 2. ベンディングマシンと アカウント運⽤

  42. 42 ベンディングマシンとは︖ • 新規のAWSアカウントを⽣成・セットアップする 仕組みの概念 • 必須のサービスを有効化したり、ベースラインの 環境を構築したりする • 実現⽅法はCloudFormation

    StackSetsや TerraformやAWS Organizationsを組み合わせ たり、AWS Control Towerを利⽤したりする
  43. 43 CloudFormation StackSets • AWS Organizationsがなくてもリージョンやアカ ウントをまたがるCloudFormation展開が可能

  44. 44 合わせて読みたい 簡単に全体を⾃動化 https://dev.classmethod. jp/articles/cloudformatio n-stacksets-sample-sns- topic/

  45. 45 合わせて読みたい AWS SummitでVisional 様が発表した内容 Terraformで全体へ展開 https://dev.classmethod.jp/articles/a ws-summit-online-2020-cus-06/

  46. 46 AWS Control Tower AWSのベストプラ クティスに従った構 成でガードレールを 効かせる仕組み AWS Organizationsと

    連携する
  47. 47 合わせて読みたい 最近のControl Tower事情はこちら で解説しています https://dev.class method.jp/articles /aws-control- tower-allin-2021/

  48. 48 合わせて読みたい Control Towerか ら拡張した仕組み を展開するベンデ ィングマシンを CDKでぽんと作れ るやつ https://dev.classmetho

    d.jp/articles/aws-cdk- account-setup-of-ct- from-step-functions/
  49. 49 合わせて読みたい Terraformと Control Towerを 連携させてベンデ ィングマシンを実 現するAFTの記事 https://dev.classme thod.jp/articles/aft-

    multi-regions- customization/
  50. 50 維持の仕組みも考える • 展開したら終わりではない • 継続的な更新が必要なものもある • CloudFormationでUpdateStackをするなどで 更新できるが、CFn未対応のリソースもある •

    Security Hubのコントロール設定とか • 各アカウントにIAM Roleを⽤意してスクリプトを 流し込んだり、CFnのカスタムリソースを駆使し て維持を検討する
  51. 51 Security Hubの親⼦関係 アクション 単位で親か ら管理でき ることと、 ⼦供でしか できないこ とが決まっ

    ている https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/securityhub-accounts-allowed-actions.html
  52. 52 2. ベンディングマシンとアカウント運⽤のまとめ • なんでもいいからベンディングマシンを⽤意する • 自分たちの選択できる、使いやすいものを • CDKでもTerraformでもなんでもいい •

    維持する仕組みを作る • 簡単にCloudFormationで展開できない設定などに注意 する • どちらも作って終わりじゃないので継続的にブラ ッシュアップするつもりで作って使う
  53. 53 3. 最強にセキュアな運⽤

  54. 54 ⼤事なこと • 利⽤できるAWSサービスも使うツールもAWSア カウントの数も満たしたい基準もみんな違う • 世の中の情報は参考になるけど全く⼀緒にはなら ない • 上級者として、⾃分たちの環境ではどうするか、

    という観点で運⽤設計する
  55. 55 セッションテーマ(再掲) ⾃分たちの 最強のAWS環境を作ろう

  56. 56 実装と運⽤の参考例を紹介 • ここでは下記を紹介する • 実装アーキテクチャ • 周りの巻き込み方 • 参考にしつつ⾃分たちならどうするか考えてほし

  57. 57 実装アーキテクチャ Security Hub集約と コンプライアンス違反Slack通知

  58. 58 要件 • 管理スコープ • 社内のAWSアカウントすべて • 本番用もあれば検証用もある • 管理条件

    • AWS Organizationsは利用しない • 管理対象の自由度を確保 • Security Hubの集約はできる
  59. 59 アーキテクチャ Security Hubは Organizations を利⽤しないで inviteして集約 ベンディングマシ ンにて集約を⾏う ついでに必要最低

    限のコントロール 無効化
  60. 60 アーキテクチャ 各AWSアカウン トの識別しやすい 名前とアカウント 種別、管理者の SlackIDを DynamoDBに登 録 違反がある場合に

    担当者にメンショ ン(DMしない)
  61. 61 アカウントの種類 2種類に分類 • 本番環境以外 • 外部提供するプロダクトの開発・検証環境 • 社内の個人検証環境 •

    本番環境 • 外部提供するプロダクトの本番環境
  62. 62 コントロールの対応⽅針 コントロールに応じた3種類の対応⽅針を策定 • 是正まで追跡 • 検知項目が是正されるまで管理者が追跡する • 7日以内の修正目標 •

    通知のみ • ユーザーに通知のみ、是正するかは任せる • 通知したら抑制済みとし、セキュリティスコア対象外 • 対応しない • 対応する必要なし、抑制済みにする
  63. 63 コントロールの分類 コントロールはある程度パターンが有り分類できる • 必須サービス・設定 • 可⽤性確保 • マルチAZやバックアップなど •

    ロギング • 通信中の暗号化 • 保管時の暗号化
  64. 64 ざっくり組み合わせ 分類 本番 本番環境以外 備考 必須サービス・ 設定 是正まで追跡 (基本的に)

    是正まで追跡 (基本的に) 実際はコントロール個別 での判断が多い 可⽤性確保 対応しない 対応しない 厳密なセキュリティ要件 ではないため管轄外 ロギング 是正まで追跡 対応しない 本番環境は⼤体のログは 必須とする 通信中の暗号化 是正まで追跡 是正まで追跡 現代のインターネットで は必須 保管時の暗号化 対応しない 対応しない ポリシーと規制要件のた めここでは管轄外
  65. 65 その他⽅針メモ • 運⽤上煩わしいものは対応しない • VPCフローログとか • WAF適⽤は本番で通知のみ • WAFが不要な対象もあるため

    • OS以上のレイヤーの脆弱性管理は管轄外 • SSMパッチコンプライアンスなど、別で管理する場合 も多いため
  66. 66 実装アーキテクチャ 是正までの追跡⽅法

  67. 67 ⾊々悩んだこと Security Hubの個別のFindingsのステータスを追 跡する仕組みは結構⾯倒 • 検知したらDynamoDBに登録する仕組み • ソートキーに検知日時を入れてデイリーでFindings一覧 を収集してすべてのステータスを確認する実装

    • パーティションキーがほぼ固定になり分散されない • GetFindingsでFindingsIDを指定して回すのは20個ずつの 制限がある
  68. 68 頑張らないことにした 代わりにセキュリティスコアを通知してこれを向上さ せることに注⼒してもらうことにした Security Hub⾃体の画⾯で簡単に状況が確認できる ←このスコアが達成状況 100%を⽬指す

  69. 69 Findingsの⾃動対応フロー 追跡しない項⽬はす べてワークフローの ステータスを抑制済 みとする 画⾯上で確認すべき 項⽬が明確になる

  70. 70 周りの巻き込み⽅ セキュリティスコアの 全体通知

  71. 71 セキュリティスコアはAPIで取得できない ので無理やり 取得してみた https://dev.clas smethod.jp/arti cles/get- control-finding- summary-by- boto3/

  72. 72 セキュリティスコアランキングを掲載 スコアが低い順じゃなくて、⾼い順Top10とかポジ ティブなランキングにする

  73. 73 100%達成を盛⼤に祝う ベースラインが100%の場合は達成した時に盛⼤に 祝う

  74. 74 周りの巻き込み⽅ 具体的なアクションを リクエストする通知

  75. 75 すぐに次の⾏動がわかる通知を • いつまでに対応すればいいか • どの程度重要か(⾼中低) • 何を判断すればいいか • どのアカウント/リソースか

    • 対応⽅法は
  76. 76 セキュリティグループが開いてるときの通知例 • 24時間以内に対応してください • 重要度: ⾼ • アタッチされているリソースに対するSSHを誰が 利⽤しているか確認してください

    • 999999999999: ap-northeast-1: test-sg • SSHのポートを特定IPのみに絞るか、閉じてくだ さい。Systems Manager Session Managerを 利⽤することでポートを閉じたままシェルを利⽤ することも可能です。<参考URL>
  77. 77 3. 最強にセキュアな運⽤まとめ • Security Hubの全体管理をするスコープ・要件を 定義する • やりすぎないように、任せるところは任せる •

    独⾃の実装と、Security Hub⾃体の機能でまかな うところの境界線を決める • ポジティブにみんな参加できる雰囲気作りを頑張 る
  78. 78 全体まとめ

  79. 79 全体まとめ • 単体のセキュアな設定もしつつ、組織の仕組みと して⾃動的にセキュリティが確保される運⽤を検 討する • アカウント払い出しとベンディングマシンで全体 に展開する基盤を作る •

    わかりやすい成果とポジティブな仕組みで周りを 巻き込み、全員がセキュリティを向上できるよう にする
  80. 80 セッションテーマ(再再掲) ⾃分たちの 最強のAWS環境を作ろう

  81. 81 やってみたら ネクストアクションは コミュニティで事例の紹介 Security-JAWSへの 登壇はいかがでしょうか︖

  82. 82 DevelopersIO 2022 謎解きクイズ DevelopersIO 2022 イベントサイトの ◦◦◦◦◦◦ を⾒よう︕ ◦◦◦◦◦◦

    の部分は下の画像がヒントだよ︕
  83. None