はじめに
「【Jamf】DEPNotifyを使ってゼロタッチデプロイメントっぽいことしてみる。」の記事でまた別の機会に〜と書いてから1億と2千年ぐらい経ってしまいましたね。すいません。
どうやら国内での販売もはじまったようなので、Jamf Connectを使ってMicrosoftアカウントでMacにログインする方法や躓きポイント、実運用にのせるならこんな感じの設定かな〜みたいなことについて書いてみます。
MacをADバインドさせると死ぬ教の人間なんでADバインドさせずにアカウント管理ができるのは嬉しいです。死にたくない。
あと、MacのログインにIdPの多要素認証を利用できるようになるのが結構良さげポイントですね。
Azure ADで設定したロールに基づいてローカルアカウントの管理者権限の付与/剥奪とかもできます。
動画
実装するとこんな感じでMacのログイン画面がMicrosoftアカウントのログイン画面になり、Azure ADの情報を元にアカウントが作成されます。
Jamf Connectとは
Jamf Connectはいくつかのアプリケーション群の総称を指します。
以下、Jamf Connect管理者ガイドより引用しまくります。
Jamf Connect Login
Jamf Connect Login は、macOS loginwindow のプロセスで認証を管理できるアプリケーションです。さらに、Jamf Connect Login は以下の用途にも使用できます。
- ID プロバイダー (IdP) の認証情報を使用して認証を有効にする
- ジャストインタイムのユーザ作成を許可する
- FileVault を有効にする
- ログイン環境をカスタマイズする
MDM 経由で送信された、またはコンピュータにローカルにインストールされた構成プロファイルを使用して、Jamf Connect Login を設定できます。
Jamf Connect Login では、以下の IdP がサポートされています。
- Google Identity
- IBM Cloud Identity
- Microsoft Azure AD
- Okta
- OneLogin
- PingFederate
その名の通り、Macのログイン画面を乗っ取ってIdPの認証を行うようなイメージです。
個人的に好きなポイントはFileVaultを有効にする機能がついているところですね。
構成プロファイルやスクリプトでFileVaultをONにする場合、どうしてもユーザーのログインログアウトプロセスが必要になってきますが、Jamf Connect Loginの機能でONにする場合、道なりにONになってくれるので余計なプロセスを減らすことができます。
また、MDM経由で〜と記載されていますが、実際のところMDMがなくても利用可能ですし、MDMもJamf Proに限りません。
まぁ、こんなことをしようと考える人はきっとMDM導入済みでしょうし、きっとJamf Proを使っているでしょう・・・
MDMなんてないよって人は先にMDMを導入してください。
Jamf Connect Verify
Jamf Connect Verify は、ネットワークとローカルアカウントの間でパスワードを継続的に検証できるメニューバーのアプリケーションです。ユーザの関与やユーザとの操作を避けるように、検証はバックグラウンドで行うことができます。
Jamf Connect Verify では以下のこともできます。
- Kerberos レルムが指定されている場合、Kerberos チケットを取得する
(注: Kerberos 認証の際、コンピュータはオンプレミスの Active Directory ドメインコントローラに接続する必要があります。) - カスタムアクションメニュー項目を追加する
- ファイル共有メニューを追加する
- サイレント動作を構成する
以下のクラウド ID プロバイダ (IdP) は Jamf Connect Verify でサポートされています。
- Microsoft Azure AD
- PingFederate
こちらはデスクトップに入った後、IdPのパスワードとローカルアカウントのパスワードを同期してくれる常駐型アプリケーションとなります。
多分その機能以外はあまり使いません。多分。
設定次第ですがIdPのパスワードを変更するとデスクトップにアラートが出て、ローカルアカウントのパスワード更新のためにパスワード入力しろ(#゚Д゚)ゴルァ!!ってなります。
あとはメニューバーからSelf Service(Jamf Proの機能で社内用App Store的な奴)を開くことができたり、社内ポータルやヘルプサイトへのリンクを表示することができます。
んー、困ったらここ開いてね、的な運用ができるかもしれないけどあんまり使うことはなさそうな予感。
以下、全体的にJamf Connect Verifyに関する記述は適当です。
Jamf Connect Sync
Jamf Connect VerifyのOkta版。
Google Chrome用の拡張プラグインがあったりする。
ここでは使わないので割愛します。気が向いたら書きます。
必要なもの
- Mac
- Azure AD
- Jamf Connect
- もろもろ配布用のMDM(ここではJamf Proとします)
利用環境
- macOS Mojave 10.14.6
- Microsoft Enterprise Mobility + Security (EMS) E3
- Jamf Connect 1.18
- Jamf Pro 10.19.0
準備
さて、前置きが長くなりましたがここから準備にはいります。
大きく分けて
- Azure AD側の設定
- Jamf Connectの設定
- もろもろ配布用MDM(Jamf Pro)の設定
が必要となります。
Azure ADの設定
AzureのUI頻繁に変わりすぎだよね・・・すぐ迷子になる・・・
とりあえず、2020/03/19時点での設定項目となります。
変わってたら該当項目を頑張って探してください・・・
Azure ADにJamf Connect用Appを登録する
-
Azure PortalにログインしてAzure Active Directoryを表示します。
-
"アプリの登録"から"+ 新規登録"を選択します。
-
各項目を設定を設定して"登録"を押して登録します。
アプリの登録
名前:Jamf Connect
サポートされているアカウントの種類:この組織ディレクトリのみに含まれるアカウント
リダイレクト URI:https://127.0.0.1/jamfconnect
4. 登録したJamf Connect Appにアクセスし、"管理" > "APIアクセスの許可"から"〇〇に管理者の同意を与えます"を選択して"はい"を押します。
5. 右上に"同意の付与に成功しました"と表示されるので、一度ページをリロードして,"Microsoft Graph" > "User.Read"の状態が"〇〇に付与されました"になったことを確認します。
<img width="1030" alt="スクリーンショット 2020-03-23 18.11.54.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268331/89b1552d-a913-3a88-51b6-a7383c26f502.png">
6. 次に、同Jamf Connect Appのサイドバーにある"認証"を選択して、下記設定をし、左上の"保存"をクリックして保存します。
```:認証
暗黙の付与:IDトークンをチェックON
既定のクライアントの種類:はい
(↑アプリケーションは、パブリッククライアントとして〜って書いてあるところです)
※)ハマりポイント!!!
ここのパブリッククライアントを"はい"にするところが後のハマりポイントなので先に追記しておきます。
これをそのまま"はい"にしていると、
- ユーザーへの割り当て
- 設定したロールに基づいたローカルアカウント権限の設定
- ユーザーごとの多要素認証の有無の設定
などができなくなります。(そもそもアプリの詳細のところにユーザーとグループが表示されない問題)
登録した後に、一度"いいえ"に設定しなおしてから、"はい"に戻すことで表示されるようになり、各種機能が使えるようになります。
マニュアルにも一応書いてあるんですけど、どハマりしてMSに問い合わせしちゃったよ僕。
この辺の細かい設定は後半で書きます。一旦使えるようにするところまで先に書きます。
7. 最後にサイドバーの"概要"にアクセスし、"アプリケーション(クライアント)ID"をコピペなどして控えておきます。この値は次のJamf Connectの設定にて使用します。
Jamf Connectの設定
Jamf Connectの設定はplist形式のファイルを作成して行います。
製品発表初期は手書きで書かなければいけませんでしたが、現在はJamf Connect Configuration
という設定を作成するアプリもセットでついてくるようになったのでかなり楽ちんになりました。
Jamf Proをお使いの方は、Jamf Proのコンピュータ > 構成プロファイル > アプリケーション&カスタム設定 からも設定できますがめちゃくちゃ使いにくいのでなかったことにした方がいいです。
ということで、Jamf Connect Configurationでの設定について記載していきます。
Jamf Connect Configurationを使って設定ファイルを作成する
Jamf Connect.dmgの中にJamf Connect Configurationのインストーラーが同梱されているのでインストールします。Jamf Connect.dmgの入手の仕方はJamfさんに聞いてください。
インストールするとアプリケーションフォルダの中にJamf Connect Configuraton.appが作成されるので起動します。
設定値を全部解説するのはしんどいので最低限必要な設定と個人的に使いそうな項目に絞って設定をしていきます。
Identity Providerタブ
**Identity Provider:**Azure
**OIDC Client ID:**先ほどAzure側に作成したJamf Connect AppのアプリケーションIDをコピペします
**ROPG Client ID:**OIDC Client IDと同様にアプリケーションIDをコピペします
**OIDC Redirect URI:**https://127.0.0.1/jamfconnect
ここまでの設定が最低限必要な設定となります。
一度ウィンドウの右上にある"Test"ボタンからOIDCとROPGの接続テストをしておきましょう。
Loginタブ
上記の設定だけで使えるようになるとは思いますが、こっちの設定が運用のキモというか、いろいろな思想に基づいて取捨選択が必要になるところだと思います。
< User Creation >
**Initial Password:**ONにするとIdpのパスワードとは別にローカルアカウントのパスワードを作成できるようになります。(Verifyを使ってると結局同期されますけど。)
まぁ、OFFっておくのがいいでしょう。
※)ハマりポイント!!!
デフォルトチェックOFFになってるんですが、内部的にはTrueになってるんですよね・・・なので、一回ぽちぽちしてOFF→ON→OFFしてあげる必要があります・・・バグかな・・・
**Authentication:**チェックを入れるとログイン時のIdP認証が必須になります。
→チェックOFFだとローカルログインボタンが表示されるようになり、IdP認証を介さずにログインができるようになります。
特定のアカウントのみローカル認証を許可したい場合、アカウント名を下のブランクに設定します。(管理者用アカウントなど)
常にローカルログインされちゃうと嫌なのでONにして、管理者用アカウントを追加しておきます。
**Local Fallback:**ネットに繋がっていない時にローカル認証ができるようになります。
こちらの設定はAuthenticationの設定より強いので、ネットに繋がってない時は全てのアカウントでローカルログインができるようになります。
ネットに繋がってない時にログインできないのは可哀想なのでONにしておきます。
User Creation:
**Create all new users as local administrators:初回ログイン時に作成するアカウントすべてに管理者権限を与えます。
ここは会社の運用次第ですね。若干のハマりポイント
**があるので後述します。
**Ignore roles:**Azure AD側で設定するロールを無視する場合にONにします
※)ハマりポイント!!!
Create all new users as local administratorsをONにしていても、次回ログイン時に通常権限に戻ってしまう問題があります。
これは既知の問題として“ユーザ ID トークンの「groups (グループ)」属性をすべてのクラウドアイデンティティプロバイダ (IdP) に対してデフォルトで使用“というのがあるため、Azure ADのgroupsを参照してしまうことに由来します。
そのため、Create all new users as local administratorsをONにする場合は、Ignore rolesも併せてONにする必要があります。
Admin Roles:ユーザーのロール割り当てで後述します。
Admin Attribute:ユーザーのロール割り当てで後述します。
**User Migration:**新規端末ではなく既存端末などに展開する際に、既存のアカウントをIdP認証に切り替える場合にONにします。アカウント名やホームフォルダ名などは変更されず、認証の紐付けだけが行われます。
個人的には悩みどころ・・・新規端末から展開していく運用にして、ひとまずOFFかな・・・
**FileVault:**FileVault2ディスク暗号化はONにしたいのでONにします。
※)ポイント!!!
Jamf Connectではリカバリーキーの収集などは行えない(ローカルに保存は可)ので別途Jamf Proから"個人用リカバリキーのエスクロー有効化"をONにする構成プロファイルを投げる必要があります。
**Keychain:**Jamf Connect Verifyを利用する場合はONにします。
< Appearance >
**Internet:**ログイン画面にネットワーク選択ボタンを表示させます。特定のネットワークに接続したい場合はONにします。とりあえずONにしました。
**Background:**ログイン時の背景画像のパスを設定します。
**Login Logo:**ログイン時に表示するロゴに使う画像のパスを設定します。
**Local Auth Button:**ローカル認証をONにした場合に表示されるボタンのテキストを設定します。
設定ファイルのエクスポート
それでは設定したファイルのエクスポートを行なっていきます。
「⌘(Command) + S」または、メニューバー > File > Saveを選択して保存画面を出します。
**Application:**Jamf Connect Login
**File Format:**Property list .plist
"Configuration Profile .mobileconfig"を選択することで、構成プロファイルとして吐き出させることもできるのですが、個人的にはplist形式で吐き出してJamf Proにアップロードする形の方が運用上良いと思います。
なぜなら、
- mobileconfigの署名がめんどくさい→Jamf Proアップロードすればがやってくれる
- plist形式でアップロードする場合、各種設定値をJamf Pro上で確認できるため修正等しやすい
そんな感じです。
で、右下の"Save"を押して保存するのですが、必ずcom.jamf.connect.login.plist
という名前で保存してください。
この名前のファイルを設定ファイルとして読み込むため、名前が違うとちゃんと設定が反映されませんのでご注意ください。
※)追記:Jamf Proにアップロードしてからでも設定できましたね、そういえば。
Jamf Connect Verifyの設定について
下記設定をしてcom.jamf.connect.verify.plist
という名前で保存してください。
Verifyタブ
**ROPG Client ID:**Azure側に作成したJamf Connect AppのアプリケーションIDです。Identity Providerタブのところで入力したものが自動入力されていると思います。
**Network Check:**ここにチェックを入れることで、定期的にパスワードに相違がないかの通信を行います。下のブランクに周期(分)を入力します。
Verifyに関してはJamf Connect Configurationで設定できる項目はかなり少ないです。
手書きでplistを作成する場合はもう少し様々な設定項目があるので、詳しくは公式ドキュメントを参照してください。
Jamf Pro側の設定
- JamfConnect.dmg > Jamf Connect Login > JamfConnectLogin-1.XX.X.pkg
- JamfConnect.dmg > Jamf Connect Verify > JamfConnectVerify-1.X.X.pkg
の二つをJamf Proにアップロードしておいてください、
パッケージのアップロード方法はJump Startトレーニング内でやっているかと思うので割愛します。
Smart Computer Groupの作成
DEP端末に対してScopeを設定したいのでSmart Computer Groupを作っておきます。
**Criteria
**はEnrolled via DEP
かEnrollment Method: PreStage enrollment
あたりを使うとDEPでEnrollした端末のグループを作成できます。
Enrolled via DEP
だとDEPで登録された端末全て、Enrollment Method: PreStage enrollment
だと特定のPreStage Enrollmentsで登録された端末をグルーピングできます。
各種構成プロファイルの作成
Jamf Connect Login用構成プロファイルの作成
-
Jamf Proにログインします。
-
"コンピュータ" > "構成プロファイル" > "+新規"を選択します。
-
下記設定をしていきます。
一般
名称:Jamf Connect Azure Login(任意です。なんでもいいです。)
配布方法:Install Automatically
レベル:Computer Level
アプリケーション&カスタム設定
ここで"ファイル (PLIST ファイル) をアップロード"を選択し、先ほど作成したcom.jamf.connect.login.plist
をアップロードします。
Scope
Smart Computer Groupの作成で作成したグループをスコープに入れておきます。
Jamf Connect Verify用構成プロファイルの作成
Jamf Connect Login用構成プロファイルの作成と同様にcom.jamf.connect.verify.plist
を含んだ構成プロファイルを作成しておきます。
一般
名称:Jamf Connect Azure Verify(任意です。なんでもいいです。)
配布方法:Install Automatically
レベル:Computer Level
アプリケーション&カスタム設定
ここで"ファイル (PLIST ファイル) をアップロード"を選択し、先ほど作成したcom.jamf.connect.verify.plist
をアップロードします。
Scope
Smart Computer Groupの作成で作成したグループをスコープに入れておきます。
FileVault2 Recovery Keyの設定
Jamf Connect Loginの設定のポイントのところに記載したように、FileVault2のリカバリーキーの収集機能はないため、別途構成プロファイルを作成する必要があります。
一般
名称:FileVault2 Recovery Key(任意です。なんでもいいです。)
配布方法:Install Automatically
レベル:Computer Level
セキュリティ&プライバシー
FileVaultタブ > "FileVault 2 が必要"にチェックを入れ、"個別のリカバリキーを作成"をONにします。
FileVault 復旧キーリダイレクション
"Automatically redirect recovery keys to the Jamf Pro server"に設定します。
Scope
Smart Computer Groupの作成で作成したグループをスコープに入れておきます。
セキュリティ&プライバシーの項目ですが、Jamf Proで作成する構成プロファイルの仕様上、その他の項目に関しても制限が有効になってしまうため、意図していない項目もグレーアウトしてしまいます。
回避するためには、同ペイロードで細かく設定していくか、手書きの構成プロファイルを使用する形になります。(ここではやりません)
(重要)Disable_AutoLoginの設定
macOSはデフォルトで自動ログイン
というものが設定されています。
これを"オフ"に設定しないと、FileVault2がONになっている場合にログインプロセスがバイパスされてしまい、Jamf Connect Loginの画面が表示されません。
システム環境設定 > ユーザとグループ > ログインオプション のところをオフに設定するか、下記設定の構成プロファイルを用意する必要があります。
一般
名称:Disable_AutoLogin(任意です。なんでもいいです。)
配布方法:Install Automatically
レベル:Computer Level
ログインウィンドウ
Optionsタブ > 自動ログインを無効にする をチェックON
Scope
Smart Computer Groupの作成で作成したグループをスコープに入れておきます。
これもまた、FileVault2 Recovery Keyのところに書いたように、その他のログインウィンドウの制限も有効になってしまうため、単体で設定する場合は下記plistを用意し、**アプリケーション&カスタム設定
**にアップロードします。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>DisableFDEAutoLogin</key>
<true/>
</dict>
</plist>
適当なテキストエディタで作成して下記コマンドを実行すればJamf Proにアップロードできるようになると思います。
$ plutil -convert xml1 <作成したcom.apple.loginwindow.plistのパス>
Prestage Enrollments × Jamf Connect Loginの設定
DEPを利用して、初回ログイン時にJamf Connect Loginの画面を表示させるためにPrestage Enrollmentsの設定をしていきます。
DEPを利用しない場合は、上記で設定した構成プロファイルと、Jamf Connect関連のpkgをポリシーでインストールさせてください。
一般
任意でどうぞ。
構成プロファイル
- Jamf Connect Azure Login
- FileVault2 Recovery Key
- Disable_AutoLogin
登録パッケージ
- JamfConnectLogin-1.XX.X.pkg
そう、各種構成プロファイルの作成のScopeで設定しているのにここでも設定するのか、というのがあると思いますが、ここで設定した構成プロファイルに関しては初期セットアップ画面の時にのみ有効になるため、その後も設定を有効にしておきたい場合は両方に割り当てておく必要があるのです。
・・・・・以上だ!!!ここまでの設定でDEPを利用したデプロイ時にJamf Connect Loginの画面がでてくるようになる!!!はず!!!!!
Jamf Connect Verifyの展開に関して
Jamf Connect Verifyに関しては、DEPを利用したデプロイの段階では必要がないため、Enrollment
あたりをトリガーにしたポリシーを作成してパッケージを配ってください。
ユーザーのロール割り当てとか多要素認証の設定とか
Azure AD側の設定が大半なので最後にまとめました。
Azure ADにJamf Connect用Appを登録するのところで書いたハマりポイント、気をつけてくださいね。(いやほんとに)
多要素認証の設定
"Azure Portal" > "Azure Active Directory" > "ユーザー" > "…" > "Malti-Factor Authentication"
から有効にできます。
ちょっと場所がわかりづらいと思うんだ僕。
ここで有効にするとログイン時のMicrosoft アカウント認証の時に多要素認証が挟まります。
ユーザーのロール割り当て
Azure AD側で設定したロールを元に、Jamf Connectを通してMacのログインアカウントに管理者権限を付与したり剥奪したりする設定をしていきます。
Azure AD側の設定
"Azure Portal" > "Azure Active Directory" > "アプリの登録" > "Jamf Connect" > "マニフェスト" を開きます。
"appRoles": [],
と書いてある記述の場所を探して下記パラメータに変更します。
※)Admin用とStandard用で2回登場する"id":
の値はMacのターミナル等でuuidgen | tr "[:upper:]""[:lower:]"
を実行して生成したものに置き換えてください。
"appRoles": [
{
"allowedMemberTypes": [
"User"
],
"displayName": "Admin",
"id": "fdff90b7-df09-4c19-8ab0-158cc9dc62e4",
"isEnabled": true,
"description": "Members of the Admin group.",
"value": "Admin"
},
{
"allowedMemberTypes": [
"User"
],
"displayName": "Standard",
"id": "36610848-21ee-4cc0-afee-eaad59d442ea",
"isEnabled": true,
"description": "Members of the Standard group.",
"value": "Standard"
}
],
左上から"保存"します。
"Azure Portal" > "Azure Active Directory" > "エンタープライズアプリケーション" > "Jamf Connect" > "プロパティ" から "ユーザーの割り当てが必要ですか?"を"はい"にします。
"Azure Portal" > "Azure Active Directory" > "エンタープライズアプリケーション" > "Jamf Connect" > "ユーザーとグループ"に移動します。
"ユーザーとグループ"が出てこない時は、Azure ADにJamf Connect用Appを登録するのところで書いたハマりポイントを確認してください。
該当のアカウントやグループにチェックをいれ、"編集" > "ロールの選択" > "Admin"or"Standard"を"選択" > 左下"割り当て"をクリックして保存します。
こんな感じになっていればAzure AD側の設定は終了です。
Jamf Connect Login側の設定
Jamf Connect Configurationを使って設定ファイルを作成するのところで割愛したAdmin Roles
とAdmin Attribute
を設定します。
**Admin Roles:
**Azure AD側で設定したどのロールに管理者権限を付与するかを設定します。複数ロールに割り当てることも可能です。
**Admin Attribute:
**ID トークンに保存されるどの属性を使用して管理者権限を付与するかを設定します。デフォルトだとgroups
になってしまうのでroles
に設定します。
以上の設定を行うことで、アカウントごとに管理者権限の付与や剥奪が反映されるようになります。
Azure AD側でユーザーのロールを変更した場合は、Macに再ログインした際に権限の設定がアップデートされます。多分。
(おまけ)Notify機能
過去にDEPNotifyというアプリケーションを紹介しましたが、同じような機能がJamf Connect Loginにもあります。
が、
結構設定がめんどくさい&修正等めんどくさいのでDEPNotifyの方がメンテナンス性は高そうです・・・
- pkgをカスタマイズする&Prestage Enrollmentsで配る = pkgに署名が必要
- スクリプトをpkgに突っ込むので修正するたびにpkg化しなおさなければならない
などなど・・・
これまた気が向いたら・・・
おわりに
くぅ疲。
書き始めてみたら想像以上に長いし多分めっちゃ読みづらいですすいません・・・
長々と書きましたが、まだまだローンチしたばかりでアップデートが非常に多い製品なので、ドキドキしながら導入するような感じになるかもしれないなぁと思う今日この頃です。
それでは良いMac管理ライフを!!!