DEVELOPER’s BLOG
技術ブログ
AWSマルチアカウント管理とは?AWS OrganizationsとIAM Identity Centerを解説
目次
はじめに
AWSでクラウドリソースを作成する際、必ず作成するのが「AWSアカウント」です。しかし、プロジェクトが成長するにつれ、単一アカウントの運用から複数のAWSアカウントを使い分ける「マルチアカウント構成」への移行が必要になります。
今回は、AWSアカウントの基本的な考え方をおさらいしたうえで、「なぜマルチアカウント構成が必要なのか」「複数アカウントでの権限管理をどう行うのか」を、具体的な実例を交えて解説します。
1.AWSアカウントは環境ごとに作る
一般的にアカウントというと、ユーザーごとに作るものだという認識があると思います。
しかし、AWSアカウントにおいては「アカウント = ユーザー(人) 」というのは、初心者が陥りがちな間違いです。
AWSアカウントは、システムやAWSリソースを分離・管理するための枠組みです。
そのため、アカウントは基本的に環境単位で作成することが推奨されています。
ただし、すべての環境を一つのアカウントで管理する「シングルアカウント構成」もあります。
2. シングルアカウント構成
一つのAWSアカウント内で、開発・検証・本番などのすべての環境を運用する構成です。
各環境ごとにVPCを作成し、ネットワークを分離することで、環境内の通信やリソースを分離できます。
1〜3人程度の小規模プロジェクトやPoC、社内ツールであれば、シングルアカウント構成でも十分対応できます。
注意点
全てのリソースが一つのアカウントの元にあるので、アクセス制御の設定ミスが致命的になります。
- RDSなどのリソースを環境ごとのVPCに配置し、通信を分離したとしても、同じAWSアカウントである以上、権限まで分離できるわけではありません。
- IAMポリシーでリソースタグ等を使用した細やかなアクセス制御を行わないと、開発者が誤って本番リソースを削除・変更してしまうといった事故に繋がる恐れがあります。
コストに関して
複数環境を1アカウントにまとめることで、コスト面のメリットがあるように勘違いされがちですが、実はこの後紹介するマルチアカウント構成と比べて大きく変わるわけではありません。AWSの利用料金はアカウント数によらず、作成したリソース量によって決まるためです。
本番影響が大きいシステムや大規模チームでは、環境やユーザーアクセスを分けて管理することができるので、マルチアカウント構成が現実的です。
3. マルチアカウント構成 + AWS Organizations
マルチアカウントでは、環境ごとにアカウントを作成します。
環境が完全に分かれるので、明確に権限を分離することができます。シングルアカウントで陥りがちな、『アクセス権限の設定ミスで本番環境に影響を及ぼしてしまう』という事象を防止できます。
また、責任範囲が明確になるので、障害発生時の影響範囲を限定できます。
さらに、AWSの請求はアカウントごとなので、環境ごとの費用を把握することができます。
マルチアカウント構成はAWS Organization導入が前提
AWS Organizationは、複数のAWSアカウントをまとめて管理するサービスです。主な利点は下記の3点です。
- 複数アカウントの請求を一本化できる
- アカウントをプロジェクトやサービスごとにグループ化できる
- 利用できるAWSサービスや操作をまとめて制限できる
一方で、各アカウントへのユーザごとのアクセス制御は別の仕組みが必要になります。そこで利用されるのが、IAM Identity Center(旧SSO)です。
4. ユーザー管理:IAM Identity Center
従来は、各アカウントごとにIAMユーザーを作成して管理することが一般的でした。
しかし、IAMユーザーはアカウントごとに発行する必要があるため、アカウントが増えるほど、ユーザー権限管理は複雑になります。
また、IAMユーザーはアカウントを横断する共通の権限を設定できないため、「開発者」「管理者」といった共通の権限を各アカウントで個別に設定しなければなりません。
ユーザー側も、アカウントごとに異なるログイン情報を管理する必要があり手間です。
このような課題を解決するため、現在はIAM Identity Centerを利用したユーザー管理が推奨されています。
IAM Identity Centerを導入すると、複数のAWSアカウントにわたってユーザーを一元管理できるようになります。ユーザーはIAM Identity Center へ一度サインインするだけで、アカウントごとに適切な権限を使い分けながらアクセスすることができます。また、「開発者」や「管理者」といったよく使用するロールを共通の定義として管理し、複数のAWSアカウントに割り当てることができるため、運用負荷を大幅に軽減できます。
5. 【実例】IAM Identity Centerでユーザーを一元管理する
IAM Identity Centerを導入することによって、ユーザーのアクセス権限の一元管理をどのように実現するのか、順を追って説明します。
まずAWS Organizationで、IAM Identity Centerを有効化します。
IAM Identity Centerには、ユーザーやグループを管理する機能が備わっています。
まずはここでユーザーを作成します。複数のユーザーをグループにまとめることも可能です。
アクセス権限セットを作成します。こちらがアカウントを横断して使用できるロール定義です。
最後に、アカウント割り当てを行います。
「ユーザ」×「アクセス権限セット」×「アカウント」の組み合わせを指定します。
ユーザは、ユーザグループを指定することもできます。アカウントは複数指定できます。
このように、「開発者」「閲覧者」「管理者」といったロールを一箇所で定義し、複数のAWSアカウントに共通して割り当てることができます。
下記は、実際にユーザーがIAM Identity Centerのアクセスポータルにログインした際の画面です。この画面から、各環境に適切なロールでアクセスしたり、アクセスキーを取得したりすることができます。
おわりに
複数のAWSアカウントを運用する場合は、AWS Organizationsを導入することで、複数のアカウントをまとめて管理したり、請求を一本化したりすることができます。マルチアカウント構成を検討している方は、ぜひAWS Organizationsの導入を検討してみてください。
また、シングルアカウント構成・マルチアカウント構成にかかわらず、現在IAMユーザーでアクセス管理をしている場合は、IAM Identity Centerへの移行がおすすめです。ユーザーのアクセス権限を一元管理できるため、運用負担の軽減につながります。