AWSコンソールにログインせずIAMユーザーのMFAを設定しました。
前提
- AWS CLIが使えるIAMユーザー(MFAは未設定)を作成済みであること
IAMユーザーのMFAを設定
設定前の状態
仮想MFAデバイスを作成
$ aws iam create-virtual-mfa-device \
--virtual-mfa-device-name sample-user \
--bootstrap-method QRCodePNG \
--outfile $HOME/sample-user.png
{
"VirtualMFADevice": {
"SerialNumber": "arn:aws:iam::123456789012:mfa/sample-user"
}
}
- オプションは以下を指定しています。
- --virtual-mfa-device-name:MFAデバイス名を指定する(今回はIAMユーザー名)
- --bootstrap-method:仮想MFAを作るための方式(今回はQRCodePNG)
- --outfile:ファイル出力先を指定する(今回はホームディレクトリ)
出力されたQRコードを開いて、2段階認証アプリで読み込み
MFAデバイスを有効化
$ aws iam enable-mfa-device \
--user-name sample-user \
--serial-number arn:aws:iam::123456789012:mfa/sample-user \
--authentication-code1 123456 \
--authentication-code2 789012
- オプションは以下を指定しています。
- --user-name:IAMユーザ名
- --serial-number:仮想MFAのシリアルナンバー(仮想MFAデバイスを作成時に返却された値)
- --authentication-code1:2段階認証アプリのコード1つ目
- --authentication-code2:2段階認証アプリのコード2つ目
設定後の状態
AWS CLIでMFAを使ってみる
セッショントークンを取得
$ aws sts get-session-token \
--serial-number arn:aws:iam::123456789012:mfa/sample-user \
--token-code 123456
{
"Credentials": {
"AccessKeyId": "XXXXXXXXXX",
"SecretAccessKey": "XXXXXXXXXX",
"SessionToken": "XXXXXXXXXXXXXXXXXXXX",
"Expiration": "2022-10-16T19:56:07+00:00"
}
}
- オプションは以下を指定しています。
- --serial-number:仮想MFAのシリアルナンバー
- --token-code:2段階認証アプリのコード
セッショントークンを設定
取得したセッショントークンを設定
$ export AWS_ACCESS_KEY_ID=XXXXXXXXXX
$ export AWS_SECRET_ACCESS_KEY=XXXXXXXXXX
$ export AWS_SESSION_TOKEN=XXXXXXXXXXXXXXXXXXXX
AWS CLI を使ってみる
(事前にS3の参照権限を付けています)
$ aws s3 ls
2022-10-02 22:41:43 XXXXXXXXXX
2021-11-20 16:28:40 XXXXXXXXXX
セッショントークンを破棄
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN
参考
- AWS CLI IAMのマニュアル
- classmethodさんの「AWS CLIでIAMユーザーにMFA(多要素認証)を設定する」