#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を再起動する