AWS IAM SwitchRoleでGUIツールを利用する
これは OPENLOGI Advent Calendar 2021 12日目の記事です。
はじめに
AWSにて複数AWSアカウントを利用する場合、
各AWSアカウントに利用者のIAMユーザーを作成するのは管理上煩雑になるので
通常は IAMユーザー管理用AWSアカウント(Jumpアカウント)を利用するか、
SSO/AWS SSOを利用する構成にするかと思います。
【参考記事】
OPENLOGIでは、Jumpアカウントを用意して、SwitchRoleする構成にしています。
SwitchRoleを利用すれば、マネージメントコンソールで複数アカウント利用がやりやすくなるのはもちろん
AWS CLIも、専用の設定を追加することで、簡単に利用することができます。
【参考記事】
しかし、AWSの機能を利用する手段は、
マネージメントコンソールとAWS CLIだけではありません。
Amazon S3やAmazon Athenaなどを便利に利用できるGUIツールがあります。
それらのツールでは、一般的にはアクセスキー/シークレットを設定するものが多いのですが
一部ツールはSwitchRoleにも対応しているものがあります。
以下では、そのようなGUIツールでの対応方法をご紹介します。
Cyberduck
Cyberduckは、MacOS/Windowsに対応した、Amazon S3などCloudストレージへのアクセスが可能なGUIツールです。
Amazon S3は、こういったGUIツールを利用するケースが多いサービスではないかと思います。
特にエンジニアではない方(デザイナー系の方など)がS3にアクセスしたい場合などがあるでしょうか。
CyberduckでAmazon S3に接続する場合、通常はアクセスキー/シークレットキーを指定するようになっています。
ですが、2018年に機能が追加されて、SwitchRoleでの利用が可能になりました。
基本的な設定方法については、以下のClassmethodさんのブログを参照していただくとして。
なのですが、
実は1つハマリポイントがあります。
CyberduckのSwitchRole対応では、~/.aws/credentials
ファイルは認識してくれるのですが、 ~/.aws/config
ファイルは認識してくれません。
なので、先にご紹介したAWS CLIでのSwitchRole利用方法のブログの手順では
~/.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
のほうに記載します。
# スイッチロール先の設定
[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
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_arn
、source_profile
、mfa_serial
の設定は、~/.aws/credentials
に書いてください。
SwitchRoleに対応していないツール
他にも同様のツールはいくつかあるのですが
以下にあげるツールは、検証したところ、通常のアクセスキー/シークレットキーによるアクセスには対応しているものの、SwitchRoleには対応していないようでした。(2021年12月現在)
- MacOS用
- Windows用
まとめ
AWSでSwitchRoleを利用する際の、各種GUIツールの設定方法をまとめました。
~/.aws/config
を解釈してくれないツールがある、というのがちょっとしたハマりどころです。
個人的には ~/.aws/credentials
は名前からして、本当に秘匿情報であるアクセスキー/シークレットだけを書くべきかなと思っていたのですが
source_profile
は、どのprofileのcredentialを参照せよ、ということになるので
これらの設定も ~/.aws/credentials
に書いたほうが、わかりやすくはあるのかな、とも思いました。
(AWSのお作法的にこれが正しいのかはわからないですが)
Discussion