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

マルチアカウント環境への発見的統制の導入

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for ch1aki ch1aki
April 16, 2024

 マルチアカウント環境への発見的統制の導入

Avatar for ch1aki

ch1aki

April 16, 2024
Tweet

More Decks by ch1aki

Other Decks in Technology

Transcript

  1. 5

  2. 6

  3. 7

  4. 目次 • 背景 • AWS上での発見的統制の実現 • 課題 ◦ 複数アカウントのイベント集約 ◦

    全アカウントへの効率的な導入 • 運用 • その他導入時の困ったこと • まとめ
  5. 組織規模拡大によるセキュリティリスク増加懸念 • 組織規模の拡大で発生する変化 ◦ 管理するAWSアカウントやリソースが増加 ◦ アクセス権を持つ人が増加 • 結果、「内部統制の難易度上昇」「情報漏洩や内部不正リスク増加の懸念」 が考えられる

    • タイミーはリリース後のサービス成長と比例しエンジニア採用を加速、結 果、リリース当初比でエンジニアが7倍に増加した。同時に、リリース当初 から内部統制の重要性を感じていた。
  6. セキュリティ面で組織・サービスの成長を支えるために • 前提として完璧なセキュリティ対策は現実的に困難 ◦ 攻撃者優位で先回りの対策が難しい ◦ 使える予算・リソースは有限 ◦ デジタル庁の「政府情報システムにおけるクラウドサービスの適切な利用に係る基本方針」 (※)においても、「セキュリティと利便性とコストでバランスをとる」、「扱う情報の機

    密性等に応じたセキュリティ対策をとる」という基本方針 • 「リスクが高いものから優先的に対策を行う」考えが近年では一般的 1. 現状把握 2. 優先順位の決定 3. ロードマップ • 効果的なセキュリティ対策の戦略を立てられるよう、現状のリスクを網羅的 に把握できている状態が望ましい(=内部統制における発見的統制) ※ デジタル庁.「DS-310 政府情報システムにおけるクラウドサービスの適切な利用に係る基本方針」 . https://www.digital.go.jp/assets/contents/node/basic_page/field_ref_resources/e2a06143-ed29-4f1d-9c31-0f06fca67afc/5167e265/20230929_resources_standard_guidelines_guideline_01.pdf,(参照2024-04-09) (個人情報保護を含む法令遵守と消費者保護は大前提)
  7. AWSの発見的統制に関連するサービス • CloudTrail: アクティビティ,イベントを記録 • Config: リソース構成を監査・評価 • Detective: セキュリティ問題の調査支援

    • GuardDuty: 脅威検出 • Inspector: 脆弱性管理 • Security Hub: セキュリティチェックとイベント集約 方針に沿って現状を把握するため、 Security HubとGuardDutyで検知している
  8. Security Hub • AWSの様々なセキュリティソ リューションと連携し、検知した イベントを集約 • セキュリティ基準に反した設定が ないかをチェック •

    セキュリティチェックにはAWS Configの有効化が必要 • リージョナルサービスで、利用す るリージョン全てで有効化が推奨
  9. GuardDuty • CloudTrail, VPCフローログ等を継 続的にモニタリングし悪意がある と疑われる活動を見つける ◦ 例: EC2がC&Cサーバに通信している ◦

    例: 脅威リストのIPアドレスからAWSの APIが操作されている • リージョナルサービスで、利用す るリージョン全てで有効化が推奨
  10. AWS ConfigにOrgメンバーを有効化する機能がない • Security Hubのセキュリティチェックの バックエンドであるため有効化が必要 • 委任管理者の設定が行えるが、ルールの一 括管理やメンバーアカウントのイベントの 集約のみ

    • アカウント数 ✕ リージョン数 の有効化操 作が必要 • Org連携の有効化機能でないと、新たにア カウントを追加した際の手順が増えたり、 有効化を忘れる可能性がある
  11. Terraformとマルチリージョンの相性の悪さ • GuardDuty, AWS Configのマルチ リージョンの設定はIaCで省力化可 能ではある • Terraformで複数リージョンを操作 するにはその分Providerを定義

    し、resourceのprovider句で設定 が必要 • provider句にはfor_each等の構文 が適用不可のため、コードが冗長 になる provider "aws" { region = "primary" } provider "aws" { alias = "secondary" region = "secondary" } resource "aws_guardduty_detector" "primary" { enable = true } resource "aws_guardduty_detector" "secondary" { enable = true provider = aws.secondary } resource "aws_guardduty_organization_configuration" "primary" { auto_enable_organization_members = true detector_id = aws_guardduty_detector.primary.id } resource "aws_guardduty_organization_configuration" "secondary{ auto_enable_organization_members = true detector_id = aws_guardduty_detector.secondary.id provider = aws.secondary }
  12. 課題への対応 • Terraformでリージョン毎に行う必要のある設定をmodule化 • 普段利用しないリージョンをSecurity Control Policyで利用禁止にしてリス クを最小化し発見的統制導入の対象外に • AWS

    ConfigはCFn StackStesで有効化 ◦ StackStes: Org管理者からメンバーアカウントの指定リージョンへCFn Stackを作成可能 ◦ AWS公式ブログ(※)でもCFn StackSetsで有効化する方法が提案されていた。 ◦ 今回はスコープ外だったAWS ControlTowerの有効化によってAWS Configが有効化される が、その実態もCFn StackSetsであった。 ※ 「AWS Config ベストプラクティス」, Amazon Web Services ブログ, https://aws.amazon.com/jp/blogs/news/aws-config-best-practices/
  13. 結果 • 委任管理者の設定をmodule化&SCPでのリージョン制限により、冗長な Terraformコードが削減 ◦ 前: resource数 ✕ デフォルト有効の17リージョン ◦

    後: 1 module ✕ 許可された2リージョン • CFn StackSetsによりOrgメンバーアカウント追加時にSCPで許可された全リージョ ンにAWS Configを自動有効化することが実現 ◦ CFn StackSetsのAWS Config有効化サンプルをカスタムして利用 ◦ Org管理者アカウントへCFn StackSetsを設定。CFn StackSets自体はTerraformで管理 • 発見的統制を有効化するリージョンが減った分、コストも最適化された
  14. コントロールの「失敗」への対応 • Security Hubのセキュリティ基準に対する違反 = 「失敗」ステータス • 内容を確認し、是正すべきものかリスクが許容できるものであれば抑制ある いは無効化を検討して対応 ◦

    是正の例: 「rootユーザーにMFAを設定」 ◦ 抑制の例: 「Secrets Managerのシークレットは自動ローテーションをする」 ◦ 無効化の例: 「すべてのVPCでフローログを有効化」 • コントロールの無効化は以後全く検知されなくなってしまうため、リスク許 容は基本的には抑制を検討し必要に応じてコントロールの無効化を検討する ようにしている
  15. Terraform AWS provider未対応リソース • Security Hubの中央設定 ◦ 当初中央設定は出たばかりの機能でproviderで対応されていなかった ◦ しばらくはドキュメントで設定を示し運用でカバー

    ◦ 後日対応され、import済み ▪ [New]: Add resources for SecurityHub Central Configuration · Issue #34651 · hashicorp/terraform-provider-aws · GitHub • Security Hub Findings ◦ コントロールの抑制を行う際、経緯を記録したり承認を得るのをPRで行いたかった ◦ 抑制はFindingsに対して行うが、それに対応するリソースが現状無い ▪ [Enhancement]: aws_securityhub_batch_update_findings for suppression · Issue #29164 · hashicorp/terraform-provider-aws · GitHub ◦ workflowステータスの変更をする方法を別で用意する必要がある ▪ schubergphilis/mcaf-securityhub-findings-manager ▪ GitHub - pepabo/control-controls
  16. まとめ • セキュリティ面で成長を支えていけるようバランスの取れたセキュリティを 目指し、脅威やリスクの検知発見的統制と是正を行っている。 • SecurityHub, GuardDutyのAWS Organization連携機能などを活用したこと でマルチアカウント環境へ漏れなく導入が実現できた •

    Terraformでマルチリージョンのリソース管理はDRYに書きにくいなど相性 が悪い課題があったが、CFnStacSetsの利用やmodule化で改善できた • 運用面ではダッシュボード化や通知の工夫、運用ポリシーの明確化などを行 い継続的に運用できている