![[小ネタ]DevinにOneTimePasswordを生成してもらうおすすめの方法](https://devio2024-media.developers.io/image/upload/v1739187679/user-gen-eyecatch/mpcnlwyp0hhvtbhs9lcg.png)
[小ネタ]DevinにOneTimePasswordを生成してもらうおすすめの方法
はじめに
今回のブログではDevinに効率よくOTPを生成してもらう方法を紹介します。かなり小ネタですが、中々OTP生成がうまくいかなく時間を費やしたので、同じようなことをしたい場合に参考になると思うので紹介します。
環境構築や権限周りの話は前回のブログをご確認ください。
Devin Secretsをどう使うか
現状Devinで認証情報を安全に保存するためにはSecretsという機能が使えます。Secretsは以下の種類があります。
- Plain Text
- Key-Value
- One-Time Password (TOTP)
単一の認証情報やKey-Valuseで複数まとめるもの、One-Time Password用のものがあります。ここでOTPを生成したい場合、最後のものを選択すべきかと思うのですが、実際に登録するとDevinはTOTPの値をからOTPの生成が中々うまく行かない場合が発生します。
なので、TOTPを使わずにPlain TextかKey-ValueにOTPのシード値をそのまま設定し、DevinにoathtoolなどOTPを生成するパッケージなどを指定して生成して貰う方法を試してみます。今回はPlain TextにAWS_MFA_SEED_SECRETという名前でSEED値(QRコードのURLの場合はsecret=
の値部分)を格納しています。
準備ができたので、Devinに指示してみます。AWS環境などの構成としては、IAMユーザ用のアクセスキーはDevinに付与済みで、ReadOnlyRoleにAssumeRoleできる設定になっています。Devinはデフォルトだとhttps://totp.danhersam.com/
にシークレットを入力してOTPを生成しようとするので、Linuxのパッケージoathtoolを使うよう指示します。
AWSアカウント123456789012にReadOnlyRoleで接続して、S3バケットの一覧を取得してください。
ReadOnlyRoleにはoathtoolにDevin secretsのAWS_MFA_SEED_SECRETを使って生成して接続してください。
すると、2,3分で認証フローを実施し、S3バケットの情報を取得することができました。
所感
OTPの生成を5回ほどDevinに頼んでも失敗したので、同じように時間を費やす人が現れないよう記事にしました。またOTPのシークレット値を外部サイトに持ち出すのもかなり微妙かと思うので、参考にしてもらえれば幸いです。