WorkSpaces 使用時に端末内にクレデンシャル情報を保存したくありません。IAM ロールを使用する方法はありますか?

残念ながら、WorkSpaces に IAM ロールをアタッチする機能は提供されておりません。クレデンシャル情報を平文で保存したくない場合は、サードパーティーソフトウェアとなりますが、aws-vault を用いる方法が考えられます。
2022.10.24

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていたこと

Workspaces から AWS CLI を用いて、AWS のリソースにアクセスをしたいです。

個人 IAM ユーザーのアクセスキーやシークレットキーを端末内に平文で保存したくない要件があります。

それを満たすために、WorkSpaces に IAM ロールをアタッチしたいです。

方法はありますか?

どう対応すればいいの?

残念ながら、WorkSpaces には EC2 のように、IAM ロールをアタッチする機能は提供されておりません。

WorkSpaces の Identity and Access Management - Amazon WorkSpaces

注記 Amazon WorkSpaces は、WorkSpace への IAM 認証情報のプロビジョニング (インスタンスプロファイルなど) をサポートしていません。

回避策としては、サードパーティーソフトウェアとなりますが、aws-vault を使用する方法が考えられます。 GitHub - 99designs/aws-vault: A vault for securely storing and accessing AWS credentials in development environments

Windows 環境で aws-vault を導入する方法

今回は WorkSpaces 環境を用意できなかったため、ローカルの Windows マシンに導入します。WorkSpaces(Windows) の場合も、対応方法はほぼ同様です。

aws-vault のインストール

Releaseページから aws-vault-windows-386.exe をダウンロードします。

ユーザー環境変数 Path に aws-vault-windows-386.exe をダウンロードしたフォルダを指定します。

コマンドの入力をやさしくするため、aws-vault-windows-386.exe を aws-vault.exe にリネームします。

コマンドプロンプトを開き、下記のコマンドが実行できれば成功です。

>aws-vault --version
v6.6.0

IAM ユーザーを作成する

S3 への読み込み権限を付与した IAM ユーザー: m.hayakawa を作成し、アクセスキーとシークレットキーを取得します。

その後、aws-vault に add コマンドでクレデンシャル情報を登録します。

>aws-vault add m.hayakawa
Enter Access Key ID: AKIASAMPLESAMPLESAMPLE
Enter Secret Access Key:<ここは入力しても表示がされないので、ペーストすると良いです。>
Added credentials to profile "m.hayakawa" in vault

続いて、aws s3 ls コマンドを、m.hayakawa のクレデンシャル情報を指定して実行します。

>aws-vault exec m.hayakawa -- aws s3 ls
2022-08-20 13:35:46 s3-bucket-test

成功しました!

Windows 環境の場合、aws-vault は .aws/credential にクレデンシャル情報を保存せず、資格情報マネージャに保存します。そのため、平文でクレデンシャル情報を保持しない要件を満たすことが可能です。

参考資料

AWS Vaultで端末内のAWSアクセスキー平文保存をやめてみた | DevelopersIO

Windows + aws-vaultにて、AWSのアクセスキーを保護し、 AWS CLIを AssumeRole で使えるようにしてみた - メモ的な思考的な

aws-vault を使って AWS のアクセスキーを暗号化して扱おう | microCMSブログ