🙆‍♀️

【AWS】AWSCLIでMFA認証をする方法とは?

2024/02/09に公開

はじめに

AWSCLIでAWSにアクセスする際に「権限で弾かれるな」と思っていたら、原因はAWSCLIでMFAの認証をしていないことでした。
今回は、AWSCLIでMFAの認証を実施する方法についてご紹介したいと思います。

前提

  • MacOSを使用
  • IAMユーザー作成済みでアクセスキー取得済み
  • IAMユーザーにMFA設定済み
  • AWSCLIにてaws configureコマンドを実行し、認証情報を入力済み
  • AWSCLIは、以下のバージョンを導入
$ aws --version
aws-cli/2.15.11 Python/3.11.6 Darwin/23.2.0 exe/x86_64 prompt/off

作業手順

1.セッショントークン等の情報を取得する。

以下のコマンドを実行し、MFA認証に必要な情報を取得する。

コマンド
aws sts get-session-token --serial-number <IAMユーザーのMFAのarn> --token-code <認証コード>

上記のコマンドに入力する情報は、以下になります。

項目 内容
IAMユーザーのMFAのarn IAMユーザーのMFA設定画面から確認できる識別子 arn:aws:iam::999946309999:mfa/<IAMユーザー名>
認証コード Authenticator等で取得するコード 777777

実行例は、以下になります。

実行例
aws sts get-session-token --serial-number <IAMユーザーのMFAのarn> --token-code <認証コード>
{
    "Credentials": {
        "AccessKeyId": "access-key-id"
        "SecretAccessKey": "secret-access-key",
        "SessionToken": "temporary-session-token",
        "Expiration": "expiration-date-time",
    }
}

取得できる情報は、以下になります。

項目 内容
AccessKeyId アクセスキー
SecretAccessKey シークレットアクセスキー
SessionToken セッショントークン
Expiration 有効期限

アクセスキー/シークレットアクセスキー/セッショントークンの情報を控えます。

2.環境変数で一時的な情報を使用

以下のコマンドを実行し、環境変数にエクスポートすることによって一時的な認証情報を使用する。

コマンド
export AWS_ACCESS_KEY_ID=<AccessKeyId>
export AWS_SECRET_ACCESS_KEY=<SecretAccessKey>
export AWS_SESSION_TOKEN=<SessionToken>

3.動作確認

以下のようなAWSCLIのコマンドを実行して、正常に結果が返ってくることを確認。。

aws s3 ls

参考

https://repost.aws/ja/knowledge-center/authenticate-mfa-cli

Discussion