はじめに
MFAを設定しているユーザでAWS CLIを利用してみたいと思ったので、試してみました。
利用方法
アクセストークンの設定
ユーザのCLIアクセストークン等の情報は事前に発行しておいてください。
aws configure
下記4点の情報について入力を求められるので、ユーザの認証情報を入力してください。
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
CLI上でMFA認証
ターミナル上で下記の文を実行します。
aws sts get-session-token --serial-number [[自分のMFAデバイスのARN]] --duration-seconds 86400 --token-code [[MFAデバイスの認証コード]]
自分のMFAデバイスのARNの確認方法
AWSマネジメントコンソールのユーザー
タブから、確認したいユーザのページを開きます。
認証情報
のタブを開き、赤枠内に記載されているARNを利用します。
--token-codeの確認方法
自分が設定しているMFAの認証機器上でコードを確認してください。
MFA認証実行後の設定
MFA認証を実行すると、下記のような認証結果が返却されます。
{
"Credentials": {
"AccessKeyId": "AccessKeyIdxxxxxxxxxxxxxxxxxxx",
"SecretAccessKey": "SecretAccessKeyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"SessionToken": "SessionTokenxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"Expiration": "202X-XX-XXTXX:XX:XX+00:00"
}
}
実行結果を元に、認証情報を設定します。
--profile
で名前を付けて認証情報を設定します。
今回は、「mfa-user」という名前で認証情報を登録します。
~/.aws/credentials
に情報を登録します。
[mfa-user]
output = json
region = ap-northeast-1
aws_access_key_id = AccessKeyIdxxxxxxxxxxxxxxxxxxx
aws_secret_access_key = SecretAccessKeyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
aws_session_token = SessionTokenxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
実行確認
上記の設定で、mfa-user
というプロファイルでCLIが動作するようになっていると思います。
実行できるか確認してみましょう。
aws s3 ls --profile mfa-user
正常に設定されていた場合、エラーでは無く、s3のバケット一覧が表示されるはずです!
s3のバケットが1つも無い場合は1つも無い旨のメッセージが表示されます。
まとめ
MFA認証を有効にしたまま、CLIを利用する方法をまとめてみました。
今までは、AWSマネジメントコンソールから操作していましたが、今後は、CLIを積極的に利用していきたいと思います。