AWSのクロスアカウントアクセスを試す

# はじめに
今までかかわった案件はアプリケーション単位でAWSアカウントを分けており、基本的には1アプリ1アカウントでした。
今回本番環境、踏み台用環境で2アカウント用意することになったため、片方のアカウントのみにIAMユーザーを作成しクロスアカウントアクセスを設定しAWSコンソールへロール切り替えすることにしました。

# 環境
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432587/f40936c4-54f7-d45b-ae6a-21520ca92075.png)
・UserAがアカウントAでAdministratorAccess権限を持つ
・UserAがアカウントBでReadOnlyAccess権限を持つ
・アカウントBでUserAの作成を行わない

# 手順概要
1.アカウントAで[sts:AssumeRole]を許可したポリシーを割り当てた[Xaccount_group]グループを作成	
2.アカウントAで[AdministratorAccess]ポリシーを割り当てたUserAを作成し[Xaccount_group]グループへ割り当て
3.アカウントBでクロスアカウントを許可し、ReadOnlyAccessポリシーを割り当てた[SwitchRole]ロールを作成	
4.UserAでアカウントAへサインインし、アカウントBへロール切り替え	

# 1.アカウントAで[sts:AssumeRole]を許可したポリシーを割り当てた[Xaccount_group]グループを作成	

sts:AssumeRoleを許可したポリシー[ArrumeRole]を作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432587/a3b2a6cb-e7d6-5700-9943-062278d9eba1.png)
~~~:json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "*"
        }
    ]
}
~~~
作成前の確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432587/8548e82a-22a1-e44e-913f-a580054f3666.png)

ユーザーグループ作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432587/80a19ea1-e61a-0d95-8734-58f5db97be94.png)


2.作成した[AssumeRole]ポリシーと[AdministratorAccess]ポリシーを割り当て
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432587/b3d8ce0b-011b-3a54-7e13-93f7dd054e15.png)

# アカウントAで[AdministratorAccess]ポリシーを割り当てたUserAを作成し[Xaccount_group]グループへ割り当てる
ユーザー作成、ユーザーをグループへ割り当て
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432587/2fcc3513-68ab-776d-e3cf-95a69b76d267.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432587/3c7a6997-3001-d8a3-642d-4ea792f3279a.png)

作成前の確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432587/b31303f4-9a39-8672-761d-07727fd195ae.png)

# 3.アカウントBでクロスアカウントを許可し、ReadOnlyAccessポリシーを割り当てた[SwitchRole]ロールを作成
ロール作成画面
信頼されたエンティティタイプで[AWSアカウント]を選択し、[別のAWSアカウント]にチェックしアカウントAのアカウントIDを入力する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432587/e803e152-8ff0-2633-7ac5-7c5917decafe.png)
[ReadOnlyAccess]ポリシーを割り当て
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432587/bc5f508c-06ae-f44c-4922-c0c6d1c670bf.png)
ロール名：SwitchRole
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432587/bf0a51b3-5d85-cb42-f0fe-cf2db079bfff.png)

~~~:json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::[アカウントAのアカウントID]:root"
            },
            "Action": "sts:AssumeRole",
            "Condition": {}
        }
    ]
}
~~~

# 4.UserAでアカウントAへサインインし、アカウントBへロール切り替え
UserAでアカウントAへサインイン
ロールの切り替え
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432587/5d5ce3de-c13f-da17-f74f-6b35be541468.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432587/6490570f-cee5-6e49-f7bf-c3c1af0e1877.png)

アカウント：アカウントBのアカウントID
ロール：SwitchRole
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432587/13c0ed24-a099-5bf9-3aa9-cbd165ed85d6.png)

アカウントBにロール切り替え成功
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432587/cfd922a4-7633-8030-0aa4-e5882d25c4b6.png)

# 参考
https://dev.classmethod.jp/articles/signin-with-cross-account-access/

https://qiita.com/aki3061/items/865957c03a41f556eaec

https://www.miracleave.co.jp/contents/1684/aws-iam-cross-account-access/#index_id6