2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS-CLIでのクロスアカウントアクセスの実装めも

Last updated at Posted at 2021-01-16

やりたいこと

AWS-CLIでクロスアカウントアクセスで操作したい ※MFA認証あり

詳細は、こんな感じです。
①AWS-CLIの実行環境は、VirtualBoxで稼働中のCentOS8
②踏み台のAWSアカウント①(111111111111)を経由して、AWSアカウント②(222222222222)でAWS-CLIで操作をする環境を構築
※踏み台アカウントの一般ユーザ「qiita」には、MFA認証が設定されている。

※イメージ図
1.jpg

前提条件

  • AWS-CLI2の実行環境は、以下である。
[root@localhost ~]# cat /etc/centos-release
CentOS Linux release 8.3.2011
  • 一般ユーザqiitaは、EC2インスタンスを操作する全権限を既に設定済み

実施手順

(1)AWS-CLI2の実行環境構築

本手順は、このURLの通り実施いたしました。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2-linux.html

▼最新のAWS-CLI2をダウンロード

# wget https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip

▼ダウンロードファイルを解凍する

# unzip awscli-exe-linux-x86_64.zip

▼AWS-CLI2のインストール

# sudo ./aws/install

▼AWS-CLIのバージョン確認

# aws --version

※ここで、バージョンが表示されればOK

[root@localhost ~]# aws --version
aws-cli/2.1.19 Python/3.7.3 Linux/4.18.0-240.1.1.el8_3.x86_64 exe/x86_64.centos.8 prompt/off

↑今回のAWS-CLI2の実行環境です。

(2)AWSアカウント①でのAWS-CLIのセットアップ

▼AWS-CLIのセットアップを実施

# aws configure
↓以下、入力項目で設定を実施する
AWS Access Key ID [None]: 
AWS Secret Access Key [None]: 
Default region name [None]: 
Default output format [None]: 

以下、項目説明

入力項目 概要
AWS Access Key ID [None] アクセスキー
AWS Secret Access Key [None] シークレットアクセスキー
Default region name [None]: デフォルトのリージョン
※東京リージョンを指定したい場合は、「ap-northeast-1」を指定
Default output format [None]: 結果の形式を指定(例:json)

▼AWS-CLI設定後の動作テスト(EC2インスタンスの一覧を出力)

[root@localhost ~]#  aws ec2 describe-instances 
{
    "Reservations": []
}

※今回は、東京リージョンでEC2インスタンスが存在していないのでこのような出力結果になったが、EC2インスタンスが存在する場合はその情報が出力される。

(3)クロスアカウントアクセス設定

(3.1)AWSアカウント②でクロスアカウントアクセスを許可するロールを作成

▼AWSアカウント②のコンソールにログインし、ロールの作成を押下する。

▼以下を指定する ※画像参照

操作対象
エンティティの種類 別のAWSアカウント
アカウントID 111111111111
MFAが必要 レ点チェック

1.PNG

▼既存のポリシー「AdministerAccess」を選択
2.PNG

▼タグは特に設定せずに次へ
3.PNG

▼ロール名に「QiitaAccess」を入力し、ロールを作成する。
4.PNG

(3.2)AWSアカウント①でクロスアカウントアクセスの接続テストをおこなう

▼一般ユーザqiitaで、コンソールにログインする

▼ユーザタブから、「ロールの切り替え」を押下する。 ※画像参照
2.png

▼以下を指定し、「ロールの切り替え」を実行する。 ※画像参照

入力項目
アカウント 222222222222
ロール QiitaAccess

3.PNG

▼クロスアカウントアクセス後は、こんな感じの表示となります

5.png

※ここまで実施できれば、AWSアカウント②でコンソールでの操作はできるようになりました。

(4)AWS-CLIでのクロスアカウントアクセス設定

▼AWS-CLIの現在の設定値を確認

[root@localhost ~]# cat ~/.aws/config
[default]
region = ap-northeast-1
output = json

※AWSアカウント①のAWS-CLIのアクセス情報があります。

▼「~/.aws/config」ファイルに設定情報を追記

~/.aws/config
[profile qiita-cros]
region = ap-northeast-1
role_arn = arn:aws:iam::222222222222:role/QiitaAccess
mfa_serial = arn:aws:iam::111111111111:mfa/qiita
source_profile = default
入力項目
region EC2などを操作する際に必要な設定であり、リージョンを明示的に指定する必要がある
role_arn AWSアカウント②のクロスアカウントロールを指定
mfa_serial AWSアカウント①のMFA設定済みのqiitaユーザを指定
source_profile AWSアカウント①のプロファイル内の認証情報を使用するために必要な設定

▼AWS-CLI設定後の動作テスト(EC2インスタンスの一覧を出力)

[root@localhost ~]# aws ec2 describe-instances  --profile qiita-cros
Enter MFA code for arn:aws:iam::111111111111:mfa/qiita:
{
    "Reservations": []
}

実行時にMFAコードを聞かれるので、それを入力し、実行すれば、AWSアカウント②でもAWS-CLIの操作ができるようになりました!!やったね( *´艸`)

まとめ

コンソールでのクロスアカウントアクセスは、普通にできていたが、AWS-CLIでのクロスアカウントアクセスは少し手間取ってしまったので、記事に残してみました。
誰かのお役に立てたらうれしいです(●´ω`●) おわり

追記 2021/01/18

  • 毎回、コマンドの実行時に「--profile プロファイル名」を指定するのがめんどくさい場合は、環境変数に登録すると一回で済むから、楽になります。
export AWS_DEFAULT_PROFILE=プロファイル名
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?