[小ネタ]DevinにOneTimePasswordを生成してもらうおすすめの方法

[小ネタ]DevinにOneTimePasswordを生成してもらうおすすめの方法

One Time Passwordの効率的な生成方法に関して紹介。Devin調査ブログ4つ目
Clock Icon2025.02.10

はじめに

今回のブログではDevinに効率よくOTPを生成してもらう方法を紹介します。かなり小ネタですが、中々OTP生成がうまくいかなく時間を費やしたので、同じようなことをしたい場合に参考になると思うので紹介します。

環境構築や権限周りの話は前回のブログをご確認ください。

https://dev.classmethod.jp/articles/prologue-to-make-devin-an-aws-engineer/

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バケットの情報を取得することができました。

スクリーンショット 2025-02-08 15.30.32.png

所感

OTPの生成を5回ほどDevinに頼んでも失敗したので、同じように時間を費やす人が現れないよう記事にしました。またOTPのシークレット値を外部サイトに持ち出すのもかなり微妙かと思うので、参考にしてもらえれば幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.