Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

AWS Organizations

サーバーワークスの社内勉強会で発表した資料です。
(少し社外向けに修正してます)

  • Be the first to comment

  • Be the first to like this

AWS Organizations

  1. 1. AWS Organizations勉強会 2020年4⽉14⽇ 株式会社サーバーワークス SRE部CSM課 渡辺信秀
  2. 2. ⽬次 1. AWS Organizationsがない時代のマルチアカウント 2. AWS Organizationsの基本機能 3. AWS Organizationsと連携するサービス 4. AWS Organizationsのその他の機能 5. AWS Organizations利⽤が前提条件となるサービス 6. 複数アカウントの設計の難しいところ 2
  3. 3. 1.AWS Organizationsがない時代の マルチアカウント
  4. 4. AWS Organizationsがない時代 1つのアカウントで開始 4 subnet-private01 subnet-public01 subnet-private02 IGW ALB subnet-private03 subnet-private04 RDS VPC EC2 EC2 EC2 EC2 RDS subnet-public02 S3Route 53
  5. 5. AWS Organizationsがない時代 何らかの原因でアカウントが増える 5 subnet-private01 subnet-public01 subnet-private02 IGW ALB subnet-private03 subnet-private04 RDS VPC EC2 EC2 EC2 EC2 RDS subnet-public02 S3Route 53 AWSアカウント1(本番用) subnet-private01 subnet-public01 subnet-private02 IGW ALB subnet-private03 subnet-private04 RDS VPC EC2 EC2 EC2 EC2 RDS subnet-public02 S3Route 53 AWSアカウント2(検証用)
  6. 6. どんどん増える AWS Organizationsがない時代 6 部⾨・サービスで 料⾦計算したい セキュリティ的に 分けたい AWSアカウント2 (検証用) AWSアカウント4 (新サービス本番用) AWSアカウント5 (新サービス検証用) AWSアカウント6 (共用サービス用) AWSアカウント3 (請求アカウント) AWSアカウント1 (本番用)
  7. 7. Consolidated Billing(⼀括請求) AWS Organizationsがない時代 7 Linkedアカウント Linkedアカウント Linkedアカウント Linkedアカウント Linkedアカウント Payerアカウント AWS 請求 支払い
  8. 8. 2.AWS Organizationsの基本機能
  9. 9. AWS Organizationsの登場 2017年2⽉、AWS Organizationsの⼀般公開。3つの機能が紹介。 アカウントへのポリシー適⽤ APIを通じたアカウントの作成 ⼀括請求(従来通り) 9 https://aws.amazon.com/jp/about-aws/whats-new/2017/02/aws-organizations-now-generally-available/
  10. 10. 2.AWS Organizationsの基本機能 10 2-1.アカウントへのポリシー適⽤
  11. 11. 組織機能の有効化(すべての機能 or ⼀括請求機能) すべての機能 この機能セットは AWS Organizations を使⽤するにあたって推奨され、⼀括請 求機能が含まれています。組織を作成する際、デフォルトではすべての機能が有 効化されています。すべての機能が有効になっていると、サービスコントロール ポリシー (SCP) およびタグポリシーなどの AWS Organizations で利⽤できる ⾼度なアカウント管理機能を使⽤できます。 ⼀括請求機能 すべての組織ではこの機能サブセットがサポートされ、これによって組織内のア カウント管理を⼀元化するために使⽤できる基本的な管理ツールが提供されます。 11 https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_manage_org_support-all-features.html 従来のConsolidated Billingと同じ Organizationsの機能をフルに使うにはこちら
  12. 12. AWS Organizationsで使われる⽤語 Organization 組織 マスターアカウント 組織に1つだけ存在。⼀括請求やOrganizationsの⾊々な機能を利⽤できる。 メンバーアカウント 組織に所属するマスターアカウント以外のアカウント Root Organizationツリー構造のトップ OU (Organization Unit) アカウントをまとめるもの。IAM Groupのような位置づけ。 SCP (Service Control Policy) IAM Policyのようなもので、 jsonで記述される。 アカウントにも適⽤できるがOUへの適⽤が推奨。 OU配下のアカウントの権限を制限する 制限された動作の実⾏は、各アカウントではrootでもAdministratorでも不可能 12
  13. 13. すべての機能を有効化 ⼀括請求以外の機能を使うには、すべての機能を有効に 13
  14. 14. AWS Organizations導⼊後の初期状態 FullAWSAccessというSCPがRootに適⽤されている 14 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*" } ] } Organzation マスターアカウント Root SCP適用 FullAWSAccess
  15. 15. OUとメンバーアカウントの作成 OUを作成し、配下にメンバーアカウントを作成 15 Organzation マスターアカウント Root OU メンバーアカウント FullAWSAccess SCP適用 継承 上位階層に適⽤されたSCPは、 強制的に下位に継承される
  16. 16. OUとメンバーアカウントの作成 OUの下位にOUを作成も可能 16 Organzation マスターアカウント Root OU OU OU OUメンバーアカウント メンバーアカウント メンバーアカウント メンバーアカウント FullAWSAccess SCP適用 継承 継承
  17. 17. OUとメンバーアカウントの作成 必要に応じて制限するSCPを適⽤する 17 Organzation マスターアカウント Root OU OU OU OUメンバーアカウント メンバーアカウント メンバーアカウント メンバーアカウント FullAWSAccess SCP適用 Service Controll PolicySCP適用 継承 継承 継承 継承 Service Controll Policy SCP適用
  18. 18. SCPで実現できることの例 例 1: ユーザーによる AWS CloudTrail の無効化を禁⽌する 例 2: ユーザーによる Amazon CloudWatch の無効化または設定の変更を禁⽌する 例 3: ユーザーによる Amazon VPC フローログの削除を禁⽌する 例 4: ユーザーによる AWS Config の無効化またはルールの変更を禁⽌する 例 5: インターネットアクセスに接続されていない VPC を使⽤した取得を禁⽌する 例 6: リクエストされたリージョンに基づいて、AWS へのアクセスを拒否する 例 7: IAM プリンシパルで特定の変更ができないようにする 例 8: IAM プリンシパルで管理者を除き、特定の変更ができないようにする 例 9: Amazon S3 バケットにおける暗号化を必要とする 例 10: 指定するタイプを使⽤するよう Amazon EC2 インスタンスに要求する 例 11: Amazon EC2 インスタンスを停⽌するよう MFA に要求する 例 12: ルートユーザーの Amazon EC2 へのアクセス制限する 例 13: リソース作成時にタグをリクエストする 18 https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_manage_policies_example-scps.html#example-scp-restricts-with-exception
  19. 19. 例 1: ユーザーによる AWS CloudTrail の無効化を禁⽌する cloudtrail:StopLoggingのみを禁⽌ 19 { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "cloudtrail:StopLogging", "Resource": "*" } ] } https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_manage_policies_example-scps.html#example_scp_1
  20. 20. 例 8: IAM プリンシパルで管理者を除き、特定の変更ができな いようにする Conditionで特定のPrincipalを例外として扱う 20 { "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAccessWithException", "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/role-to-deny" ], "Condition": { "StringNotLike": { "aws:PrincipalARN":"arn:aws:iam::*:role/role-to-allow" } } } ] } https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_manage_policies_example-scps.html#example-scp-restricts-with-exception
  21. 21. SCP を使⽤した戦略 SCPの特性 上位で設定したDenyを、下位でAllowで上書きはできない 何も設定しないと、暗黙のDenyがある 各アカウントには、必ず最低1つのSCP適⽤が必要 SCPの制限(IAMポリシーとの主な違い) Principalは利⽤不可 Condition・Resourceは、Denyのみ利⽤可能 SCP を使⽤した戦略 SCP を拒否リストとして使⽤する SCP を許可リストとして使⽤する 21 https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/SCP_strategies.html
  22. 22. タグポリシー Organizations内のリソース作成時にタグポリシーへの「⾮準拠を検知」ま たは「準拠を強制する(⾮準拠をブロック)」 タグがポリシーに準拠しているかの検知なので、そもそもポリシーが無い場合は 検知できない タグ無しのリソース禁⽌にはSCPを使う 例 13: リソース作成時にタグをリクエストする 作成済みリソースへの影響はない 22 https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_manage_policies_tag-policies.html
  23. 23. タグポリシーの例 23 { "tags": { "Project": { "tag_value": [ "A", "B" ], "tag_key": "Project" }, "CostCenter": { "tag_value": [ "Production", "Test" ], "tag_key": "CostCenter" } } } https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_manage_policies_example-tag-policies.html
  24. 24. マスターアカウントの確認⽅法 メンバーアカウントのマネージメントコンソール AWS Organizationsのページ 組織IDは確認できるが、マスターアカウントIDは確認できない Billingのページ 請求⽀払いアカウント IAM Role OrganizationAccountAccessRole 24
  25. 25. 2.AWS Organizationsの基本機能 25 2-2. APIを通じたアカウントの作成
  26. 26. アカウントの作成 1.マスターアカウントから作成 26
  27. 27. アカウントの作成 2. メールを2通受信する Your AWS Account is Ready - Get Started Now Welcome to Amazon Web Services 3. ルートのパスワードが不明なのでリセットする 27 「12 か⽉間の無料利⽤枠を利⽤して試し てみよう」的なことが記載されているが、 基本的に無料利⽤枠は使えません。 (理由は後述)
  28. 28. 2.AWS Organizationsの基本機能 28 2-3.⼀括請求
  29. 29. AWS利⽤料⾦への影響 組織内のすべてのアカウントを 1 つのアカウントとして扱う Reserved Instance / Savings Plans(Good) 組織内のすべてのアカウントは、他のアカウントで購⼊したReserved Instance / Savings Plansのコスト利点を受けることができる(割引共有を無効にすることも可 能) ボリューム割引(Good) データ転送や Amazon S3 などのいくつかのサービスには、特定の使⽤状況ディメ ンションにわたってボリューム料⾦階層があり、サービスを多く利⽤するほど価格が 低くなります。すべてのアカウントの使⽤量を合算し、適⽤すべきボリューム料⾦階 層を決定するため、請求総額を低くできる。 無料利⽤枠(Bad) 各アカウントごとには適⽤されない。組織で1枠だけ。 29
  30. 30. Savings Plans を推奨値を参考に4種類購⼊してみました (2019年11⽉22⽇) サーバーワークスでは、エンジニアは「検証⽤AWSアカウント」が「社員1⼈つ き1つ」与えられます。また、この各検証⽤AWSアカウントを統合するマスター アカウント(Payer)があり、このマスターアカウントにおいて Savings Plans の推奨を⾒てみますと「Savings Plans を買ったら結構コスト削減できるな」と いうことに気付いたので社⻑を説得してSavings Plansを買ってもらうことに しました。 http://blog.serverworks.co.jp/tech/2019/11/22/create-savings-plan/ Savings Plansの購⼊について 30
  31. 31. 3.AWS Organizations と連携するサービス
  32. 32. 信頼できる組織アクセス マスターアカウント側から、メンバーアカウントの設定をできる機能 何でもできるというわけではない 32 https://aws.amazon.com/jp/about-aws/whats-new/2018/03/aws-organizations-trusted-organization-access/
  33. 33. 信頼できる組織アクセス タグポリシー AWS Artifact AWS CloudFormation StackSets AWS CloudTrail AWS コンピューティングオプティマイザー AWS Config AWS Directory Service AWS Firewall Manager AWS License Manager AWS Resource Access Manager AWS Service Catalog AWS Single Sign-On AWS Systems Manager 33 対応サービス 必要に応じて有効化
  34. 34. 3.AWS Organizationsと連携するサービス 34 3-1.CloudFormation StackSets
  35. 35. CloudFormation StackSets 35 https://aws.amazon.com/jp/about-aws/whats-new/2020/02/aws-cloudformation-stacksets-introduces-automatic- deployments-across-accounts-and-regions-through-aws-organizations/
  36. 36. CloudFormation StackSets StackSets⾃体はOrganizations未使⽤でも可能だが、機能が追加された 従来は初期設定(アカウント間の権限設定)が⼤変だったが、不要に 従来はデプロイターゲットがアカウント指定だったが、OU・組織へも可能に ⾃動デプロイを有効化すると、今後作成されるアカウントにも⾃動適⽤(プロビジョニング機能) 36
  37. 37. 3.AWS Organizationsと連携するサービス 37 3-2.CloudTrail
  38. 38. CloudTrail 簡単にログを集約できる OrganizationsでCloudTrailの証跡を⼀元管理 http://blog.serverworks.co.jp/tech/2020/02/29/organizations_cloudtrail/ 38
  39. 39. 3.AWS Organizationsと連携するサービス 39 3-3.Systems Manager
  40. 40. Systems Manager Systems Manager全体が統合されるわけではない。 Exploreという機能だけが統合可能 「データエクスポート」で1つのS3バケットに出⼒できる(OrganizationsマスターのS3バケット) 例えば、InventoryのデータはOrganizationsでは同期できない しかし、 Organizations と関係なく、「リソースデータの同期」で別アカウントのS3バケットに出⼒できる 各アカウントの各リージョン単位で設定する必要がある Explorerとは https://aws.amazon.com/jp/about-aws/whats-new/2019/11/introducing-aws-systems-manager-explorer/ EC2 インスタンスの概要やパッチのコンプライアンスなど、関連する運⽤データの概要をグラフィカルに表⽰する運 ⽤ダッシュボードです。Explorer を使⽤すると、AWS アカウントとリージョン全体の運⽤データを表⽰して、注意、 調査、修復が必要な場所を確認できます。 Explorer は AWS Organizations と統合され、AWS アカウントとリージョン全体でこのデータを集約して表⽰でき ます。 40
  41. 41. ExploreとInventoryで別々のデータ管理 41
  42. 42. 3.AWS Organizationsと連携するサービス 42 3-4.AWS Organizationsと無関係のマ スター
  43. 43. GuardDuty、Security Hub いくつかのAWSサービスでは、マスターアカウント・メンバーアカウント の構造を持つ これらはAWS Organizationsとは関係がない 43 https://docs.aws.amazon.com/ja_jp/guardduty/latest/ug/guardduty_accounts.html https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/securityhub-accounts.html
  44. 44. 4.AWS Organizationsのその他の機能
  45. 45. 4.AWS Organizationsのその他の機能 45 4-1.Organization内のスイッチロール
  46. 46. メンバーアカウントへのアクセス 条件 マスターアカウントのマネージメントコンソールで、メンバーアカウントを作成 すると メンバーアカウントにIAM ロールOrganizationAccountAccessRoleが⾃動作成 つまり マスターアカウントのIAMユーザーがsts:AssumeRoleできる権限があれば、メ ンバーアカウントへ管理者権限でスイッチロールが可能 この仕様を知らないとセキュリティーホールになる可能性がある。 マスターアカウントへのIAMユーザー作成は最⼩限にしたほうが無難。 46 https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_manage_accounts_access.html#orgs_manage_accounts_access-cross-account-role OrganizationAccountAccessRole ・アクセス権限︓AdministratorAccess ・信頼関係︓マスターアカウント
  47. 47. 4.AWS Organizationsのその他の機能 47 4-2. IAM / S3バケットポリシー
  48. 48. IAM / S3バケットポリシー aws:PrincipalOrgID PrincipalにOrgainizationを指定できる aws:PrincipalOrgPaths PrincipalにOUを指定できる 48 { "Version": "2012-10-17", "Statement": { "Sid": "AllowPutObject", "Effect": "Allow", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::policy-ninja-dev/*", "Condition": {"StringEquals": {"aws:PrincipalOrgID":["o-xxxxxxxxxxx"]} } } } "Condition" : { "ForAnyValue:StringLike" : { "aws:PrincipalOrgPaths":["o-a1b2c3d4e5/r-f6g7h8i9j0example/ou- ghi0-awsccccc/ou-jkl0-awsddddd/*"] }} https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_condition-keys.html
  49. 49. 5.AWS Organizations利⽤が 前提条件となるサービス
  50. 50. AWS Single Sign-On / AWS Firewall Manager 50 https://docs.aws.amazon.com/ja_jp/singlesignon/latest/userguide/prereqs.html https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/fms-prereq.html
  51. 51. AWS Single Sign-On OneLoginやOktaのような役割のサービス AWS Single Sign-On(SSO)でAWSアカウントへシングルサインオン http://blog.serverworks.co.jp/tech/2020/03/06/sso/ 51
  52. 52. AWS Control Tower サービス概要 AWS Service Catalog、AWS シングルサインオン、AWS Organizations など、 を裏で利⽤して、コンプライアンス的に⾃動的にイケてるマルチアカウント構成 を作れるサービス 利⽤制限 現在は新規のアカウントでしか利⽤できない。既にいろいろ使っている場合は移⾏で きないらしい。 52 https://docs.aws.amazon.com/ja_jp/controltower/latest/userguide/getting-started-with-control-tower.html
  53. 53. 6.複数アカウントの設計の難しいところ
  54. 54. 6.複数アカウントの設計の難しいところ 54 6-1. SCP設計
  55. 55. SCPで制限すること、IAMで制限すること どのアカウントで何を制限するかの定義が必要 アカウントレベルで制限するのか、IAMレベルで制限するのか SCP を使⽤した戦略 https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/SCP _strategies.html 55
  56. 56. 6.複数アカウントの設計の難しいところ 56 6-2. ログの集約
  57. 57. 全てのログを集約・管理・活⽤したい 57 実施すること • ログを制御可能な場所で⼀元 管理する。 利点 • 削除・改変などのリスクを減 らす • まとまっていることでSplunk等 から利⽤しやすくなる 対象のログ • GuardDuty • VPC Flowlogs • CloudTrail • AWS Config • Inspector • etc
  58. 58. S3バケット構成例 Source Bucket PATH GuardDuty awslogs-guardduty-<account-id> /AWSLogs/<account-id>/GuardDuty/<region>/YYYY/MM/DD/〜.jsonl.gz VPC Flowlogs awslogs-vpcflowlogs-<account-id> /AWSLogs/<account-id>/vpcflowlogs/<region>/YYYY/MM/DD/〜.log.gz CloudTrail awslogs-cloudtrail-<account-id> /<organization-id>/<account-id>/CloudTrail/<region>/YYYY/MM/DD/〜.json.gz /<organization-id>/<account-id>/CloudTrail-Digest/<region>/YYYY/MM/DD/〜.json.gz AWS Config awslogs-config-<account-id> /AWSLogs/<account-id>/Config/<region>/YYYYY/MM/DD/ConfigHistory/〜.json.gz /AWSLogs/<account-id>/Config/<region>/YYYYY/MM/DD/ConfigSnapshot/〜.json.gz Inspector awslogs-inspector-<account-id> /AWSLogs/<account-id>/Inspector/<region>/ 58 • アカウントID、リージョン名で、階層化されていれば、上書きされる⼼配が無い。 • Inspector、GuardDuty、VPC Flowlogs等は、Organizationsと関係がないので個別設定になるが、 CloudFormation StackSetsで設定
  59. 59. Security Hubの存在 セキュリティ系ログはSecurity Hubに集約してログ出⼒も考えられる GuardDuty -> EventBridge -> SNS、S3(via Firehose) GuardDuty 結果形式で出⼒される https://docs.aws.amazon.com/ja_jp/guardduty/latest/ug/guardduty_finding -format.html GuardDuty -> Security Hub -> EventBridge -> SNS、S3(via Firehose) AWS Security Finding 形式で出⼒される https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/securityhu b-findings-format.html 59
  60. 60. 6.複数アカウントの設計の難しいところ 60 6-3.ユーザーID管理
  61. 61. 踏み台アカウントを使う 61 実施すること • 踏み台アカウントでIAMユー ザーを⼀元管理する 利点 • IAMユーザーの追加・削除など を1箇所で⾏うことができる。 ※ この⽅式では、ユーザーの権 限管理は各アカウントで⾏う。
  62. 62. AWS Single Sign-Onを使う 62 実施すること • 踏み台アカウントでユーザー を⼀元管理する (IAMユーザーは作成しない。 AWS SSO・もしくはActive Directoryのユーザーを利⽤) 利点 • IAMユーザーの追加・削除など を1箇所で⾏うことができる。 ※ この⽅式では、ユーザーの権 限管理もマスターアカウントで⾏ う。
  63. 63. Okta / OneLoginを使う 63 実施すること • Active DirectoryとOktaを同期 • OktaをSAML IDPとして利⽤ 利点 • ユーザーは既存のOktaから AWS含む全てのアプリへログ インできる。

×