【質問】
特定のWebサイトにログインする際に使用するパスワードを平文で記述したくない。
タスク内の変数に直接書いたり外部ファイルに平文で直接書いたりするのは避けたいが
何か良い方法はないか。
【回答】
AutoMateの関数を使用して、文字列の暗号化・復号をタスク内で行うことが可能です。
(以下のいずれの関数も、共通鍵暗号化方式です)
(「暗号化」アクションは、ファイルの暗号化を行うアクションのため、変数の暗号化には使用できません)
関数はそれぞれ、
暗号化する場合・・・「Encrypt64(Data, Password)」 ※「Data」は暗号化対象文字列、「Password」は暗号化パスフレーズ
復号する場合・・・・「Decrypt64(Data, Password)」 ※「Data」は暗号化された文字列、「Password」は暗号化パスフレーズ
を使用します。
※AutoMate 11.2以降では、上記に加えて
暗号化する場合・・・「Encrypt(bstrPlainText, bstrKey)」 ※「bstrPlainText」は暗号化対象文字列、「bstrKey」は暗号化パスフレーズ
復号する場合・・・・「Decrypt(bstrCipherText, bstrKey)」 ※「bstrCipherText」は暗号化対象文字列、「bstrKey」は暗号化パスフレーズ
が使用できます。
前者はRC4アルゴリズムを使用して暗号化するのに対し、こちらはAES256アルゴリズムを使用して暗号化します。
以下、暗号化・復号する一例です。
(以下の一例では、11.2以前でも使用可能な「Encrypt64(Data, Password)」および「Decrypt64(Data, Password)」関数を使用しています)
(関数のみ変更することによりAES256でも同様の動作が可能です)
---------------一例:ここから---------------
<!--暗号化前のテキスト、暗号化後のテキスト、暗号化パスフレーズを変数として用意-->
<AMVARIABLE NAME="var_PlainText" VALUE="AutoMateの暗号化です" DESCRIPTION="暗号化前のテキスト" />
<AMVARIABLE NAME="var_EncryptedText" VALUE="" DESCRIPTION="暗号化後のテキスト" />
<AMVARIABLE NAME="var_Password" VALUE="EncryptPassword01" DESCRIPTION="暗号化パスフレーズ" />
<AMSHOWDIALOG COUNTDOWNDELAY="3">文字列「%var_PlainText%」を
パスワード「%var_Password%」で
暗号化します。</AMSHOWDIALOG>
<!--暗号化前のテキストを暗号化パスフレーズで暗号化した結果を変数に格納-->
<AMVARIABLE ACTIVITY="set" VARIABLENAME="var_EncryptedText">%Encrypt64(var_PlainText, var_Password)%</AMVARIABLE>
<AMSHOWDIALOG COUNTDOWNDELAY="3">暗号化後のテキストは
「%var_EncryptedText%」
になります。</AMSHOWDIALOG>
<!--ここでデフォルト値を変更して「OK」すると、パスワード違いにより正しい結果が表示されない-->
<AMSHOWDIALOG ACTIVITY="input" DEFAULTVALUE="%var_Password%" RESULTVARIABLE="var_Password" COUNTDOWNDELAY="10">文字列「%var_EncryptedText%」を復号するパスワードを入力してください</AMSHOWDIALOG>
<AMSHOWDIALOG COUNTDOWNDELAY="3">復号後のテキストは
「%Decrypt64(var_EncryptedText, var_Password)%」
になります。
復号に使用したパスワードは「%var_Password%」です。</AMSHOWDIALOG>
---------------一例:ここまで---------------
こちらを応用すると、外部ファイルには上記一例におけるステップ7の暗号化結果を書いておくことで
Webシステムで使用する平文のパスワードそのものをどこにも記述せずに利用可能となります。
セキュリティの観点で考慮いただきたい点として、上記手法を用いた場合でもAutoMate上でパスワード文字列を平文で保持するタイミングが存在します。
また、上記手法で運用を行う場合には暗号化パスフレーズを別途管理する必要があり、またAutoMateのタスクビルダーを使用可能な方であればパスワードを復元することが可能です。
AutoMate開発・運用担当者にパスワードを知られたくない(復元をできなくする)場合には、実行時にダイアログアクションを用いて暗号化パスフレーズの入力を求めるなど
一部で担当者の操作が介在する形での構築および運用が必要となります。