AWS Organizations マルチアカウント管理と統制ガイド

AWS Organizationsは、複数のAWSアカウントを中央管理するサービスです。組織全体でのアカウント作成、統合請求、ガバナンス制御を提供し、大規模なクラウド環境において一貫したセキュリティポリシーとコスト管理を実現します。

AWS Organizations の基本概念

組織構造の基本要素

1. 組織(Organization)

すべてのAWSアカウントを管理する最上位のコンテナです。組織には一つの管理アカウント(旧マスターアカウント)と複数のメンバーアカウントが含まれます。

2. 管理アカウント(Management Account)

組織を作成し、統制するアカウントです。すべての組織機能にアクセスでき、請求とアカウント管理の責任を持ちます。

yaml
管理アカウントの責任:
  アカウント管理:
    - 新規アカウント作成
    - 招待とアカウント移動
    - 組織からの削除
  
  ポリシー管理:
    - Service Control Policies (SCP)
    - Tag Policies
    - Backup Policies
  
  請求管理:
    - 統合請求の設定
    - コスト配分
    - 予算設定と監視

3. メンバーアカウント

組織に参加しているアカウントです。招待による参加または組織内での直接作成が可能です。

4. 組織単位(Organizational Units, OUs)

アカウントをグループ化し、階層的な管理を可能にする論理的なコンテナです。

yaml
OU設計例:
  Production:
    - Production-Web
    - Production-Data
    - Production-Shared
  
  Non-Production:
    - Development
    - Staging
    - Testing
  
  Security:
    - Security-Tools
    - Compliance
    - Audit-Logs

マルチアカウント戦略

アカウント分離パターン

環境別分離

yaml
環境別アカウント設計:
  開発環境:
    - 開発者の自由度を最大化
    - コスト最適化重視
    - 制限の緩いセキュリティポリシー
  
  ステージング環境:
    - 本番環境に近い設定
    - 統合テスト用途
    - 本番データの匿名化版
  
  本番環境:
    - 最高レベルのセキュリティ
    - 厳格なアクセス制御
    - 完全な監査ログ

機能別分離

yaml
機能別アカウント設計:
  ネットワークアカウント:
    - 共有VPC・Transit Gateway
    - DNS管理
    - ネットワークファイアウォール
  
  セキュリティアカウント:
    - 中央セキュリティ監視
    - GuardDuty・Security Hub
    - 監査ログ収集
  
  共有サービスアカウント:
    - Active Directory
    - CI/CD パイプライン
    - 共有ツール

データ分類別分離

yaml
データ分類別設計:
  機密データアカウント:
    - PCI DSS準拠
    - 強化されたKMS制御
    - 専用インスタンス使用
  
  内部データアカウント:
    - 標準的なセキュリティ制御
    - 部門別アクセス制御
    - データ保護ポリシー
  
  パブリックデータアカウント:
    - 制限の緩いアクセス制御
    - 外部共有可能
    - コスト効率重視

Service Control Policies (SCP)

SCPの基本概念

SCPは組織内のIAMユーザーとロールが実行できるアクションを制限するポリシーです。明示的な拒否のみを行い、権限を付与することはありません。

SCP評価ロジック

yaml
権限決定プロセス:
  1. IAMポリシーによる権限付与
  2. SCPによる制限確認
  3. 両方でALLOWされたアクションのみ実行可能

実践的なSCP設計

基本的なセキュリティ制御

json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyLeavingOrg",
      "Effect": "Deny",
      "Action": [
        "organizations:LeaveOrganization",
        "account:CloseAccount"
      ],
      "Resource": "*"
    },
    {
      "Sid": "DenyBillingAccess",
      "Effect": "Deny",
      "Action": [
        "aws-portal:*",
        "budgets:*",
        "cur:*"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalOrgID": "o-example1234567"
        }
      }
    },
    {
      "Sid": "RequireMFAForHighRiskActions",
      "Effect": "Deny",
      "Action": [
        "iam:CreateUser",
        "iam:DeleteUser",
        "iam:CreateRole",
        "iam:DeleteRole"
      ],
      "Resource": "*",
      "Condition": {
        "BoolIfExists": {
          "aws:MultiFactorAuthPresent": "false"
        }
      }
    }
  ]
}

地域制限ポリシー

json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "RestrictRegions",
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:RequestedRegion": [
            "us-east-1",
            "us-west-2",
            "eu-west-1"
          ]
        },
        "ForAnyValue:StringNotEquals": {
          "aws:PrincipalServiceName": [
            "cloudfront.amazonaws.com",
            "iam.amazonaws.com",
            "route53.amazonaws.com",
            "support.amazonaws.com",
            "trustedadvisor.amazonaws.com"
          ]
        }
      }
    }
  ]
}

開発環境向け制限ポリシー

json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyExpensiveInstances",
      "Effect": "Deny",
      "Action": [
        "ec2:RunInstances"
      ],
      "Resource": "arn:aws:ec2:*:*:instance/*",
      "Condition": {
        "ForAnyValue:StringNotEquals": {
          "ec2:InstanceType": [
            "t3.micro",
            "t3.small",
            "t3.medium",
            "t2.micro",
            "t2.small",
            "t2.medium"
          ]
        }
      }
    },
    {
      "Sid": "DenyProductionResources",
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Environment": "Production"
        }
      }
    }
  ]
}

統合請求とコスト管理

統合請求の利点

1. コスト可視化

yaml
コスト管理機能:
  統合ダッシュボード:
    - アカウント別コスト分析
    - サービス別使用量
    - 地域別コスト分散
  
  レポーティング:
    - Cost and Usage Reports
    - 詳細請求レポート
    - カスタムコスト配分

2. ボリューム割引

