🙆♀️
【AWS】AWSCLIでMFA認証をする方法とは?
はじめに
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
参考
Discussion