CloudFormationを使用して、AWS Organaizations入門

CloudFormationを使用して、AWS Organaizations入門

本ページでは、AWS Organizationsに入門します。

AWS Organizations では、追加料金なしで新しい AWS アカウントを作成できます。組織内のアカウントを使用すると、リソースの割り当て、アカウントのグループ化、アカウントまたはグループへのガバナンスポリシーの適用を簡単に行うことができます。

AWS Organizations

今回はAWS Organizations入門ということで、組織・Organizational Unit(OU)・メンバーアカウントを作成します。

構築する環境

Diagram of introduction to AWS Organizations using CloudFormation.

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スタックを作成します。
スタックの作成および各スタックの確認方法については、以下のページをご確認ください。

あわせて読みたい
CloudFormationのネストされたスタックで環境を構築する 【CloudFormationのネストされたスタックで環境を構築する方法】 CloudFormationにおけるネストされたスタックを検証します。 CloudFormationでは、スタックをネストす...

各スタックのリソースを確認した結果、今回作成された主要リソースの情報は以下の通りです。

  • 組織ID:r-e3tv
  • OU名:dev
  • アカウント名:awstut

組織を確認します。

Detail of AWS Organizations 1.

1つの組織の中に、ルートやOU、管理アカウント・メンバーアカウントが表示されています。

OUを確認します。

Detail of AWS Organizations 2.

OUに所属しているメンバーアカウント等を確認できます。

アカウントを確認します。

Detail of AWS Organizations 3.

確かに指定した名前・メールアドレス通りにアカウントが作成されています。

続いてこのアカウントにアクセスします。
アクセスは、管理アカウントから先述のIAMロールを引き受ける形で行います。

IAMロールを使用したクロスアカウントアクセスに関しては、以下のページをご確認ください。

あわせて読みたい
クロスアカウントロールを使用したAWSアカウント間のアクセス権限の委任 【クロスアカウントロールを使用して、AWSアカウント間でアクセス権限を委任する】 特定のAWSリソースに、別のAWSアカウントからアクセスすることをクロスアカウントア...
Detail of AWS Organizations 4.

アカウントIDやロール名(OrganizationAccountAccessRole)を入力後、「Switch Role」を押下します。

Detail of AWS Organizations 5.

正常にメンバーアカウントにアクセスできました。

最後に自動的に作成されたOrganizationAccountAccessRoleの詳細を確認します。

Detail of AWS Organizations 6.
Detail of AWS Organizations 7.

ロールにアタッチされているポリシーはAWS管理ポリシーAdministratorAccessで、全アクションを許可する内容です。
信頼ポリシーを見ると、管理アカウントのルートをプリンシパルとしています。

まとめ

AWS Organizations入門ということで、CloudFormationを使用して、組織・OU・メンバーアカウントを作成しました。