AppleScriptからキーチェーン項目を読み出す方法
[主題]
AppleScriptにおいて、パスワードを安全に取り扱う方法を説明したい。
[背景]
AppleScriptを用いて、SMBドライブをマウントする場合、ユーザ名とパスワードが必要になる。これは一例であり、他にもAppleScriptでパスワードを入力するケースはあるだろう。
対応方法はいくつかあるが、最も安全に取り扱うのは、キーチェーンアクセスにパスワードを管理してもらう方法だと考える。
ところが、ここでひとつ問題が生じた。筆者の検索技術の問題かも知れないが、AppleScriptからキーチェーンに保存されたパスワードを参照する手段が見つからなかったのだ。
遠い昔、Mac OS X 10.7で廃止になったKeychain Scriptingや、現在では動かないFrameworkを用いる方法など、インターネット上の資源に愛想が尽きかけた時、やっと光が見えた。
それが、今回紹介するsecurity
というOSビルトインコマンドである。
[環境]
参考までに、筆者の環境を記載しておく
MacBook Pro 2018 15.4inch(インテルMac)
macOS 12.6 Monterey
[手順]
-
キーチェーンアクセスを用いた新規パスワード項目の作成
LaunchPadのその他の項目から、キーチェーンアクセスを起動する。起動したら、下図を参照して、新規パスワード項目を作成する。(筆者は、ログインキーチェーンに項目を作成した)
記入する項目は、キーチェーン項目名と、アカウント、それにパスワードである。筆者は項目名はAS_MountSMB、アカウントとパスワードは、マウントするMacのログインアカウントを入力した。
-
securityコマンドによるアカウントの読み出し
項目1で作成したパスワード項目から、アカウントを読み出すには、次のコマンドを実行する。security find-generic-password -l AS_MountSMB | grep acct | cut -d = -f2 | sed 's/\"//g'
-
securityコマンドによるパスワードの読み出し
項目1で作成したパスワード項目から、パスワードを読み出すには、次のコマンドを実行する。security find-generic-password -l AS_MountSMB -g -w
-
AppleScriptへの組み込み
AppleScriptでsecurityコマンドを利用するには、do shell script
を用いる。アカウント
set userAccount to do shell script "/usr/bin/security find-generic-password -l AS_MountSMB | grep acct | cut -d = -f2 | sed 's/\"//g'"
パスワード
set userPass to do shell script "/usr/bin/security find-generic-password -l AS_MountSMB -g -w"
-
スクリプト例
SMBディスクをマウントするAppleScriptの例を以下に示す。set userAccount to do shell script "/usr/bin/security find-generic-password -l AS_MountSMB | grep acct | cut -d = -f2 | sed 's/\"//g'" set userPass to do shell script "/usr/bin/security find-generic-password -l AS_MountSMB -g -w" set smbMachine to "smb://Macの名前._smb._tcp.local/" set smbDisk to "マウントするディスク名" set thePath to smbMachine & smbDisk try with timeout of 100 seconds mount volume thePath as user name userAccount with password userPass end timeout --on error end try
参考サイト
以上。
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント