WorkSpaces 使用時に端末内にクレデンシャル情報を保存したくありません。IAM ロールを使用する方法はありますか?
困っていたこと
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 で使えるようにしてみた - メモ的な思考的な