Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 2 マルチアカウント管理、やってますか?

Slide 4

Slide 4 text

Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 3 昔よくやっていた構成 XXXシステムアカウント 本番サーバ 検証サーバ 本番サービスアカウント 本番サーバ 検証サービスアカウント 検証サーバ または YYYシステム

Slide 5

Slide 5 text

Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 4 最近の推奨構成 マスターアカウント 監査アカウント ログアーカイブアカウント 本番サービス アカウント 開発サービス アカウント コアアカウント カスタムアカウント Organization OU GuardDuty SecurityHub Master Config SNS Topic S3 ・CloudTrailログ ・Configログ SSO OU

Slide 6

Slide 6 text

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」を使って複数アカウントの制御を楽にする!

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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を適用

Slide 10

Slide 10 text

Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 9 SCP適用例:アカウント内の利用イメージ 全体管理者 利用者 全アクセス許可 初期ユーザ作成 Role 利用者と同権限以下 Role作成 Role作成 同権限 ユーザ作成 アクセスキー作成禁止 Cloudtrail Config GuardDuty SecurityHub セキュリティサービス 無効化禁止 同権限ユーザ作成

Slide 11

Slide 11 text

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しない

Slide 12

Slide 12 text

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" ] } } } 管理者権限の設定変更は 管理者のみができるように

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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を変更できないようにする

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

Copyright© 2019 NRI Netcom, Ltd. All Rights Reserved. 19 まとめ

Slide 21

Slide 21 text

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を使用する