MacのセットアップでFileVault2をできるだけ早くかけたい
この記事の概要
ActiveDirectory(以下AD)でユーザ管理をして居る環境でもFileVault2でのストレージの暗号化をあらかじめ有効にした状態でMacのセットアップを行う方法です
ADは使って無いけど利用者のためのアカウントを作る前にFileVault2を有効にしておきたい場合にも使えます。
はじめに
会社のMacのセットアップを行う際、FileVault2でストレージの暗号化を行うわけですが皆さんどのように行って居るでしょうか? 私のググり力では、Configration Profileで設定を行って次回のユーザログイン時に有効にするという設定をするのが一般的な様に思います。
しかし、ユーザの手に渡る前にFileVault2をかけたい場合にはConfigration Profileでの設定を行う事は出来ないです(私が知らないだけで出来るのかな…)
さらにADでユーザ管理を行って居る場合ユーザのADのパスワードが無いとFileVault2への追加が大変難しいのです。(Configuration Profileを使って次回ログイン時にFileVault2を有効にするなら出来るけど、今回はユーザの手に渡る前にFileVault2を有効にしたいという記事です)
しかし、ここに書いた手順でFileVault2を適用すると、ユーザのADのパスワードをキッティングを行う人が知ること無く利用者ユーザがFileVault2のロック解除アカウントに追加された状態でキッティングを完了することが出来ます。(初回ログインパスワードとして管理者が適当なパスワードを設定した後でNoMADでADと同期させます)
つまりセットアップを行った管理者の手を離れる前にFileVault2を有効化する事が可能になります。
ネットワーク回線が貧弱でゼロタッチキッティングが難しい人の家にMacを送付するという事が発生してもキッティング済みMacをストレージが暗号化された状態で送る事が出来て安心ですし、情シスからMacを受け取ったらできるだけ早く使い始める事が出来るようになっていて欲しい…という要望にも応えることができます。
この手順はShellスクリプトによるMacのセットアップとJamf Proによるセットアップのどちらでも利用する事が可能です。
手順
- 作業用のアカウントの準備
- FileVault2を適用
- 利用者のアカウントを適当なパスワードで作成
- 3で作ったユーザで利用者のアカウントにSecureTokenをつける
- 利用者にMacを渡す
- 利用者に3でつけたパスワードを教えてログインしてもらう
- NoMADでADとパスワードをSyncしてもらう
作業用のアカウントの準備
最初にMacにログインするために使ったユーザを作業用とします。
このアカウントのアカウント名とパスワードは以下で出てくるスクリプトで利用しますので、間違いの無い様にJamf Pro導入済みの環境ならJamf Proで作ります。
Jamf Proが無い環境の場合は以下の手順を始める前に、アカウント名とパスワードが指定の物になっているかのチェックを行います(要望があればこの辺も後で書きます)
また、Jamf Proを使ってるならこのアカウントのパスワードをLAPSforMACで変えておくと良いでしょう。(全部のスクリプトに対して管理者アカウントのパスワードをJamf Proから取得する部分を追加する必要があります)
(追記:うちのセットアップ手順だと最初のアカウントとは別に作ってるのですが、コレは別に同じアカウントでも良いと思ったので書き直しました。)
FileVault2を有効にする
今回の設定の一番肝心な部分がこちら!
FileVault2を有効にする為には fdesetup
コマンドを使います
fdesetup enable -user 管理者アカウント
として実行し管理者アカウントのパスワードを入力するとFileVault2が有効になります…が、手作業でセットアップするなら良いのですが、シェルスクリプトで無人で実行したりJamf Proで実行しようとするとパスワードの手入力が出来ません。パスワードを引数で渡すコマンドオプションは High Sierra の時に廃止されました。ので、expectコマンドでパスワードの入力を行って居ます。
バージョンチェックやローカルの管理者パスワードを直接シェルスクリプトに書かないようにする工夫はこの見本では省略してあります。 Jamf ProでLAPSforMacをアカウントに適用している場合はパスワードを取得する部分をスクリプトに追加する必要があります。
#!/bin/bash
#1で用意した管理者アカウントの情報
ADMINUSER="adminuser"
ADMINPASS="adminpass"
#administratorアカウントが想定通りに存在するかチェック
if /usr/bin/dscl /Search -authonly "$ADMINUSER" "$ADMINPASS"
#if true
then
#ここでFileVault2を有効にしている
echo "Enable FileVault2"
expect -c "
log_user 0
spawn /usr/bin/fdesetup enable -user $ADMINUSER
expect \"Enter the password for user '$ADMINUSER':\"
send "{${ADMINPASS}}"
send \r
log_user 1
expect eof
"
else
echo "this computer administrator account is not valid"
exit 1
fi
ユーザのアカウントを作成する。
ユーザのアカウントを作成します。ADを使って居る場合ここをモバイルアカウントにするとOSの機能だけでパスワードの同期が出来るのですが、その場合管理者パスワードを知っている情シス担当とユーザがMacの前に集まってセットアップを完了させないといけないのでツライです。(今までこのツライ作業を行って居たのですが、在宅勤務体制になったためこのツライ作業を無くすために工夫をしました 💦)
ここはADのアカウント名と同じ名前のローカルユーザを作りましょう。 アカウントをシステム環境設定から作っても良いのですが、ポチポチ作業はできるだけ減らしたいのでスクリプトに組み込めるコマンドでやりましょう。 Jamf Proが導入済みなら以下の1コマンドで完了して楽々です。
jamf createAccount -username ユーザ名 -realname ユーザの本名 -password パスワード -admin
Jamf Proが無い場合は以下のスクリプトで作れるはずです。Jamf Proの導入前まで使ってました。アイコンがGigerbread Manに設定されるのでかわいい ☺️ です。
https://github.com/nyomo/tips/blob/master/macOS/createLocalUser.sh
管理者権限が不要な場合は sudo dscl . -append /Groups/admin GroupMembership $TARGETUSER
はコメントアウトします。 jamf
コマンドなら最後の -admin
は不要です。
ユーザにSecureTokenをつける
HighSierraの途中からFileVault2のロックを解除出来るユーザにSecureTokenという権限をつけないといけない事になったので以下のコマンドを実行します。
#!/bin/bash
#1で用意した管理者アカウントの情報
ADMINUSER="adminuser"
ADMINPASS="adminpass"
#3で作ったローカルアカウントの情報
USERNAME="hogehoge"
USERPASS="userpass"
sysadminctl -adminUser $ADMINUSER -adminPassword $ADMINPASS -secureToken $USERNAME -password $USERPASS
NoMADをインストールしておく(ADを使って居る場合)
ユーザ認証基盤としてADを利用して居てMacのパスワードがADと同じになっていないと困るという場合はNoMADをインストールしておきます。 NoMADのインストールについては要望があればあとで書きます😁。
ユーザアカウントで設定しておきたい設定をする
作ったユーザアカウントでログインしてブラウザのプラグインをインストールするなどの作業をおこなうことが出来ます。
ユーザにMacを渡す
渡すときにユーザのアカウントを作成するときに設定したパスワードを教えておきましょう。 また、ユーザがログインした後にやるべき事がいくつかあるので手順書を用意して渡して置くと良いと思います
ユーザがログインした後にやるべき事
- AD環境ならNoMADにログインして初期パスワードを入力する
- 完全にローカルユーザの環境なら初期パスワードを変更してもらう
- ユーザにプロファイルを承認して貰う(
sudo jamf mdm -userLevelMdm
を実行した後で)
できあがり。
これで、予めFileVault2が有効で、ユーザがMacの電源を入れてから5分程度で使い始める事が出来るセットアップ手順が組めます。
Jamf Proを利用しているならユーザアカウントのパスワードが教えた物から変更されているかを確認するポリシーを実行して一定期間が経っても変更していないユーザには変更を促す様な仕組みを用意しておくと良いと思います。
ユーザに管理者権限を与えている場合ユーザがFileVault2をオフにしてしまうことが出来るため、FileVault2をConfigration Profileで有効にする設定をしておきます。この設定を行っておくと、万一ユーザがFileVault2を無効にしたとしても、ユーザの次回ログイン時にFileVault2が有効になります
もっと良い方法があるよ、とか、それやってしまうと○○だからやめた方が良いとかその様な情報をお持ちの方のご連絡お待ちしています(-人-)