AWSで多要素認証有効化時にCLI環境で認証するための作業を簡略化するツールを作った
- 投稿した日
- 更新した日
- 書いたひと
- ひらたけ
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
を使用して、カラフルでエレガントな感じ(?)にしたのが個人的こだわりポイント。
既に他の人が良い感じのものを色々出している用途のツールではあるけれど、とりあえず自分で使う用に動くものを作ることが出来てよかったなーというお気持ち。気が向いたら色々ブラッシュアップをしていきたいところです。