CloudFormationを使用して、AWS Organaizations入門
本ページでは、AWS Organizationsに入門します。
AWS Organizations では、追加料金なしで新しい AWS アカウントを作成できます。組織内のアカウントを使用すると、リソースの割り当て、アカウントのグループ化、アカウントまたはグループへのガバナンスポリシーの適用を簡単に行うことができます。
AWS Organizations
今回はAWS Organizations入門ということで、組織・Organizational Unit(OU)・メンバーアカウントを作成します。
構築する環境
AWS Organizationsで組織を作成します。
組織内にOrganizational Unit(OU)を作成します。
同OU内に、1つAWSアカウントを作成します。
CloudFormationテンプレートファイル
上記の構成をCloudFormationで構築します。
以下のURLにCloudFormationテンプレートを配置しています。
https://github.com/awstut-an-r/awstut-fa/tree/main/146
テンプレートファイルのポイント解説
組織
AWS公式では、組織を以下の通りに説明しています。
1 つの単位として管理できるように、AWS アカウントを 統合するために作成するエンティティ。
AWS Organizations の用語と概念
Resources:
Organization:
Type: AWS::Organizations::Organization
Properties:
FeatureSet: ALL
Code language: YAML (yaml)
FeatureSetプロパティに「ALL」を設定した場合、組織の全ての機能が有効化されます。
同プロパティに「CONSOLIDATED_BILLING」を設定した場合は、組織の一括請求の機能が有効化されます。
今回は前者を指定します。
OU
AWS公式では、OUを以下の通りに説明しています。
ルート内のアカウントのコンテナです。また、OU は他の OU に含めることもでき、上下反転したツリーのような階層を作成できます。最上部にはルートがあり、下に向かって OU の枝が広がり、先端にはツリーの葉であるアカウントがあります。
AWS Organizations の用語と概念
Resources:
OrganizationalUnit:
Type: AWS::Organizations::OrganizationalUnit
Properties:
Name: !Ref OUName
ParentId: !GetAtt Organization.RootId
Code language: YAML (yaml)
NameプロパティでOUの名前を設定します。
今回は「dev」をOU名とします。
今回はこのOUをルートの直下に配置します。
そのためParentIdプロパティに、組織のルートIDを指定します。
アカウント
AWS公式では、アカウントを以下の通りに説明しています。
Organizations のアカウントは標準の AWS アカウント で、AWS リソースと、それらのリソースにアクセスできる ID を含みます。
AWS Organizations の用語と概念
Resources:
Account:
Type: AWS::Organizations::Account
Properties:
AccountName: !Ref AccountName
Email: !Ref Email
ParentIds:
- !Ref OrganizationalUnit
RoleName: OrganizationAccountAccessRole
Code language: YAML (yaml)
AccountName・Emailプロパティで、作成するアカウントの名前およびメールアドレスを指定します。
今回は「awstut」というアカウント名を指定します。
ParentIdsプロパティでアカウントが所属するルートまたはOUを指定します。
今回は先述のOUのIDを指定します。
RoleNameプロパティで、本アカウント内に自動的に用意されるIAMロールのロール名を指定できます。
このロールは管理アカウントユーザーが引き受けて使用することができます。
今回はデフォルトの「OrganizationAccountAccessRole」を指定します。
環境構築
CloudFormationを使用して、本環境を構築し、実際の挙動を確認します。
CloudFormationスタックを作成し、スタック内のリソースを確認する
CloudFormationスタックを作成します。
スタックの作成および各スタックの確認方法については、以下のページをご確認ください。
各スタックのリソースを確認した結果、今回作成された主要リソースの情報は以下の通りです。
- 組織ID:r-e3tv
- OU名:dev
- アカウント名:awstut
組織を確認します。
1つの組織の中に、ルートやOU、管理アカウント・メンバーアカウントが表示されています。
OUを確認します。
OUに所属しているメンバーアカウント等を確認できます。
アカウントを確認します。
確かに指定した名前・メールアドレス通りにアカウントが作成されています。
続いてこのアカウントにアクセスします。
アクセスは、管理アカウントから先述のIAMロールを引き受ける形で行います。
IAMロールを使用したクロスアカウントアクセスに関しては、以下のページをご確認ください。
アカウントIDやロール名(OrganizationAccountAccessRole)を入力後、「Switch Role」を押下します。
正常にメンバーアカウントにアクセスできました。
最後に自動的に作成されたOrganizationAccountAccessRoleの詳細を確認します。
ロールにアタッチされているポリシーはAWS管理ポリシーAdministratorAccessで、全アクションを許可する内容です。
信頼ポリシーを見ると、管理アカウントのルートをプリンシパルとしています。
まとめ
AWS Organizations入門ということで、CloudFormationを使用して、組織・OU・メンバーアカウントを作成しました。