JumpCloudは10人まで無料で利用できるので、小さな企業等だと便利ですよね
RAIDUS機能もあるので使われている方も多いのではないでしょうか。
今回はJumpCloudでパスワードの有効期限が迫っているユーザーに対して期限がきれますよ。
という通知を表示させる方法です。
(パスワードに期限をつけるなんてナンセンスと思われそうですが、
現行(2020年10月現在)のPCI DSSではパスワードの定期更新が求められるため、設定しなければいけない企業もあるということです)
目次
前提
- Macに対してJumpCloudを設定し、ログインするように設定している
- パスワード期限の7日前からダイアログを表示させ、パスワード変更方法を記したページURLを自動的に開くようにする
APIキーの取得
スクリプト作成
以下のようなスクリプトを作成します。
JCAPIKeyには、事前に控えたAPIキーを貼り付けます
#!/bin/bash
## Populate below variable before running command
JCAPIKey=''
## alertDaysThreshold set to '7' by default.
## Users whose passwords will expire in 7 days or less will receive a prompt to update.
## Update the value of the variable alertDaysThreshold=''to modify the threshold.
alertDaysThreshold='7'
#------- Do not modify below this line ------
user=$(ls -la /dev/console | cut -d " " -f 4)
passwordExpirationDate=$(
curl -s \
-X 'POST' \
-d '{"filter":[{"username":"'${user}'"}],"fields" : "password_expiration_date"}' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'x-api-key: '${JCAPIKey}'' \
"https://console.jumpcloud.com/api/search/systemusers"
)
regex=':".*T'
if [[ $passwordExpirationDate =~ $regex ]]; then
unformattedDate1="${BASH_REMATCH[@]}"
unformattedDate2=$(echo "${unformattedDate1:2}")
expirationDay=${unformattedDate2%?}
echo "${user} password_expiration_date: ${expirationDay}"
else
echo "Could not locate the password expiration date for user ${user}."
echo "Is ${user} enabled for password_never_expires?"
echo "If so users enabled with password_never_expires have no password expiration date."
exit 1
fi
Today="$(echo $(date -u +%Y-%m-%d))"
daysToExpiration=$(echo $((($(date -jf %Y-%m-%d $expirationDay +%s) - $(date -jf %Y-%m-%d $Today +%s)) / 86400)))
echo "${user} password will expire in ${daysToExpiration} days"
if [ "$daysToExpiration" -le "$alertDaysThreshold" ]; then
echo "${daysToExpiration} within alertDaysThreshold of ${alertDaysThreshold} prompting user"
userPrompt=$(sudo -u $user osascript -e '
display dialog "パスワードの期限が残り'"${daysToExpiration}"'日で切れます。\n OKをクリックし表示された手順に従いパスワードを更新してください。" buttons {"OK","Cancel"} default button 1 with title "パスワード有効期限通知" with icon file "Applications:Jumpcloud.app:Contents:Resources:AppIcon.icns"
set tmp to result
set btn to button returned of tmp
')
echo "$userPrompt"
if [ $userPrompt = "OK" ]; then
`sudo -u $user /usr/bin/open -a '/Applications/Safari.app' "https://パスワード変更手順を記したWikiなどのURL"`
fi
else
echo "${daysToExpiration} NOT within alertDaysThreshold of ${alertDaysThreshold} NOT prompting user"
fi
exit 0
JumpCloudにスクリプトを登録する
PowerShellで登録する方法もありますが、管理ポータルか登録させていきます
- 管理ポータルにログインし、「Commands」→【+】アイコンをクリックします

- 各種内容を入力します
NAME わかりやすい名前 RUN AS root COMMAND 事前に作成したスクリプトの内容を貼り付け EVENT Run as Repeating
Day
Repeat every 1 days
Run at :実行したい時間 - 対象のグループやシステムを選択し、【save command】をクリックします
今回Macを対象としているので、Macグループを指定しています
(事前にグループに対してマシンを紐付ける必要があります)

- 実行されると、command resultの欄に実行結果が表示されてきます

- 結果をクリックすると、標準出力の結果等を確認することができます

Mac側での表示のされ方
Mac側でパスワードの期限切れが近づいており、設定したタイミングでスクリプトが実行されると以下のようなダイアログが表示されます
OKをクリックすると、指定したURLが開きます
JumpCloudアプリでパスワードを変更する
FileVaultの絡みがあるので、JumpCloudのアプリから変更するのが無難かと思います
