Windows10でAWS CLIからMFAをする方法


1.概要

自分自身が業務をするときに少しつまずいたので、
Windows10にて、AWS CLIからコマンドでMFAをして接続する方法についてまとめました。

ブラウザからはMFAをしてAWSにログインできるが、
AWS CLIからの接続方法が分からない人に読んでいただけると幸いです。

また、この記事が面白いと思った方は高評価、チャンネル登録をお願いします!
(*^^)v

参考URL
https://aws.amazon.com/jp/premiumsupport/knowledge-center/authenticate-mfa-cli/

2.そもそもMFAとは

MFAとはMulti-factor authentication(多要素認証)の頭文字で、
以下の情報の中から2つ以上を必要とする認証のことです。

  • 知識情報(例:ユーザ名、パスワード)
  • 所持情報(例:スマホで確認できるコード)
  • 生体情報(例:指紋)

従来のユーザ名、パスワードだけの認証よりもセキュリティが向上します。

参考URL
https://moconavi.jp/blog/2021/06/5812/

3.前提条件

前提条件を以下に記載します。

  • Windows10を使用していること
  • IAMユーザの作成が完了し、MFAをする設定が有効化されていること
  • スマホでMFAコードが確認できること
  • AWS CLIのバージョン2をPCにインストールしていること
  • AWS CLIにIAMユーザのアクセスキー、シークレットアクセスキーの設定が完了していること

4.手順

本題となりますが、以下にAWS CLIでMFAをする方法について記載します。

4.1. スマホにてMFAのコードを確認する

4.2. AWS CLIにて以下のコマンドを実行する

aws sts get-session-token --serial-number arn:aws:iam::(AWSアカウントIDの数字12桁):mfa/(IAMユーザ名) --token-code (MFAのコード6桁)

※コマンドを打ち終わる前にMFAのコードが時間切れになった場合は、再度手順4.1を実行してください

4.3.コマンド実行結果として、以下が返ってくることを確認する

{
    "Credentials": {
        "AccessKeyId": "(アクセスキーの情報)",
        "SecretAccessKey": "(シークレットアクセスキーの情報)",
        "SessionToken": "(セッショントークンの情報)",
        "Expiration": "(セッショントークンの有効期限)"
    }
}

4.4.コマンド実行結果をメモ帳等にコピーする

4.5.AWS CLIにて以下のコマンドを実行する

set AWS_ACCESS_KEY_ID = (手順4.3で確認したアクセスキーの情報)
set AWS_SECRET_ACCESS_KEY = (手順4.3で確認したシークレットアクセスキーの情報)
set AWS_SESSION_TOKEN = (手順4.3で確認したセッショントークンの情報)

以上でMFAが有効の場合でもAWS CLIからコマンドを使用することができるようになります。

また、AWS CLIを再起動すると接続できなくなりますが、
セッショントークンの有効期限内であれば再度手順4.5を実行すれば接続できます。

5.補足手順

再起動のたび手順4.5を実行するのが手間な場合は手順4.5の代わりに以下の手順5.1~5.4を実行してください。
セッショントークンの有効期限内であれば、複数回再起動しても最初から接続できる状態となります。

※セッショントークンの有効期限が切れた場合は、以下のコマンドを実行し、AWS CLIを再起動し、手順4.1から実施してください

setx AWS_PROFILE default

5.1.エクスプローラを開き、C:\Users\user.aws\credentialsをメモ帳等で開く

5.2.末尾に以下を追記し、保存する

[(プロファイル名)]
aws_access_key_id = (手順3で確認したアクセスキーの情報)
aws_secret_access_key = (手順3で確認したシークレットアクセスキーの情報)
aws_session_token = (手順3で確認したセッショントークンの情報)

5.3.AWS CLIにて、以下のコマンドを実行する

setx AWS_PROFILE (手順7で入力したプロファイル名)

5.4.AWS CLIを再起動する