はじめに

AWS アカウントを組織として運用したいと考えた際に、AWS Organizations における組織単位のベストプラクティス に基づいた運用を実施したいと考える組織は多いと思います。

AWS Organizations のベストプラクティスには、基盤 OU (e.g. Security / Infrastructure) や、ログの保全 (e.g. Log Archive) 、Workloads (e.g. Service1-Prod ) 等の機能別 OU を作成し運用するなど、多くの推奨事項があります。
そのため、クラウド担当者や委託先がこれらのベストプラクティスを全て『理解』し、『実装』するには、専門的な知見が必要で、手間も時間もかかります。

この記事では、これらのベストプラクティス準拠の AWS 環境管理を自動化する Landing Zone Accelerator について紹介します。

Landing Zone Accelerator

Landing Zone Accelerator (以下、LZA) は、AWS のベストプラクティスに基づくクラウド基盤の作成を自動化する OSS ツールです。

このツールを活用することで、以下のような作業を簡略化できます。

  • AWS Organizations や Organization Unit (OU) などの構成の自動化
  • ログの保全や、セキュリティ適用といった組織の基準に基づく実装
  • 複雑なコンプライアンス要件への準拠

Infrastructure as Code

LZA では YAML ファイルで環境を定義することにより、定義に基づいた環境構築を実施できます。

YAML ファイルの リファレンス は GitHub 上にまとまっているため、サイト管理者はこれらのドキュメントを参照しながら構成を実施することが可能となります。

Infrastructure as Code (以下、IaC) を活用するメリットとして、GitHub の Issue や Pull Request を通して、コードの第三者レビューなどの仕組みをインフラ管理に取り込むことが可能となります。

これらのコードは、サンプルコンフィグ を改変することで容易に展開することが可能です。

主要な構成ファイルについて、以下にまとめます。

Account Configuration

accounts-config.yaml は、AWS Account を構成する設定ファイルです。

この YAML は、mandatoryAccountsworkloadAccounts から構成されており、mandatoryAccounts では ManagementLogArchiveAudit といった AWS Organizations に必須の AWS アカウントを構成することとなります。

それ以外のアカウントは、workloadAccounts 側で構成を実施します。

AWS Account を追加する際などは、このファイルを変更します。

Global Configuration

global-config.yaml は、AWS Organizations 全体で継承するグローバルプロパティを構成する設定ファイルです。

主たるリージョン (e.g. ap-northeast-1 ) や、許可するリージョンといった、AWS 全体に関わる設定や Cloud Trails などのログに関する構成 ( logging )、セキュリティ通知 ( snsTopics ) 、バックアップ構成 ( backup ) など、全体に関する構成を実施するファイルです。

Identity and Access Management (IAM) Configuration

iam-config.yaml は、組織全体に対するアカウント管理を構成する設定ファイルです。

このファイルは主に AWS IAM Identity Center (旧 AWS SSO) を構成し、ユーザーのアクセス権を IaC で管理可能となります。

これを活用することで、AWS IAM Identity Center の User や Group の権限を OU に対して関連付けることが容易になります。

Network Configuration

network-config.yaml は、ワークロード環境のネットワークを構成する設定ファイルです。

Default VPC の無効化 ( defaultVpc ) や、VPC 構成 ( vpcs ) 、Transit Gateway ( transitGateways ) 、Direct Connect ( directConnectGateways ) などのネットワークに関する構成を実施します。

Transit Gateway を活用することで、各 AWS Account に個別の VPC 作成を禁止して、組織で管理された Network を展開することも容易になります。

AWS Organizations Configuration

organization-config.yaml は、AWS Organizations を構成する設定ファイルです。

Organization Unit (OU) ( organizationalUnits ) 構成を設定したり、Service Control Policies (SCPs) ( serviceControlPolicies ) を設定するなど、AWS Organizations に関する設定を実施します。

Security Configuration

security-config.yaml は、セキュリティを構成する設定ファイルです。

EBS の暗号化 ( ebsDefaultVolumeEncryption ) といったものから、AWS Config ( awsConfig ) 、Security Hub ( securityHub ) などのセキュリティサービスの構成を実施します。

Installer と Core

Installer について

LZA は、LZA 自身の展開のため Installer を利用します。

構成図では、左上にあるものが該当します。
これは、AWS Organizations の管理アカウント内に展開される AWS Code Pipeline、GitHub で管理されるソースコード、AWS CodeBuild です。

これらの組み合わせのことを LZA では Installer と呼びます。

LZA の最初の導入は、Installer を利用して LZA 自身の環境を構築する作業となります。


(出展: Landing Zone Accelerator アーキテクチャ図 )

Installer の導入は、AWS ドキュメントにある ソリューションを展開する に基づき作業を実施します。

『ステップ1. スタックを起動する』にある Cloud Formation スタックを展開することで、Installer が導入されます。

Core について

Core は、YAML ファイルに基づき AWS Organizations にリソースを展開する、LZA の主たる機能です。

これは、管理アカウント内の S3 や GitHub にある Source を参照して、AWS Code Pipeline を用いてリソースを展開します。

実際の LZA の運用では、Source を編集、AWS Code Pipeline を実行するという手順になります。

Validation と Rollback

Core の実行には、Validation によるコードチェックと、Rollback の仕組みが導入されています。

YAML ファイルの文法的なミスや、設定ファイルとしての不備は Validation により検知されます。

展開に失敗した場合は、Cloud Formation などと連携した Rollback が実施されます。

これにより、AWS Organizations の安全が確保されています。

AWS Organizations の構築と維持

LZA を利用した AWS Organizations の運用では、AWS Organizations やセキュリティサービスの導入、VPC などの構成は YAML ファイルを変更し、Core の Pipeline を実行するという管理になります。

これにより、AWS Organizations 全体のベストプラクティスに基づく環境維持が可能となります。

この運用は、作業者によるサービス設定などの手動運用が発生しないため、内部不正などに対して堅牢となります。
複数人による設定ファイルのコードレビューが可能であり、個人に依存しない運用が可能です。

LZA を活用することにより、環境展開の高速化、可読性の維持、内部不正に対する抑止など、多くのメリットを AWS Organizations 運用に取り入れることが可能となります。

構成ファイルと実際の環境の差を Drift と呼び、Drift を検知する機能を Drift Detection と呼びます。
LZA の Drift Detection は こちら に記載されています。

まとめ

AWS を組織として展開する場合、AWS Organizations のベストプラクティスに基づく環境管理は学習コストや委託費の問題などで難しいと考える組織も少なくないと考えます。

AWS のベストプラクティスに基づく運用を簡易化するため、AWS は LZA というソリューションを提供しています。

LZA により、ベストプラクティスに基づく AWS Organizations 管理を実現してみてください。