🤖

AWSでクロスアカウントアクセスを設定する手順

に公開

AWS初学者です。SAAの勉強中なので、学んでいることをメモ

クロスアカウントアクセスとは


あるAWSアカウントのリソースに、別のアカウントのユーザーやロールがアクセスできるようにすること

ユースケース


以下のようにセキュリティ、コスト管理、ガバナンスなどの理由から、複数のAWSアカウントを使い分けている場合に、アカウント間でデータを共有したり、管理作業を統合したりするといったニーズに応えることができる。

・開発/テスト/本番環境の分離: 開発アカウント、テストアカウント、本番アカウントを分けることで、開発環境でのミスが本番環境に影響することを防ぐ

・部署ごとの分離: 部署やチームごとにアカウントを分けることで、コストの可視化や責任の明確化

・顧客ごとの分離: SaaS(Software as a Service)プロバイダーが顧客ごとに専用のアカウントを割り当てるなど

テストで出やすい問題は以下

監査人に一時的に権限を付与する場合に使用する設定は?
→IAMロール ※IAMユーザーと間違えないようにすること

クロスアカウントアクセスの仕組み


IAMロールの作成

アクセスされる側のアカウント(リソースアカウント)はまず、
アクセスを許可するためのIAMロールを作成する。

このロールの信頼ポリシー(Trust Policy) で、どのAWSアカウント(アクセスする側のアカウント)がこのロールを引き受けることを許可するかを指定
この信頼ポリシーには、"Action": "sts:AssumeRole" が含まれる

例)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::000000000000:root"
            },
            "Action": "sts:AssumeRole",
            "Condition": {}
        }
    ]
}

"arn:aws:iam::000000000000:root" の箇所に記載されているアカウントは信頼します、と言った内容で、記載のあるアカウントにのみ、このロールの許可ポリシーを付与可能

"sts:AssumeRole" は、特定のIAMロールを引き受ける(Assume) ことを許可する権限を定義するもの。
そのため、「このポリシーを持つエンティティ(ユーザーやサービス)が、特定のIAMロールの権限を取得することを許可する」 という意味

ポリシーを作成

アクセスする側のアカウント(ユーザーアカウント)で、リソースアカウントのロールを引き受けるためのポリシーを作成

例)

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Effect": "Allow",
			"Action": "sts:AssumeRole",
			"Resource":"arn:aws:iam::000000000000:role/Application_account"
		}
	]
}

"arn:aws:iam::000000000000:role/Application_account" の箇所には、リソースアカウントで作成したロールに付与されている、ARN(AWSリソースを一意に識別するためのグローバルな命名規則)を入力

割り当てるユーザーを作成

アクセスする側のアカウント(ユーザーアカウント)で、クロスアカウントアクセスを割り当てるユーザーを作成する。
その際に、「ポリシーを直接アタッチする」にて、作成したポリシーを選択

作成したユーザーでロールの切り替え

上記で作成したユーザーでログイン後に、右上のアカウントIDをクリック
「ロールの切り替え」にて、必要事項を入力して切り替え

アカウントID:ロールが存在している、リソースアカウントのIDを入力
IAMロール名:作成したロール名
↑上記は必須で入力

作成する順番を上記の手順にすることで、効率よく作成できた。
順番がよくわからなくなってしまうので身につくまでしっかり復習していきます!

Discussion