AWS 別アカウントにロールを使ったアクセス手順
概要
別アカウントから別アカウントのRoute53へIAMロールを使ってアクセスする手順
アクセスキーでアクセスすれば簡単だけどよりセキュアにロールで実現してみよう
構成図
Route53でホストゾーンを管理しているアカウントAに、別のアカウントのBからロールを使ってアクセスしたいイメージ
現実はイメージほど単純ではなく、このような構成でアクセスすることになった
Role-A
は自分のアカウントAのRoute53にアクセスできる権限を持っている
それをアカウントBから一時的に使わせてもらう形をとる
手順
この手順では別アカウントからRoute53への読み取り専用でアクセスするロールを例にする
参考にしたのはこちら
別アカウントのS3バケットを利用する手順 | Developers.IO
アカウントA(Route53を使わせる方)でロール作成
-
IAMロールを作成
-
別のAWSアカウントを選択
-
アカウントIDに
アカウントB(Route53を使いたい方)のID
を入力
-
AmazonRoute53ReadOnlyAccess
ポリシーを選択
※ ここではRoute53へ読み取り専用としているがポリシーを変更すれば同様のロールでのアクセスに応用できる
-
タグを任意で設定
-
ロール名を任意で設定
-
信頼性されたエンティティ アカウントに
アカウントB(Route53を使いたい方)のID
が入力されているか確認
-
作成されたロールを確認
-
ロールARNの
arn:aws...
をコピーする
以降の作業で2回ペーストする場面が訪れる
※ 途中で他のものをコピーする可能性があるので、このページを開いたままにしておくと後々楽 -
アカウントAでの設定作業は完了
アカウントB(Route53を使いたい方)でポリシーとロール作成
シークレットウィンドでアカウントBのコンソールを開くのがオススメ
後々アカウントAのロールARNをコピーしたくなる
アカウントAで作成したロールを利用するというポリシーを作成する
- IAMからポリシーをJSONで作成
"Resource': ""
の部分はアカウントAのロールARNをペースト
コピペ用(6行目だけ要変更)
|
|
- 任意のポリシー名を入力
- ポリシー作成完了
ポリシーを新規作成のロールにアタッチ
-
IAMロールを新規作成
-
AWSサービスを選択
-
EC2を選択
-
直近で作成したポリシーを選択
-
任意のロール名を設定
-
ロール作成完了
アカウントB(Route53を使いたい方)のEC2インスタンスにロールをアタッチ
-
EC2から対象のインスタンスを選択して、IAMロールの割り当て
-
先ほど作成したロール名を選択
アカウントB(Route53を使いたい方)のEC2インスタンスからアカウントAのRoute53へアクセス
~/.aws/credentials
にロールの情報を記入してアカウントAにアクセスする
- ロールをアタッチしたインスタンスへSSH接続
- ロールを使った認証情報を新規作成
|
|
- 追記内容
1行目: プロファイル名は任意で付ける
2行目:role_arn =
の後ろにアカウントAで作成したロールARNをペースト
3行目: まったく同じでOK
|
|
※ credential_source = Ec2InstanceMetadata
の意味は
「Amazon EC2 インスタンスプロファイルにアタッチされた IAM ロールを使用します。」
AWS CLI での IAM ロールの使用 - AWS Command Line Interface
- アカウントAのRoute53のホストゾーンが参照できるからプロファイルを指定して実行
--profile [1行目で任意の名付けたプロファイル名]
を付けるのがポイント - ホストゾーンの情報が返ってきたのでロールを使ってアカウントAにアクセスできたことが確認できた
|
|
感想
他アカウントへのロールでのアクセスを一度やってみたかった
使う機会がありそうなので手順メモ
検証して文章書いて、図も書いたら2時間40分かかった
STSの良い勉強にもなった、アウトプットは大切
参考
【そんなときどうする?】別のアカウントにセキュアにアクセスしたい! いまさらきけないSTSとは? – サーバーワークスエンジニアブログ