カテゴリ: AWS CLI 更新日: 2026/02/22

【AWS CLI入門】CLIでMFA(多要素認証)を設定する方法と自動化のコツを初心者向けに徹底解説

501
【AWS】CLIでMFA(多要素認証)を設定する方法と自動化のコツ

先生と生徒の会話形式で理解しよう

生徒

「AWS CLIを使っているのですが、MFA多要素認証を設定しないといけないと言われました。CLIでMFAってどうやるんですか?」

先生

「AWSではセキュリティ強化のためにMFA多要素認証が推奨されています。AWS CLIでもMFAデバイスを使って一時的な認証情報を取得できます。」

生徒

「毎回コードを入力するのは大変そうです。自動化はできますか?」

先生

「可能です。AWS CLIのstsコマンドやスクリプトを活用すれば、MFA付き認証の自動化もできます。順番に見ていきましょう。」

1. AWS CLIでMFAを設定する理由とは

1. AWS CLIでMFAを設定する理由とは
1. AWS CLIでMFAを設定する理由とは

AWSCLIとMFA多要素認証は、AWSアカウントのセキュリティ対策において非常に重要な組み合わせです。AWSではルートユーザーやIAMユーザーに対してMFAデバイスを設定することで、不正アクセスや情報漏えいのリスクを大幅に軽減できます。

特にAWSCLIを利用してEC2やS3、IAMなどのリソースを操作する場合、アクセスキーだけで運用しているとセキュリティリスクが高まります。MFAを設定することで、ワンタイムパスワードを含む多要素認証が必須となり、安全性が向上します。

AWSCLIでMFAを使う基本は、一時的なセキュリティ認証情報を取得して操作する方法です。これにより、長期間有効なアクセスキーを使わずに済むというメリットがあります。

2. 事前準備 IAMユーザーとMFAデバイスの設定

2. 事前準備 IAMユーザーとMFAデバイスの設定
2. 事前準備 IAMユーザーとMFAデバイスの設定

まずAWSマネジメントコンソールでIAMユーザーにMFAデバイスを設定します。IAMサービスから対象ユーザーを選択し、セキュリティ認証情報の画面で仮想MFAデバイスを有効化します。

GoogleAuthenticatorなどの認証アプリを使い、表示されたQRコードを読み取ります。その後、表示されるワンタイムコードを二回入力すればMFA設定は完了です。

次にAWSCLIがインストールされていることを確認します。


aws --version
aws-cli/2.15.0 Python/3.11 Linux/5.15 botocore/2.0.0

バージョン情報が表示されればAWSCLIは正しくインストールされています。続いてaws configureで基本設定を行います。


aws configure
AWS Access Key ID [None]: AKIAxxxxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]: json

ここで入力するアクセスキーはIAMユーザーのものを使用します。

3. AWS CLIでMFA付き一時認証情報を取得する方法

3. AWS CLIでMFA付き一時認証情報を取得する方法
3. AWS CLIでMFA付き一時認証情報を取得する方法

AWSCLIでMFA多要素認証を使う場合、sts get-session-tokenコマンドを利用します。これは一時的なセキュリティ認証情報を取得するためのコマンドです。


aws sts get-session-token \
--serial-number arn:aws:iam::123456789012:mfa/username \
--token-code 123456
{
    "Credentials": {
        "AccessKeyId": "ASIAxxxxxxxxxxxx",
        "SecretAccessKey": "xxxxxxxxxxxxxxxx",
        "SessionToken": "xxxxxxxxxxxxxxxx",
        "Expiration": "2026-02-20T12:00:00Z"
    }
}

serial-numberにはMFAデバイスのARNを指定します。token-codeには認証アプリに表示されるワンタイムパスワードを入力します。

出力されるAccessKeyId、SecretAccessKey、SessionTokenが一時的な認証情報です。この情報を環境変数に設定することで、MFA付きAWSCLI操作が可能になります。

AWSの基本用語や仕組みを、図解でサクッと理解したい人には、 入門の定番書がこちらです。

AWSの基本が全部わかる教科書をAmazonで見る

※ Amazon広告リンク

4. 環境変数に設定してMFA認証を有効にする

4. 環境変数に設定してMFA認証を有効にする
4. 環境変数に設定してMFA認証を有効にする

取得した一時認証情報をexportコマンドで環境変数に設定します。


export AWS_ACCESS_KEY_ID=ASIAxxxxxxxxxxxx
export AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxx
export AWS_SESSION_TOKEN=xxxxxxxxxxxxxxxx

設定後にS3の一覧を取得してみます。


aws s3 ls
2026-01-10 10:00:00 my-s3-bucket
2026-01-15 12:30:00 log-bucket

正常に表示されれば、AWSCLIでMFA多要素認証が有効になっています。Expirationで指定された時間を過ぎると無効になるため、再度取得が必要です。

5. AWS CLIでMFAを自動化するスクリプト例

5. AWS CLIでMFAを自動化するスクリプト例
5. AWS CLIでMFAを自動化するスクリプト例

毎回コマンドを手入力するのは大変です。bashスクリプトを作成することでMFA認証の自動化が可能です。


read -p "MFAコードを入力してください: " MFACODE

aws sts get-session-token \
--serial-number arn:aws:iam::123456789012:mfa/username \
--token-code $MFACODE \
--query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]' \
--output text

queryオプションを使うことで必要な値だけ取得できます。さらにevalやexportと組み合わせれば、ワンコマンドでMFA付き認証が可能になります。

AWSCLIの自動化は、セキュリティを保ちながら作業効率を高める重要なテクニックです。

6. assume-roleとMFAを組み合わせた高度な運用

6. assume-roleとMFAを組み合わせた高度な運用
6. assume-roleとMFAを組み合わせた高度な運用

企業環境ではIAMロールを利用したassume-role運用が一般的です。MFA条件付きロールを設定することで、より強固なセキュリティ構成を実現できます。


aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/AdminRole \
--role-session-name mfasession \
--serial-number arn:aws:iam::123456789012:mfa/username \
--token-code 123456

この方法では、MFA認証を通過したユーザーのみがロールを引き受けることができます。AWSCLIでのMFA設定とロール運用を組み合わせることで、安全なクラウド管理が可能になります。

AWSCLIでMFA多要素認証を正しく設定し、自動化スクリプトやassume-roleと組み合わせることで、セキュリティと利便性を両立できます。AWSセキュリティベストプラクティスとして、ぜひ導入しておきたい設定です。

AWS CLIの一覧へ
新着記事
Flutterアプリの署名設定(Android・iOSのポイント)
Flutterアプリの署名設定を完全解説!Android・iOSのビルドとデプロイ初心者ガイド
Java のインターフェースとは?普通のクラスとの違いを学ぼう
Javaのインターフェースとは?普通のクラスとの違いを学ぼう【初心者向け解説】
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
EC2の料金体系を完全解説!オンデマンド・リザーブド・無料枠の違いとは?
EC2の料金体系を完全解説!オンデマンド・リザーブド・無料枠の違いとは?
人気記事
インスタンスタイプの料金比較と最適な選び方(最新2025年版)
AWSのインスタンスタイプの料金比較と最適な選び方【2025年最新版】
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク