この記事に書いてあること
AWSでとあるアカウントで作ったリソースに別アカウントのユーザからアクセスする方法です。
リソースAを所有するアカウントをアカウントA、リソースAにアクセスしたいアカウントをアカウントBとします。
用語の理解
用語 | 意味 |
---|---|
アカウント | AWSの請求単位 |
IAMユーザ | AWSアカウント内のアイデンティティ。パスワードやアクセスキーにより認証される。 |
IAMユーザグループ | ユーザの集団を定義。グループに対してログインはできない。 |
ロール | リソースに1つだけ結び付けられるポリシーのグループ |
ポリシー | 各リソースに対するアクションの許可・拒否のルール |
関係はこんな感じでしょうか。
アカウント-1---n-ユーザ-n---n-グループ
リソース-n---1-ロール-1---n-ポリシー
事前準備
- AWSにアカウントAを作成 → アカウントIDをメモ
- アカウントAでリソースAを作成
- AWSにアカウントBを作成 → アカウントIDをメモ
アカウントBからリソースAへアクセスするためのロールを作成
- アカウントAにサインイン
- サービス > Identity Access Management(IAM) を選択
- アクセス管理 > ロール を選択
- ロールを作成
4.1.信頼されたエンティティタイプで「AWSアカウント」を選択
4.2.AWSアカウントで「別のAWSアカウント」を選択
4.3.アカウントIDに【アカウントBのアカウントID】を入力して「次へ」
4.4.リソースへのアクセス許可ポリシー(例:Lambdaであれば「AWSLambda_FullAccess」)を追加して「次へ」
4.5.ロール名を入力して「ロールを作成」 - 作成したロールのARNをメモ
リソースAにアクセスするIAMユーザの作成
- AccountBでマネージドコンソールにサインイン
- サービス > Identity Access Management(IAM) を選択
- アクセス管理 > ユーザ を選択
- 「ユーザーを追加」
4.1. ユーザ名(例:UserB)を入力して「次へ」
4.2. 許可のオプションで「ポリシーを直接アタッチする」 を選択
4.3. ポリシーの作成 > サービス「sts」, アクション「書き込みのAssumeRole」, リソースは指定で【先程メモしたロールのARN】
4.4. タグを追加はそのままで「次のステップ:確認」 > 名前をつけて「ポリシーの作成」
4.5. 作成したポリシーをアタッチ
UserBでリソースAにアクセス
- AccountBのUserBでマネージドコンソールにサインイン
- 画面右上のアカウント名 > 「ロールの切り替え」( > 初回はもう一度「ロールの切り替え」)
- アカウントに【アカウントAのアカウントID】、ロールに【アカウントAで作成したロール名】を入力。表示名は任意。 > ロールの切り替え
以上です。
AWSのリソースへのアクセス制御の概念を学ぶ良い機会でした。