困ったこと
マスターアカウントとは別にアドミン権限を持ったアカウントを別途作ったとしても、「組織(Organization)」の機能は使えない。。
勘違いしていたこと
(GCPみたいに) プロジェクトに対して複数のアカウントを設定する。のだと思っていたのだけど、AWSの場合はEメールに紐尽くアカウント毎にプロジェクトが存在し、そのプロジェクトの中にEC2だとかIAMだとかが存在する。
なので、AWSの場合はEメールでログインするアカウント=ルートユーザーという位置づけになり、日常の作業はIAMで作ったEメールで一意に特定されないアカウントでの作業になる
起きていたこと
現在本番環境が動いている環境は次の様に作られていた
- master@test.net でアカウントを作成
- master@test.net が組織を作成し、その組織に old-root@test.net でアカウントを作成した
- old-root@test.net アカウントでEC2をはじめとした本番環境を構築した
- old-root@test.net アカウントのメールは開発責任者がメールを見ることが出来ないので、アカウントのIDを root@test.net に変更した
問題点は何だったのか?
本番環境とは別に root@test.net アカウントでサブアカウントを作ろうと「組織」をアクセスしても、次のように表示され、組織のサブアカウントが作成出来ない?となった
root@test.net で「組織」機能へのアクセスポリシーを設定したけど、アクセスはできなかった。
解決策
組織のアカウントに"OrganizagtionAccountAccessRole"を割り当てる
やり方 → https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_access.html#orgs_manage_accounts_create-cross-account-role
- マスターアカウントでIAMのコンソールにアクセス
- ロールを作成→別のAWSアカウント
- 「このロールを試用できるアカウントを指定する」では、組織にアクセスさせたいアカウント(上の場合はroot@test.net)のアカウントを指定する
- Attachアクセス権限ポリシー で "AdministratorAccess" を選択し、次のステップに進む
- タグは特に選択せず、次のステップに進む
- ロールをOrganizationAccountAccessRoleという名前で作成する
- ロールの詳細を開いて、ロールARNの値をコピーしておく。また、「コンソールでロールを切り替える事ができるユーザーにこのリンクを知らせます」のURLをコピーする
- 次に、組織にアクセスしたいアカウントでログインして、IAMコンソールを開き、ポリシーを作成する
- サービス:STS, Action: AssumeRole
- リソース ARNの追加で、7のARNの値を(組織マスターのアカウントIDと先ほど作成したロールの名前)入力する。このアカウントIDとロールは「SwitchRole」でも使用するのでどこかに控えておく必要があります
- で、Eメールでログインするアカウントだと、ロールの切替機能が使えないので、ユーザーを作成して、上のポリシーを割り当てる→グループにポリシーをアタッチして、そのグループにユーザーを指定します
- IAMでユーザーを作成して、「IAMユーザーのサインインリンク」からログインをすると、右上にロールを切替とでてきます
- ロール切替を選択すると、アカウントIDとロールの入力が求められるので、10で控えておいたアカウントIDとロールを指定することで、そのアカウントのそのロールでコンソールが使える様になりました!