jaws-framework で作ったアプリケーションを MFA によって保護された API アクセスでデプロイする
JAWS/best_practices.md at 6bfd2ca7a00054b750add46a909af3f4a9d4a749 · jaws-framework/JAWS · GitHub によると cloudformation の実行は jaws が生成したテンプレートを多段階の認証を経てAWS Consoleにアクセスし、UI上でペーストして実行すると良いみたいなことが書いてあるが、とてもやりたくないと思う。
かといってアクセスキーで認証できるアカウントに AdministratorAccess をやらないというは確かにそうしたい。
- Improve AWS security: protect your keys with ease
- MFA 保護 API アクセスの設定 - AWS Identity and Access Management
- MacからAWSにアクセスする時はAssumeRoleすることにした - Qiita
CLI の API アクセスも MFA で認証する方法があることを知って、上の記事を読むと意外に手間がかからなかった。
- IamUser: jaws (MFA 有効化 + アクセスキー発行 + いくらか使いたいポリシーをアタッチ)
- Role: cfn-executer (MFA による認証が済んだ jaws ユーザーにロールを使うのを許可している)
を用意して ~/.aws/credentialsをこのようにした。
[toqoz-jaws] aws_access_key_id = aaa # jawsユーザーのアクセスキー aws_secret_access_key = AAA [toqoz-jaws-cloudformation] source_profile = toqoz-jaws role_arn = arn:aws:iam::$ACCOUNT_ID:role/cfn-executer mfa_serial = $MFA_SERIAL
aws cli とかだと、これでプロファイル toqoz-jaws-cloudformation を使えば勝手に mfa code を聞いてくれるんだけど、jaws dash
はそうもいかなかったので、cloudformation の update は aws cli からそれ以外は jawsのコマンドでやることにした
bin/deploy