🌻

AWS IAM SwitchRoleでGUIツールを利用する

2021/12/12に公開

これは OPENLOGI Advent Calendar 2021 12日目の記事です。
https://qiita.com/advent-calendar/2021/openlogi

はじめに

AWSにて複数AWSアカウントを利用する場合、
各AWSアカウントに利用者のIAMユーザーを作成するのは管理上煩雑になるので
通常は IAMユーザー管理用AWSアカウント(Jumpアカウント)を利用するか、
SSO/AWS SSOを利用する構成にするかと思います。

【参考記事】
https://dev.classmethod.jp/articles/how-to-access-aws-console-in-multi-accounts/

OPENLOGIでは、Jumpアカウントを用意して、SwitchRoleする構成にしています。

SwitchRoleを利用すれば、マネージメントコンソールで複数アカウント利用がやりやすくなるのはもちろん
AWS CLIも、専用の設定を追加することで、簡単に利用することができます。

【参考記事】
https://dev.classmethod.jp/articles/cli-switch-role/

しかし、AWSの機能を利用する手段は、
マネージメントコンソールとAWS CLIだけではありません。
Amazon S3やAmazon Athenaなどを便利に利用できるGUIツールがあります。
それらのツールでは、一般的にはアクセスキー/シークレットを設定するものが多いのですが
一部ツールはSwitchRoleにも対応しているものがあります。
以下では、そのようなGUIツールでの対応方法をご紹介します。

Cyberduck

https://cyberduck.io/

Cyberduckは、MacOS/Windowsに対応した、Amazon S3などCloudストレージへのアクセスが可能なGUIツールです。
Amazon S3は、こういったGUIツールを利用するケースが多いサービスではないかと思います。
特にエンジニアではない方(デザイナー系の方など)がS3にアクセスしたい場合などがあるでしょうか。

CyberduckでAmazon S3に接続する場合、通常はアクセスキー/シークレットキーを指定するようになっています。
ですが、2018年に機能が追加されて、SwitchRoleでの利用が可能になりました。

基本的な設定方法については、以下のClassmethodさんのブログを参照していただくとして。
https://dev.classmethod.jp/articles/cyberduck-support-aws-sts/

なのですが、
実は1つハマリポイントがあります。

CyberduckのSwitchRole対応では、~/.aws/credentials ファイルは認識してくれるのですが、 ~/.aws/config ファイルは認識してくれません。

なので、先にご紹介したAWS CLIでのSwitchRole利用方法のブログの手順では
~/.aws/config

~/.aws/config
# スイッチロール先の設定
[profile awesome]
mfa_serial = arn:aws:iam::xxxxxxxxxxxx:mfa/hoge
role_arn = arn:aws:iam::yyyyyyyyyyyy:role/fuga
source_profile = jump

と記載していますが、これだとCyberduckからは利用できません。

ではどうするかというと、この記述を ~/.aws/credentials のほうに記載します。

~/.aws/credentials
# スイッチロール先の設定
[awesome]
mfa_serial = arn:aws:iam::xxxxxxxxxxxx:mfa/hoge
role_arn = arn:aws:iam::yyyyyyyyyyyy:role/fuga
source_profile = jump

# スイッチロール元の設定
[jump]
aws_access_key_id = xxxxxxxxxxxxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

こうすることで、CyberduckでSwitchRole経由でS3にアクセスができるようになります。

Transmit

https://www.panic.com/transmit/

TransmitはMacOS用のFTPクライアントです。
このツールもS3へのアクセスに対応しており、さらにSwitchRoleにも対応しています。
接続設定の中に 「Amazon S3 with IAM Role」 というのがあるので、これを選択し
必要事項を埋めるだけで利用できます。

(Access Key IDとSecretは、SwitchRole元で発行したものを入れます)

DataGripからAmazon Athenaへの接続

DataGrip等 IntelliJ製品で、各種データソースにアクセスする機能がありますが
その中でAmazon Athenaへ接続する機能があります。
その時の設定方法です。

一般タブでは、「認証」を「AWSプロファイル」に、「ユーザ名」は空のままでOK。
「プロファイル」をSwitchRole先のプロファイル名を指定します。

詳細タブでは S3OutputLocation の設定が必要です。
クエリ結果を保存するS3のパスを指定してください。

接続のテスト を押して、Athenaに接続できるか確かめてください。

実はこのDataGripへの接続設定でも、Cyberduckのときと同様のハマりポイントがあります。
DataGripも(正確にはAthena JDBC ドライバーが)~/.aws/credentialsは読むものの~/.aws/configを読まないので
role_arnsource_profilemfa_serialの設定は、~/.aws/credentialsに書いてください。

SwitchRoleに対応していないツール

他にも同様のツールはいくつかあるのですが
以下にあげるツールは、検証したところ、通常のアクセスキー/シークレットキーによるアクセスには対応しているものの、SwitchRoleには対応していないようでした。(2021年12月現在)

まとめ

AWSでSwitchRoleを利用する際の、各種GUIツールの設定方法をまとめました。
~/.aws/configを解釈してくれないツールがある、というのがちょっとしたハマりどころです。

個人的には ~/.aws/credentials は名前からして、本当に秘匿情報であるアクセスキー/シークレットだけを書くべきかなと思っていたのですが
source_profileは、どのprofileのcredentialを参照せよ、ということになるので
これらの設定も ~/.aws/credentialsに書いたほうが、わかりやすくはあるのかな、とも思いました。
(AWSのお作法的にこれが正しいのかはわからないですが)

OPENLOGI Tech Blog

Discussion