🔥

YubiKeyでCLI環境でのAWS MFA認証を楽にする

に公開
3

Discussion

Tomoya AmachiTomoya Amachi

.aws/config に以下の設定をすると、セッションがない場合に自動で認証してくれます。

[profile ${IAM_USERNAME}]
mfa_serial=arn:aws:iam::${ACCOUNT_ID}:mfa/${MFA_DEVICE_NAME}
credential_process=aws-vault exec  <aws-vault profile名> --json --prompt ykman --
Eviry Tech BlogEviry Tech Blog

コメントありがとうございます。コメントいただきました内容に関して追記させていただきました。

longman_584longman_584

MFAを有効にしたIAMユーザーでAWS CLIを使う際に作業負荷を下げる方法を探していたので、非常に助かりました。
ありがとうございます。

ところで、${IAM_USERNAME}というプレースホルダーの部分、ここは少々混乱しました。
実際に指定するのは任意の文字列であり、IAMユーザー名とは無関係ですよね。

なので、プロジェクト名project-1で使っているアカウントID123456789012のIAMユーザーlongmanについて、わかりやすいようにプロジェクト名+IAMユーザー名でプロファイルを作りました。

aws-vault add project1-longman

というコマンドを実行し、configに[profile project1-longman]というエントリが生成されます。

あともう1つ、私の環境ではデフォルトリージョンをセットしていないので、プロファイルにリージョンがない場合はaws-vault exec --prompt ykman project1-longman-s3-ioで以下のエラーが返りました。

operation error STS: AssumeRole, failed to resolve service endpoint, an AWS region is required, but was not found

そんなこんなで、最終的なconfigがこんな感じになりました(s3-ioは検証用にS3フルアクセスを持つロールです)。

[profile project1-longman]
region=ap-northeast-1
mfa_serial=arn:aws:iam::123456789012:mfa/yubi-for-switch
source_profile=project1-longman

[profile project1-longman-s3-io]
include_profile=project1-longman
role_arn=arn:aws:iam::123456789012:role/s3-io