Hiratake Web ロゴ

AWSで多要素認証有効化時にCLI環境で認証するための作業を簡略化するツールを作った

投稿した日
更新した日
書いたひと
icon
ひらたけ

AWS では多要素認証(MFA)を設定して、ログイン時にパスキーや Google Authenticator などのアプリで生成されるコードの入力を求めることでセキュリティを強化することができます。ブラウザからログインして操作するマネジメントコンソールではなく、AWS CLI でも MFA を使う場合 aws sts get-session-token コマンドを実行して一時的な認証情報を取得して、なんやかんやして…とわりと面倒です。

というわけで それらの手順を簡略化するツールを自作 しました。

検索すると既に同じことをやるツールは存在していて、そのツールの使い方を解説する記事などもたくさん出ています。が、使われているツールが何年も更新がされておらずちょっぴり不安だったのと、単純に自分で作ってみたかったので自作してみました。

以前少し触ってみた、UnJS の citty というツールを使ってみたかったので、コードはシェルスクリプトではなく TypeScript(JavaScript)で書いています。プログラム中や README にある英語は、Google の Gemini と相談しながら書きました(英語なんもわからんので)。

npm の公開パッケージとして置いているので、

$ npm install -g @hiratake/aws-mfa

などでグローバルにインストールすると aws-mfa コマンドが使えるようになります。

aws-mfa コマンドを実行すると、既に aws configure コマンドでアクセスキー等を設定済みのプロファイル一覧が表示されます。MFA 認証を行うプロファイルを選択すると Google Authenticator などのアプリで生成された 6 桁のコードの入力を促すプロンプトが表示され、入力すると MFA 認証が実行されます。

内部でやっていることは入力された内容を元に aws sts get-session-token コマンドを実行したり、aws configure set コマンドで認証情報をマシンに保存したりしているだけなので、既存のツールとたぶん同じ。

Node 製のツールなので、今回使用した citty 同様 UnJS にあるパッケージ consola を使用して、カラフルでエレガントな感じ(?)にしたのが個人的こだわりポイント。

既に他の人が良い感じのものを色々出している用途のツールではあるけれど、とりあえず自分で使う用に動くものを作ることが出来てよかったなーというお気持ち。気が向いたら色々ブラッシュアップをしていきたいところです。