MFA(多要素認証)とは
MFAとは、本人確認のための要素を複数、ユーザーに要求する認証方式であるそうです。AWSにおいてもMFAを有効化することが推奨されているので今回設定方法をまとめました
マネジメントコンソールからの設定
IAMユーザーのMFAを有効化するには、AWS上、IAMのサービスから自分のユーザーを選択し、認証情報タブの「MFAデバイスの割り当て」から「管理」を選択しMFAを設定します。

ここでは仮想MFAデバイスを選択します。YubiKeyなど物理的なデバイスを所有している場合はその他を選んでもOKです。仮想MFAデバイスとしてはGoogle Authenticatorなどのアプリをスマホ等にインストールして使用します

QRコードを表示させてスマホアプリから認識させる、表示された6桁のコードを2つ入れると登録することができます

CLI上でのMFAの設定
CLIを使ってAWSの操作をすることもあると思います。その場合にもMFAを有効にしたい場合、コマンドはコマンドラインから入力するので、その都度6桁のコードをいれなければならないの?と思いますが、そんなことはありません。この場合 sts get-session-token" のコマンドを用いて一時的な有効期限付きの認証情報を取得し(その際に6桁のコードを入力する)、その一時的な認証情報を環境変数に設定することでCLI上でもMFAを有効にします。
$ aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token
MFAのARNはマネジメントコンソールでMFAを設定した認証情報の画面から取得します。token-code に6桁のコードを入力します。結果、以下のような認証情報と有効期限 (デフォルトでは 12 時間) を含む出力が得られます。
{
"Credentials": {
"SecretAccessKey": "secret-access-key",
"SessionToken": "temporary-session-token",
"Expiration": "expiration-date-time",
"AccessKeyId": "access-key-id"
}
}
この情報を以下のように環境変数に設定する、もしくはaws configureでプロファイル設定を追加することで、一時的な認証情報を使ってAWSにアクセスすることができます。
export AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output
export AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output
export AWS_SESSION_TOKEN=example-session-token-as-in-previous-output
永続的なIAM認証情報ではMFAによるアクセスはできないので、CLIでMFAを有効にする際は上記のような一時的な認証情報を使用する必要があります。