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

AWS account and user management design in asken

AWS account and user management design in asken

2022/08/30(火)
asken 「インフラ設計」勉強会
https://asken.connpass.com/event/257419/
「asken における AWS アカウント、ユーザー管理設計」発表資料

資料内リンク
Control Tower
https://aws.amazon.com/jp/controltower/

AWS Organizations における組織単位のベストプラクティス
https://aws.amazon.com/jp/blogs/news/best-practices-for-organizational-units-with-aws-organizations/

AWS Organizations と AWS Control Tower を使ったマルチアカウント管理
https://aws.amazon.com/jp/blogs/news/managing-the-multi-account-environment-using-aws-organizations-and-aws-control-tower/

必須のガードレール - AWS Control Tower
https://docs.aws.amazon.com/ja_jp/controltower/latest/userguide/mandatory-guardrails.html

強く推奨されるガードレール
https://docs.aws.amazon.com/ja_jp/controltower/latest/userguide/strongly-recommended-guardrails.html

選択的ガードレール
https://docs.aws.amazon.com/ja_jp/controltower/latest/userguide/elective-guardrails.html

Kazuki Numazawa

August 30, 2022
Tweet

More Decks by Kazuki Numazawa

Other Decks in Technology

Transcript

  1. 自己紹介 resource "human" "kazuki_numazawa" { name = "沼沢 一樹" company

    = "株式会社 asken" role = "Infrastructure Engineer" description = <<EOT バックエンドエンジニアからインフラエンジニアへ転身して早 8年。 AWS を用いた IT インフラの設計構築運用に従事。 SRE も チョットダケワカル。 AWS ウルトラクイズ 2016 チャンピオン。 EOT my_favorite_aws_service = "Lambda, EventBridge" }
  2. ▪ 話すこと ✔ asken での Organizations の設計 ✔ 適用しているガードレール、セキュリティ系サービスの話 ✔

    ユーザー、アクセス管理 ▪ 話さないこと ✔ Organizations や Control Tower 等、AWS の各サービス自体の 詳細な説明や関連した用語の解説 今日話すこと
  3. まずやったこと ▪ Organizations の管理アカウントとなる AWS アカウントを新規発行 ▪ 管理アカウントで作業するための最低限の設定 ✔ root

    ユーザーに MFA 設定 ✔ Admin 権限 IAM ユーザー発行、ログイン後 MFA 設定 AWS アカウント管理
  4. AWS Control Tower は、ランディングゾーンと呼ばれる安全なマルチアカウント AWS 環境をセットアップおよび管理する ための最も簡単な方法を提供します。 
 AWS Organizations

    を使用してランディングゾーンを作成し、継続的なアカウント管理とガバナンス、およびクラウドに移 行する数千のお客様と連携してきた AWS の経験に基づいた実装のベストプラクティスを提供 します。
 構築担当者は新しい AWS アカウントを数クリックだけでプロビジョンでき、しかもアカウントは貴社のポリシーに準拠して いるという安心感が得られます。 https://aws.amazon.com/jp/controltower/ より引用 AWS アカウント管理 Control Tower
  5. 設計時に参考にした情報 AWS アカウント管理 ▪ AWS Organizations における組織単位のベストプラクティス | Amazon Web

    Services ブログ ▪ AWS Organizations と AWS Control Tower を使ったマルチアカウント管理 | Amazon Web Services ブログ
  6. AWS アカウント管理 - OU 設計 Foundational OU ▪ Control Tower

    によって作成される OU ▪ 監査用アカウント、ログ集約用アカウントが稼働 ✔ この2つのアカウントも Control Tower が作成、設定するもの
  7. AWS アカウント管理 - OU 設計 Workload OU ▪ ソフトウェアライフサイクルに関連する AWS

    アカウント用 OU ▪ 子 OU として Corporate、Production、SDLC を用意 ✔ 管理をしやすくするため↑の単位で OU を分離
  8. AWS アカウント管理 - OU 設計 SDLC OU ▪ 本番環境ではないアカウントのための OU

    ▪ ステージング環境、開発環境のアカウントを所属させる ▪ SDLC は Software Development Life Cycle の略称
  9. AWS アカウント管理 - OU 設計 Suspended OU ▪ クローズ予定の AWS

    アカウント置き場 ▪ 不要になったアカウントはここへ移動し、一定期間経過後に削除 ▪ ここに配置した AWS アカウントは Control Tower と一部の権限以外は操 作できないようにする SCP を別途付与
  10. AWS アカウント管理 - OU 設計 PolicyStaging OU ▪ SCP の変更を検証するための

    OU ▪ ここで検証し、問題ないと判断してから適用することで、設定ミスによる事故 を防ぐことを目的としている
  11. AWS アカウント管理 - OU 設計 AWS Organizations における組織単位のベストプラクティス には 他にも様々な

    OU があるが、今の asken に必要そうなものだけに絞りました。 将来的には Sandbox OU 等の導入も検討したいところです。 その他の OU は追々検討
  12. AWS アカウント管理 - 各 OU のガードレール Control Tower から提供されるガイダンスには3つのカテゴリがある ▪

    必須のガードレール ✔ 強制的に適用されるもの ▪ 強く推奨されるガードレール ✔ マルチアカウント運用のベストプラクティスを適用するように設計されたガードレール ▪ 選択的ガードレール ✔ AWS エンタープライズ環境で一般的に制限されている制限事項
  13. AWS アカウント管理 - 各 OU のガードレール このうち「必須のガードレール」には Config / CloudTrail

    の有効化や Control Tower 関連のリソースに対する操作禁止のルールなどがあり、 Control Tower 管理化になったアカウントに強制的に適用されます。 全ては紹介できないので、詳細は以下をご参照ください。 必須のガードレール - AWS Control Tower
  14. AWS アカウント管理 - 各 OU のガードレール ここでは、「強く推奨されるガードレール」「選択的ガードレール」の うち、各 OU で有効化しているガードレールを「予防」と「発見」に

    分けて紹介します。 なお、親子関係にある OU では、親 OU で設定されている ガードレールは子 OU でも有効となります。
  15. ▪ 予防的ガードレール ✔ ルートユーザーのアクセスキーの作成を許可しない ▪ 発見的ガードレール ✔ ルートユーザーの MFA が有効になっているかどうかを検出する

    ✔ Amazon S3 バケットへのパブリック読み取りアクセスが許可されているかどうかを検出する ✔ Amazon S3 バケットへのパブリック書き込みアクセスが許可されているかどうかを検出する AWS アカウント管理 - 各 OU のガードレール Foundational OU
  16. ▪ 予防的ガードレール ✔ ルートユーザーのアクセスキーの作成を許可しない ▪ 発見的ガードレール ✔ Amazon RDS データベースインスタンスへのパブリックアクセスが有効になっているかどうかを検出する

    ✔ Amazon RDS データベーススナップショットへのパブリックアクセスが有効になっているかどうかを検出する AWS アカウント管理 - 各 OU のガードレール Workload OU
  17. ▪ 発見的ガードレール ✔ 無制限の着信 TCP トラフィックが許可されているかどうかを検出する ✔ SSH を介した無制限のインターネット接続が許可されているかどうかを検出する ✔

    ルートユーザーの MFA が有効になっているかどうかを検出する ✔ Amazon S3 バケットへのパブリック読み取りアクセスが許可されているかどうかを検出する ✔ Amazon S3 バケットへのパブリック書き込みアクセスが許可されているかどうかを検出する AWS アカウント管理 - 各 OU のガードレール Workload OU
  18. ▪ 発見的ガードレール ✔ Amazon EC2 インスタンスの Amazon EBS 最適化が有効になっているかどうかを検出する ✔

    Amazon EBS ボリュームが Amazon EC2 インスタンスにアタッチされているかどうかを検出する ✔ Amazon EC2 インスタンスにアタッチされた Amazon EBS ボリュームの暗号化が有効になっているかどうかを検出する ✔ Amazon RDS データベースインスタンスのストレージ暗号化が有効になっているかどうかを検出する AWS アカウント管理 - 各 OU のガードレール Production OU
  19. AWS アカウント管理 - 各 OU のガードレール ▪ 予防的ガードレール ✔ ルートユーザーのアクセスキーの作成を許可しない

    ▪ 発見的ガードレール ✔ ルートユーザーの MFA が有効になっているかどうかを検出する Suspended OU、PolicyStaging OU
  20. AWS アカウント管理 - 各 OU のガードレール OU 予防的ガードレール 発見的ガードレール Foundational

    OU ・ルートユーザーのアクセスキーの作成を許可しない ・ルートユーザーの MFA が有効になっているかどうかを検出する ・Amazon S3 バケットへのパブリック読み取りアクセスが許可されているかどうかを検出する ・Amazon S3 バケットへのパブリック書き込みアクセスが許可されているかどうかを検出する Workload OU ・ルートユーザーのアクセスキーの作成を許可しない ・ルートユーザーの MFA が有効になっているかどうかを検出する ・Amazon RDS データベースインスタンスへのパブリックアクセスが有効になっているかどうかを検出する ・Amazon RDS データベーススナップショットへのパブリックアクセスが有効になっているかどうかを検出する ・無制限の着信 TCP トラフィックが許可されているかどうかを検出する ・SSH を介した無制限のインターネット接続が許可されているかどうかを検出する ・Amazon S3 バケットへのパブリック読み取りアクセスが許可されているかどうかを検出する ・Amazon S3 バケットへのパブリック書き込みアクセスが許可されているかどうかを検出する Production OU (Workload OU の子) ・Amazon EC2 インスタンスの Amazon EBS 最適化が有効になっているかどうかを検出する ・Amazon EBS ボリュームが Amazon EC2 インスタンスにアタッチされているかどうかを検出する ・Amazon EC2 インスタンスにアタッチされた Amazon EBS ボリュームの暗号化が有効になっているかどうかを検出する ・Amazon RDS データベースインスタンスのストレージ暗号化が有効になっているかどうかを検出する SDLC OU (Workload OU の子) Corporate OU (Workload OU の子) Suspended OU ・ルートユーザーのアクセスキーの作成を許可しない ・ルートユーザーの MFA が有効になっているかどうかを検出する PolicyStaging OU ・ルートユーザーのアクセスキーの作成を許可しない ・ルートユーザーの MFA が有効になっているかどうかを検出する
  21. ▪ Config と CloudTrail は Control Tower によって有効化されている ▪ ここにさらに、全

    アカウントで GuardDuty, Security Hub, Detective も有効化 ▪ Security Hub で検知した内容は Slack に通知 AWS アカウント管理 - セキュリティ系サービス
  22. AWS アカウント管理 - セキュリティ系サービス ▪ GuardDuty, Config, Security Hub, Detective

    は Audit アカウントに管理を委任 ✔ これによって 監査系のオペレーションを Audit アカウント上でのみ行えるように • 必要な人にだけ Audit アカウントに対して必要な権限を与えることができる • Organizations 管理アカウントへのアクセスを増やさずに済む • 管理アカウントには Organizations を管理する人と請求を確認する人だけにアクセスさせる
  23. ユーザー、アクセス管理 - Before ▪ 誰がどのアカウントにあるのかわかりづらい ▪ 利用していないユーザーが残っている ▪ MFA 設定が強制できていない

    ▪ 都度ログイン↔ログアウトを繰り返すのが面倒 ▪ ユーザー管理の運用が無い (棚卸等) アカウントごとに IAM ユーザーが散在
  24. ユーザー、アクセス管理 - AWS SSO 導入 ▪ Organizations の導入を機に、AWS SSO(※) によるログインに移行

    ▪ 以前から会社で利用していた OneLogin を ID プロバイダとして利用 ✔ OneLogin は認証、AWS は認可を担当 ※ AWS SSO は 2022年7月に「AWS IAM Identity Center」という名称に変更されていますが、本資料では SSO のまま説明します
  25. ユーザー、アクセス管理 - AWS SSO 導入 ▪ OneLogin 管理と AWS 管理は別のチームが行っている

    ✔ ガバナンスの向上 ▪ OneLogin 側では MFA を強制 ✔ AWS アクセスの際の認証が強固なものに
  26. ユーザー、アクセス管理 - AWS SSO 導入 After ▪ ユーザーは OneLogin 側で全て管理(管理の一元化)

    ▪ OneLogin 側で MFA 設定を強制 ▪ AWS アカウント間の移動がシームレスに ✔ 利用者は OneLogin にログインすれば良い ▪ OneLogin のアカウント削除は退職と紐付いている ✔ 削除漏れのリスク低減 認証は OneLogin、認可は AWS
  27. グループ名 説明 Administrators AWS の管理者用グループ。 Organizations 配下の AWS アカウント全てに Administrator

    権限で ログインすることができる。 Accounting 経理メンバー用グループ。 請求周りの閲覧を行うメンバー用グループ。 AllEngineers エンジニア全員用グループ。 Workload OU 配下の全ての AWS アカウントに対する ReadOnly 権 限を付与する。 ユーザー、アクセス管理 - グループ設計
  28. ユーザー、アクセス管理 - アクセス権限セット 名前 権限の内容と用途 付与ポリシー Administrator Administrator 権限。 Administrators

    グループ(AWS 管理者用グループ) にしか付与しない。 ・AdministratorAccess(Managed) BillingCheck 請求確認用権限。 Accounting グループ(経理メンバー用グループ )にし か付与しない。 ・Billing(Managed) PowerUser PowerUser 権限。 一般エンジニアにも、本番環境以外で付与。 IAM、Organizations、Account 以外の全ての操作 が可能。 ・PowerUserAccess(Managed) ・iam:PassRole 権限等、足りない権限入りのインラインポリシー Production 本番環境用権限。 本番環境における致命的なオペレーションミスを抑止 するため、必要な権限のみ付与。 ・システムで利用している AWS サービスのフルアクセスのインラインポリシー   例) “ec2:*” ・禁止操作を定義したインラインポリシー   例) RDS のインスタンス削除禁止 等
  29. ユーザー、アクセス管理 - アクセス権限セット 名前 権限の内容と用途 付与ポリシー AIOperation AI 業務に必要な権限。 機械学習等で必要となる権限のみ付与。

    ・必要な AWS サービスのフルアクセスのマネージドポリシーを付与   例) AmazonSageMakerFullAccess 等 ・禁止操作を定義したインラインポリシー   例) S3 バケットの削除禁止 等 S3Operation S3 への操作を行うメンバー用の権限。 開発者以外のメンバーで必要な場合に割り当てる。 ・AmazonS3FullAccess(Managed) ・禁止操作を定義したインラインポリシー   例) S3 バケットの削除禁止 等 ReadOnly 読み取り専用権限。 ・ReadOnlyAccess(Managed) ・AWSSupportAccess(Managed)
  30. EOF