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

    View Slide

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

    View Slide

  3. 3
    ⾃⼰紹介
    ⾅⽥佳祐(うすだけいすけ)
    ・クラスメソッド株式会社
    AWS事業本部
    シニアソリューションアーキテクト
    セキュリティチームリーダー
    AWS公認インストラクター
    2021 APN Ambassador
    ・CISSP
    ・Security-JAWS運営
    ・好きなサービス:
    Amazon Detective
    みんなのAWS
    (技術評論社)

    View Slide

  4. 4
    セッションテーマ
    ⾃分たちの
    最強のAWS環境を作ろう

    View Slide

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

    View Slide

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

    View Slide

  7. 7
    0. ⻑い前置き

    View Slide

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

    View Slide

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

    View Slide

  10. 10
    最強にセキュアなAWSアカウントとは︖
    これらが設定されていればセキュア︖

    View Slide

  11. 11
    最強にセキュアなAWSアカウントとは︖
    後から増えるAWSリソースはセキュアかわからない
    セキュリティグループは
    社内IPのみに制限されている︖
    RDSのスナップショットを
    公開していない︖
    EC2のAMIは信頼できる︖
    ALBのログは取得している︖
    Lambdaは外部から
    アクセス・実⾏できない︖
    API Gatewayは
    X-Rayを適⽤している︖
    SageMakerは直接
    インターネットにアクセス
    できない︖
    CloudFrontはOAIを
    利⽤している︖

    View Slide

  12. 12
    つまり…
    最強にセキュアなAWSアカウントを作る

    継続的にセキュアな状態を
    組織で維持する仕組みを作る

    セキュリティ運⽤設計

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  20. 20
    AWS Security Hubはベースラインの参考になる
    • AWS Security Hubの「AWS基礎セキュリティベ
    ストプラクティス」によるセキュリティチェックは
    各種AWSサービスの危険な設定を発⾒し、ベストプ
    ラクティスに基づいた設定へ導いてくれる
    SSHポートが開放
    されていないか
    S3バケットが公開
    されていないか
    ルートユーザーの
    アクセスキーを利
    用していないか
    ALBのログが保
    存されているか
    CloudTrailで証跡
    を保存しているか
    EC2にパブリック
    IPが付与されてい
    ないか
    GuardDutyを有
    効化しているか
    Lambda関数が公
    開されていないか

    View Slide

  21. 21
    セキュアアカウントが参考になります
    セキュアなAWS設
    定と実運⽤の例
    デフォルトでセキュ
    リティを強化した
    AWSアカウント発
    ⾏も無償でしてます
    (宣伝)
    https://dev.classmethod.
    jp/articles/aws-security-
    operation-bestpractice-
    on-secure-account/

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  25. 25
    AWS上の証跡管理
    • CloudTrail
    • すべての管理イベント
    • Config
    • すべてのリソース記録
    • グローバルリソース記録
    • S3
    • ログのライフサイクル3年
    • SSE-KMSによる暗号化

    View Slide

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

    View Slide

  27. 27
    デフォルトのS3公開防⽌
    • AWSアカウントレベルのブロックパ
    ブリックアクセスを有効化
    • ブロックパブリックアクセスはアカウン
    トレベルとバケットレベルがある
    • アカウントレベルを設定するとAWSアカ
    ウント全体で適用される
    • うっかり公開してしまうことを防げる

    View Slide

  28. 28
    デフォルトのS3公開防⽌のコツ
    • S3に公開⽤のHTML / CSS /
    JavaScriptなどのWeb⽤や画像/動
    画などの静的コンテンツを配置する
    場合でもCloudFrontのOrigin
    Access Identity (OAI)を利⽤して
    配信可能なので、ブロックパブリッ
    クアクセスを無効化しない

    View Slide

  29. 29
    EBSのデフォルト暗号化
    • EC2の設定ページからEBSのデフォ
    ルト暗号化を有効にする
    • デフォルトの暗号化キーを利⽤する

    View Slide

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

    View Slide

  31. 31
    パスワードポリシー強化
    • パスワードの最⼩⻑: 8⽂字
    • 少なくとも1つの⼤⽂字が必要
    • 少なくとも1つの⼩⽂字が必要
    • 少なくとも1つの数字が必要
    • 少なくとも1つの英数字以外の⽂字が
    必要
    • ユーザーにパスワードの変更を許可

    View Slide

  32. 32
    パスワードポリシー強化のコツ
    • ⼀番理想はIAM Userがいないこと
    • Okta / OneLoginなどIdPの基盤を
    AWSに限らず全体で使⽤し、ID管理
    とアクセス制御を集約するとベスト
    • 次点として1つのAWSアカウントにだ
    けIAM Userを作るJumpアカウント⽅
    式も検討する
    • Assume Roleしないと権限がないため、万
    が一不正に利用されても何もできない

    View Slide

  33. 33
    デフォルトVPCの削除
    • 明⽰的な意図に合わせてVPCリソー
    スを作成し、利⽤するためデフォルト
    VPCを削除
    • 既存環境であれば削除は慎重に

    View Slide

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

    View Slide

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

    View Slide

  36. 36
    セキュリティサービスのコツ
    • 集約可能なら複数
    AWSアカウント
    をまとめて集約す

    • 運⽤に組み込む

    View Slide

  37. 37
    セキュリティアラート整形 + 通知設定
    • Amazon GuardDuty / AWS
    Security Hub / AWS IAM
    Access Analyzerからの通知を
    運⽤しやすい場所(チャットな
    ど)に送る
    • ⾒やすく整形する

    View Slide

  38. 38
    セキュリティアラート整形 + 通知設定のコツ
    • 関係者が多い場所に通知してみ
    んなに⾒えるようにする
    • 関係者の当事者意識が上がり、通
    知を減らし、セキュリティスコア
    を上げることがモチベーションに
    繋がる

    View Slide

  39. 39
    整形例: ⽇本語をできる限り⼊れる

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  43. 43
    CloudFormation StackSets
    • AWS Organizationsがなくてもリージョンやアカ
    ウントをまたがるCloudFormation展開が可能

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  48. 48
    合わせて読みたい
    Control Towerか
    ら拡張した仕組み
    を展開するベンデ
    ィングマシンを
    CDKでぽんと作れ
    るやつ
    https://dev.classmetho
    d.jp/articles/aws-cdk-
    account-setup-of-ct-
    from-step-functions/

    View Slide

  49. 49
    合わせて読みたい
    Terraformと
    Control Towerを
    連携させてベンデ
    ィングマシンを実
    現するAFTの記事
    https://dev.classme
    thod.jp/articles/aft-
    multi-regions-
    customization/

    View Slide

  50. 50
    維持の仕組みも考える
    • 展開したら終わりではない
    • 継続的な更新が必要なものもある
    • CloudFormationでUpdateStackをするなどで
    更新できるが、CFn未対応のリソースもある
    • Security Hubのコントロール設定とか
    • 各アカウントにIAM Roleを⽤意してスクリプトを
    流し込んだり、CFnのカスタムリソースを駆使し
    て維持を検討する

    View Slide

  51. 51
    Security Hubの親⼦関係
    アクション
    単位で親か
    ら管理でき
    ることと、
    ⼦供でしか
    できないこ
    とが決まっ
    ている
    https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/securityhub-accounts-allowed-actions.html

    View Slide

  52. 52
    2. ベンディングマシンとアカウント運⽤のまとめ
    • なんでもいいからベンディングマシンを⽤意する
    • 自分たちの選択できる、使いやすいものを
    • CDKでもTerraformでもなんでもいい
    • 維持する仕組みを作る
    • 簡単にCloudFormationで展開できない設定などに注意
    する
    • どちらも作って終わりじゃないので継続的にブラ
    ッシュアップするつもりで作って使う

    View Slide

  53. 53
    3. 最強にセキュアな運⽤

    View Slide

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

    View Slide

  55. 55
    セッションテーマ(再掲)
    ⾃分たちの
    最強のAWS環境を作ろう

    View Slide

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

    View Slide

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

    View Slide

  58. 58
    要件
    • 管理スコープ
    • 社内のAWSアカウントすべて
    • 本番用もあれば検証用もある
    • 管理条件
    • AWS Organizationsは利用しない
    • 管理対象の自由度を確保
    • Security Hubの集約はできる

    View Slide

  59. 59
    アーキテクチャ
    Security Hubは
    Organizations
    を利⽤しないで
    inviteして集約
    ベンディングマシ
    ンにて集約を⾏う
    ついでに必要最低
    限のコントロール
    無効化

    View Slide

  60. 60
    アーキテクチャ
    各AWSアカウン
    トの識別しやすい
    名前とアカウント
    種別、管理者の
    SlackIDを
    DynamoDBに登

    違反がある場合に
    担当者にメンショ
    ン(DMしない)

    View Slide

  61. 61
    アカウントの種類
    2種類に分類
    • 本番環境以外
    • 外部提供するプロダクトの開発・検証環境
    • 社内の個人検証環境
    • 本番環境
    • 外部提供するプロダクトの本番環境

    View Slide

  62. 62
    コントロールの対応⽅針
    コントロールに応じた3種類の対応⽅針を策定
    • 是正まで追跡
    • 検知項目が是正されるまで管理者が追跡する
    • 7日以内の修正目標
    • 通知のみ
    • ユーザーに通知のみ、是正するかは任せる
    • 通知したら抑制済みとし、セキュリティスコア対象外
    • 対応しない
    • 対応する必要なし、抑制済みにする

    View Slide

  63. 63
    コントロールの分類
    コントロールはある程度パターンが有り分類できる
    • 必須サービス・設定
    • 可⽤性確保
    • マルチAZやバックアップなど
    • ロギング
    • 通信中の暗号化
    • 保管時の暗号化

    View Slide

  64. 64
    ざっくり組み合わせ
    分類 本番 本番環境以外 備考
    必須サービス・
    設定
    是正まで追跡
    (基本的に)
    是正まで追跡
    (基本的に)
    実際はコントロール個別
    での判断が多い
    可⽤性確保 対応しない 対応しない 厳密なセキュリティ要件
    ではないため管轄外
    ロギング 是正まで追跡 対応しない 本番環境は⼤体のログは
    必須とする
    通信中の暗号化 是正まで追跡 是正まで追跡 現代のインターネットで
    は必須
    保管時の暗号化 対応しない 対応しない ポリシーと規制要件のた
    めここでは管轄外

    View Slide

  65. 65
    その他⽅針メモ
    • 運⽤上煩わしいものは対応しない
    • VPCフローログとか
    • WAF適⽤は本番で通知のみ
    • WAFが不要な対象もあるため
    • OS以上のレイヤーの脆弱性管理は管轄外
    • SSMパッチコンプライアンスなど、別で管理する場合
    も多いため

    View Slide

  66. 66
    実装アーキテクチャ
    是正までの追跡⽅法

    View Slide

  67. 67
    ⾊々悩んだこと
    Security Hubの個別のFindingsのステータスを追
    跡する仕組みは結構⾯倒
    • 検知したらDynamoDBに登録する仕組み
    • ソートキーに検知日時を入れてデイリーでFindings一覧
    を収集してすべてのステータスを確認する実装
    • パーティションキーがほぼ固定になり分散されない
    • GetFindingsでFindingsIDを指定して回すのは20個ずつの
    制限がある

    View Slide

  68. 68
    頑張らないことにした
    代わりにセキュリティスコアを通知してこれを向上さ
    せることに注⼒してもらうことにした
    Security Hub⾃体の画⾯で簡単に状況が確認できる
    ←このスコアが達成状況
    100%を⽬指す

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  76. 76
    セキュリティグループが開いてるときの通知例
    • 24時間以内に対応してください
    • 重要度: ⾼
    • アタッチされているリソースに対するSSHを誰が
    利⽤しているか確認してください
    • 999999999999: ap-northeast-1: test-sg
    • SSHのポートを特定IPのみに絞るか、閉じてくだ
    さい。Systems Manager Session Managerを
    利⽤することでポートを閉じたままシェルを利⽤
    することも可能です。

    View Slide

  77. 77
    3. 最強にセキュアな運⽤まとめ
    • Security Hubの全体管理をするスコープ・要件を
    定義する
    • やりすぎないように、任せるところは任せる
    • 独⾃の実装と、Security Hub⾃体の機能でまかな
    うところの境界線を決める
    • ポジティブにみんな参加できる雰囲気作りを頑張

    View Slide

  78. 78
    全体まとめ

    View Slide

  79. 79
    全体まとめ
    • 単体のセキュアな設定もしつつ、組織の仕組みと
    して⾃動的にセキュリティが確保される運⽤を検
    討する
    • アカウント払い出しとベンディングマシンで全体
    に展開する基盤を作る
    • わかりやすい成果とポジティブな仕組みで周りを
    巻き込み、全員がセキュリティを向上できるよう
    にする

    View Slide

  80. 80
    セッションテーマ(再再掲)
    ⾃分たちの
    最強のAWS環境を作ろう

    View Slide

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

    View Slide

  82. 82
    DevelopersIO 2022 謎解きクイズ
    DevelopersIO 2022 イベントサイトの ○○○○○○ を⾒よう︕
    ○○○○○○ の部分は下の画像がヒントだよ︕

    View Slide

  83. View Slide