yaml
スケールメリット:
  Reserved Instances:
    - 組織全体でのRI共有
    - 最適な利用率実現
    - 自動的な割引適用
  
  Savings Plans:
    - 組織レベルでのコミット
    - 柔軟な利用配分
    - 最大コスト削減

コスト配分とタグ戦略

タグ戦略設計

yaml
タグ標準化:
  必須タグ:
    - Environment: [Production, Staging, Development]
    - Project: [プロジェクト名]
    - Owner: [責任者]
    - CostCenter: [コストセンター]
  
  オプションタグ:
    - Application: [アプリケーション名]
    - Schedule: [運用スケジュール]
    - Backup: [バックアップ要否]

コスト配分ルール

yaml
配分設定:
  部門別配分:
    - タグベース自動配分
    - 直接コストと間接コスト
    - 共有リソースの按分
  
  プロジェクト別配分:
    - プロジェクトタグによる分類
    - 期間限定プロジェクト対応
    - ROI計算のためのコスト追跡

アカウント作成とプロビジョニング

アカウント作成戦略

自動アカウント作成

yaml
自動化パターン:
  Service Catalog:
    - 標準化されたアカウントテンプレート
    - 承認ワークフロー
    - 自動的な初期設定
  
  Control Tower:
    - ガードレール自動適用
    - 標準的なOU配置
    - 統合ログ設定

アカウント初期設定

yaml
ベースライン設定:
  セキュリティ設定:
    - CloudTrail有効化
    - Config有効化
    - GuardDuty有効化
  
  ネットワーク設定:
    - VPC作成
    - Transit Gateway接続
    - DNS設定
  
  監視設定:
    - CloudWatch設定
    - アラート設定
    - ダッシュボード作成

AWS Control Tower 統合

Control Tower の主要機能

1. ランディングゾーン

yaml
ランディングゾーン構成:
  管理構造:
    - ルートOU
    - セキュリティOU
    - サンドボックスOU
    - カスタムOU
  
  基本アカウント:
    - 管理アカウント
    - 監査アカウント
    - ログアーカイブアカウント

2. ガードレール

yaml
ガードレール分類:
  必須ガードレール:
    - CloudTrail有効化
    - S3バケット公開読み取り禁止
    - S3バケット公開書き込み禁止
  
  推奨ガードレール:
    - MFA必須化
    - EBS暗号化強制
    - RDS暗号化強制
  
  選択ガードレール:
    - 特定インスタンスタイプ制限
    - 地域制限
    - カスタムコンプライアンス

Account Factory

セルフサービスアカウント作成

yaml
Account Factory設定:
  アカウントテンプレート:
    - 事前設定されたネットワーク
    - 必須セキュリティ設定
    - 監視とログ設定
  
  承認プロセス:
    - 自動承認ルール
    - 手動承認フロー
    - エスカレーションプロセス

セキュリティとコンプライアンス

中央セキュリティ管理

セキュリティハブ統合

yaml
Security Hub設定:
  中央セキュリティ監視:
    - 全アカウントの脆弱性集約
    - コンプライアンススコア
    - 自動修復アクション
  
  脅威検出:
    - GuardDuty統合
    - Inspector統合
    - Macie統合

アクセス制御

yaml
クロスアカウントアクセス:
  AssumeRole設計:
    - 中央管理されたロール
    - 最小権限原則
    - 監査可能なアクセス
  
  ID統合:
    - AWS SSO統合
    - Active Directory連携
    - SAML 2.0プロバイダー

コンプライアンス管理

AWS Config 組織全体設定

yaml
Config組織設定:
  設定記録:
    - 全アカウント統一設定
    - 中央集約データ保存
    - 変更追跡とコンプライアンス
  
  コンプライアンスルール:
    - 組織全体適用ルール
    - 例外管理プロセス
    - 自動修復設定

運用とガバナンス

組織レベル監視

CloudWatch 組織全体監視

yaml
監視設定:
  メトリクス集約:
    - アカウント横断メトリクス
    - カスタムダッシュボード
    - 統合アラート設定
  
  ログ管理:
    - 中央ログ収集
    - ログ保持ポリシー
    - セキュリティログ分析

コスト異常検知

yaml
コスト監視:
  異常検知:
    - AI/MLベース検知
    - しきい値アラート
    - 自動エスカレーション
  
  予算管理:
    - アカウント別予算
    - プロジェクト別予算
    - 自動アクション設定

変更管理とガバナンス

ポリシー管理

yaml
ポリシー更新プロセス:
  変更管理:
    - Infrastructure as Code
    - 段階的ロールアウト
    - 影響範囲分析
  
  承認プロセス:
    - セキュリティレビュー
    - ビジネス承認
    - 技術検証

ディザスタリカバリと事業継続

組織レベルBCP

バックアップ戦略

yaml
組織バックアップ:
  AWS Backup Organizations:
    - 中央集約バックアップポリシー
    - クロスアカウントバックアップ
    - クロスリージョンレプリケーション
  
  データ保護:
    - 暗号化設定統一
    - アクセス制御統合
    - 保持ポリシー管理

災害対応

yaml
災害対応計画:
  アカウント復旧:
    - アカウント再作成プロセス
    - 設定復元手順
    - データ復旧計画
  
  通信計画:
    - ステークホルダー通知
    - 進捗報告プロセス
    - 事後分析手順

まとめ

AWS Organizationsは、大規模なクラウド環境における統制とガバナンスの要です。適切なマルチアカウント戦略、Service Control Policies、統合請求、Control Tower の活用により、セキュリティ、コンプライアンス、コスト効率を統合的に管理できます。組織の成長に合わせて段階的に機能を導入し、継続的な改善により効果的なクラウドガバナンスを実現することが重要です。


引用元: