![見出し画像](https://assets.st-note.com/production/uploads/images/137354166/rectangle_large_type_2_c82ff66cd6e6b117edfc6031fac389b2.png?width=1200)
【AWS CLI環境構築】configのarn_roleを使わずにMFAトークン認証する方法
本稿は、私がAWSを学習しながら備忘録として書いたものです。
あくまでも私の理解を支援するための記事としてまとめているので、読みづらい点ご容赦ください。
前提.IAMの多要素認証に識別子を登録していること
#1.AWSコンソールにログインする。
#2.検索欄に「IAM」を入力し「ユーザー」を選択する。
![](https://assets.st-note.com/img/1713156805660-bwiyplxcYl.jpg?width=1200)
#3.「ユーザー」メニューから、操作したいユーザー名を選択する。
![](https://assets.st-note.com/img/1713156906129-nSvFb6ifTF.jpg?width=1200)
#4.「セキュリティ認証情報」タブを開き、「多要素認証(MFA)」が設定されていれば、前提の内容はクリアです。
![](https://assets.st-note.com/img/1713157139608-PwJOYqoaoa.jpg?width=1200)
手順1.MFAの一時認証情報でアクセスIDを取得する
コマンドプロンプトを起動し、以下のコマンドを打つ。
C:\user\user>aws sts get-session-token --serial-number arn:aws:iam::00000:mfa/UserName --token-code 584240 --profile credentials_file_name
《補足》
①「--serial-number」で指定したmfa文字列の出処は、「前提#4」多要素認証欄にある”識別子”列に書かれた文字列を指定してください。
②「--token-code」で指定した数値6桁の出処は、「前提#4」多要素認証を設定するときに使用した認証アプリで、認証コード欄に表示された数値を指定してください。
例)私の場合はWinAuthを使って登録したので、このような数値を指定しました。
![](https://assets.st-note.com/img/1713158160759-1w6YktatZ2.jpg?width=1200)
最後にコマンドを打ち、このようになればOK。
{
"Credentials": {
"AccessKeyId": "XXXXXXXXXXXXXXX",
"SecretAccessKey": "YYYYYYYYYYYYY",
"SessionToken": "SSSSSSSSSSSSSSSSS",
"Expiration": "2024-04-15T00:00:00"
}
}
手順2.".aws"フォルダを作る
以下のような構成で、フォルダとファイルを作る。
【構成】
C:/user/.awsフォルダ配下
・cliフォルダ
・configファイル
・credentialsファイル
※configファイルは、0KBの空ファイルでOKです。
手順3.credentialsファイルの中身を作る
以下のような構成で、credentialsファイルの中身を作る。
【構成】
[credentials_file_name]
aws_access_key_id=(手順1で得た”AccessKeyId”の文字列)
aws_secret_access_key=(手順1で得た”SecretAccessKey”の文字列)
aws_session_token=(手順1で得た”SessionToken”の文字列)
手順3.credentialsのプロフィールを作る
手順1で作成した.awsフォルダでコマンドプロンプトを起動し、以下のコマンドを打つ。
C:\user\user>aws s3 ls --profile credentials_file_name
このようになればOK。
2024-03-14 00:00:00 aws-cloudtrail-lake-query-XXXXXXX
2022-12-11 00:00:00 XXXXXXXXX
2022-12-11 00:00:00 XXXXXXXXX
2022-12-11 00:00:00 env-setup-XXXXXXXXXXX
: など
以上で、設定は完了です。
この方法でMFA認証を設定すると何がいいの?どう使えるの?
AWSコマンドを打つ際にいちいちMFA認証コードを入力しなくても、よくなります。
例えば、こういった使い方ができます。
例)VPCをコマンドから作成するとき。
C:/user>aws ec2 create-vpc --cidr-block 10.0.0.0/16 -query Vpc.VpcId --output text --tag-specification ResourceType=vpc,Tags="[{Key=""Workshop Name"",Value=""IaC Generator Workshop""}]" --region us-east-1 --profile MFA_CREDENTIALS_FILE_NAME
通常の方法だとこのようにしたら「Enter MFA code for arn:aws:iam::0 0 0 0 0:mfa/UserName: 」というように、MFA認証コードの入力を求められます。
しかし、MFA認証情報をcredentialsファイルに書いてしまえば、認証アプリを使うことなく、作業効率向上を図ることができます。
※ただ、これはあくまでも、一時的に認証を通過させる手法です。
手順1で得た”Expiration”に書かれた有効期限を超えると使えなくなるので、その都度、手順1からやり直す必要が出ます。
そのため、例えばバッチ処理をさせたいなどの場合に、効果的に活用できるかと思います。