$30 off During Our Annual Pro Sale. View Details »

Fin-JAWS_Organizations_SCPを使ったマルチアカウント管理とPermissions_Boundaryの使いどころ

fumiakiueno
December 04, 2019

 Fin-JAWS_Organizations_SCPを使ったマルチアカウント管理とPermissions_Boundaryの使いどころ

「Fin-JAWS勉強会 第7回 ~ re:Invent 2019 ラスベガス現地スペシャル 開催!!」
で発表した資料です。
https://fin-jaws.doorkeeper.jp/events/100710

fumiakiueno

December 04, 2019
Tweet

More Decks by fumiakiueno

Other Decks in Technology

Transcript

  1. Organizations SCPを使ったマルチアカウント管理と Permissions Boundaryの使いどころ NRIネットコム株式会社 上野 史瑛 2019年12月4日

  2. Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 1 自己紹介

    名前: 上野 史瑛(うえの ふみあき) 所属: NRIネットコム株式会社 経歴: ・各種Webシステムのインフラ構築・運用 - サーバ、ネットワーク管理や構築がメイン - PCIDSS取得対応等にも参画 - オンプレとAWSの両方を経験 ・AWS技術検証や構成レビュー
  3. Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 2 マルチアカウント管理、やってますか?

  4. Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 3 昔よくやっていた構成

    XXXシステムアカウント 本番サーバ 検証サーバ 本番サービスアカウント 本番サーバ 検証サービスアカウント 検証サーバ または YYYシステム
  5. Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 4 最近の推奨構成

    マスターアカウント 監査アカウント ログアーカイブアカウント 本番サービス アカウント 開発サービス アカウント コアアカウント カスタムアカウント Organization OU GuardDuty SecurityHub Master Config SNS Topic S3 ・CloudTrailログ ・Configログ SSO OU
  6. Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 5 マルチアカウントになると何が起きるか

    プロジェクトチームやメンバーにAWSアカウントを払い出す ・AWSの知識が少ないと危険な操作をする可能性がある ・アカウント発行の都度、IAMで権限設定をするのがつらい、煩雑 (特に同レベルのアカウントを複数作成するとき) アプリケーション 開発アカウント 本番サービス アカウント AWS検証 アカウント 本番サービス VPC IAM VPC IAM IAM VPC Lambda Lambda Code Pipeline RDS RDS RDS EC2 EC2 EC2 Systems Manager 利用者 利用者 利用者 管理者 管理者 管理者 利用者が触れる範囲 ※管理者は全て触れる ⇒ Organizationsの「SCP」を使って複数アカウントの制御を楽にする!
  7. Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 6 SCP(Service

    Control Policy)
  8. Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 7 SCP(Service

    Control Policy)とは Master Account Account Account Account OU OU SCP SCP SCPサンプル { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "iam:CreateAccessKey" ], "Resource": "*" } ・・・ ・複数アカウント(OrganizationalUnit)または アカウント単位でIAM Policyのように Allow/Deny,Action,Resource,Conditionを 使用してアクセス許可設定が可能 ・OUは階層構造で作成でき、設定した上位のSCPは 下位のOUやAccountに引き継がれる ・アカウント内のIAMユーザー・ロールだけでなく rootアカウントにも適用される ・Denyを書く(BlackList)かAllowを書く(WhiteList) SCP適用イメージ 拒否 拒否 許可 IAM SCP
  9. Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 8 SCP適用例:アカウント構成およびSCP適用箇所

    マスターアカウント 監査アカウント ログアーカイブアカウント AWS検証 アカウント1 AWS検証 アカウント2 コアアカウント カスタムアカウント Organization OU GuardDuty SecurityHub Master Config SNS Topic S3 ・CloudTrailログ ・Configログ SSO OU ここのSCPを適用
  10. Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 9 SCP適用例:アカウント内の利用イメージ

    全体管理者 利用者 全アクセス許可 初期ユーザ作成 Role 利用者と同権限以下 Role作成 Role作成 同権限 ユーザ作成 アクセスキー作成禁止 Cloudtrail Config GuardDuty SecurityHub セキュリティサービス 無効化禁止 同権限ユーザ作成
  11. Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 10 SCP設定内容1

    { "Sid": "DenyAction", "Effect": "Deny", "Action": [ "iam:CreateAccessKey", "guardduty:Delete*", "cloudtrail:DeleteTrail", "cloudtrail:StopLogging" ], "Resource": [ "*" ], "Condition": { "StringNotLike": { "aws:PrincipalARN": [ "arn:aws:iam::*:role/SwitchAdminRole", ] } } }, DenyするActionを記載 管理者権限(Role)ではDenyしない
  12. Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 11 SCP設定内容2

    { "Sid": "DenyAccessToAdminRole", "Effect": "Deny", "Action": [ "iam:AttachRolePolicy", "iam:DeleteRole", "iam:DeleteRolePermissionsBoundary", "iam:DeleteRolePolicy", "iam:DetachRolePolicy", "iam:PutRolePermissionsBoundary", "iam:PutRolePolicy", "iam:UpdateAssumeRolePolicy", "iam:UpdateRole", "iam:UpdateRoleDescription" ], "Resource": [ "arn:aws:iam::*:role/SwitchAdminRole“ ], "Condition": { "StringNotLike": { "aws:PrincipalARN": [ "arn:aws:iam::*:role/SwitchAdminRole" ] } } } 管理者権限の設定変更は 管理者のみができるように
  13. Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 12 Permissions

    Boundary
  14. Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 13 Permissions

    Boudaryの使いどころ SCPだけではダメなのか・・? ・自アカウント内のみ設定が可能でSCPが使えない場合 ・アカウント内で権限を複数に分けたい場合(このあと説明) ⇒こういった場合はPermissions Boundaryも検討
  15. Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 14 アカウント内で権限を複数に分けたい場合

    全体管理者 利用者 全アクセス許可 初期ユーザ作成 Role 利用者と基本的には同権限 ただし、ユーザー作成不可 Role作成 Role作成 同権限 ユーザ作成 アクセスキー作成禁止 Cloudtrail Config GuardDuty SecurityHub セキュリティサービス 無効化禁止 同権限ユーザ作成禁止 利用者の権限よりもRoleの権限を小さくしたい →Permissions Boundaryで実現 ※利用者側はSCPでもOK
  16. Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 15 Permissions

    Boundaryの運用 利用者 Role Role作成可 「Condition:StringNotEquals:iam:PermissionsBoundary」条件により、 IAM Role作成時(IAMユーザーも設定可)にPermissions Boundaryの付与を強制させる。 IAM Policy Permissions Boundary 参考:PermissionBoundaryの仕組み 拒否 拒否 許可 IAM Permission Boundary IAM Policy Role
  17. Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 16 Permissions

    Boundary用 IAMポリシー設定内容1 { "Effect": "Deny", "Action": [ "iam:CreateUser" ], "Resource": "*" }, { "Sid": "DenyCreateOrChangeRoleWithoutBoundary", "Effect": "Deny", "Action": [ "iam:CreateRole", "iam:PutRolePolicy", "iam:DeleteRolePolicy", "iam:AttachRolePolicy", "iam:DetachRolePolicy", "iam:PutRolePermissionsBoundary" ], "Resource": "*", "Condition": { "StringNotEquals": { "iam:PermissionsBoundary": arn:aws:iam::[AccountID]:policy/RolePermissionsBoundary" } } }, DenyするActionを記載 ※SCPで記載済みであれば追加でDenyするAction Permissions Boundaryが付いてない場合は作成をDeny
  18. Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 17 Permissions

    Boundary用 IAMポリシー設定内容2 { "Sid": "DenyBoundaryPolicyEdit", "Effect": "Deny", "Action": [ "iam:CreatePolicyVersion", "iam:DeletePolicy", "iam:DeletePolicyVersion", "iam:SetDefaultPolicyVersion" ], "Resource": "arn:aws:iam::[AccountID]:policy/RolePermissionsBoundary", } 自分自身のPermissions Boundaryを変更できないようにする
  19. Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 18 Permissions

    Boundary利用イメージ ・PermissionBoundary無しの場合Role作成不可 ・PermissionBoundaryありの場合Role作成可
  20. Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 19 まとめ

  21. Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 20 SCP、Permissions

    Boundary まとめ ・SCP、Permissions Boundaryどちらも 「IAM権限を利用者側に作成させたい、でも作成させるIAMの権限は限定したい」 という場合に有効。一部操作できないActionを設定するのにも有効 ・利用者、管理者どちらも許可した操作ができるという意味ではどちらも同じ SCP Permissions Boundary ・複数アカウントに一括設定が可能 ・アカウント作成時に自動設定(OU配下) ・アカウント単位で設定(一括はCFnを検討) ・IAMユーザー/Role作成時に一操作追加 ・Organizationsの設定が必要 ・ユーザー側に拒否されている操作は見えない ・1アカウントでも対応可能 ・ユーザー側で拒否されている操作が見える 拒否 拒否 許可 利用者 全体管理者 ⇒基本的にはSCPを使えばOK、必要に応じてPermissions Boundaryを使用する