メインコンテンツへスキップ
見出し画像

剣と魔法ではじめるJamf Pro超入門

    この記事は STORES PX Advent Calendar 2023 Spring の3日目の記事です

    はじめに

    こんにちは、STORESのPX部門IT本部でコーポレートエンジニアをしている佐々木(ssk_ats)です。
    普段はMacなどAppleデバイスの管理をしている事が多いです。

    STORESのAppleデバイス管理

    STORESでは業務用のPCとして主にMacBook Air/Proを使用しており、業務利用するMacやiOSなどのAppleデバイスの管理にJamf ProというMDMを使用しています。
    Jamf ProはAppleデバイスを業務で利用する多くの組織で使われていて、Premium onboarding(以前はJumpStartという名称でした)というブートキャンプ的なオンボーディングプログラムもあり、多機能でありながらも扱いやすいMDMではないかと思います。

    この記事を書いた背景

    Jamf Proは比較的扱いやすいとはいえ、Apple製品やJamf Pro自体に不慣れなうちはよくわからないこともたくさんあります。
    もともとはチームや社内に向けてJamf Pro入門的なものを書こうと思っていたのですが、今回のアドベントカレンダーを機にちょっと趣向を変えた感じで書いてみることにしました。

    テーマは剣と魔法ではじめるJamf Pro超入門

    ちょっと何言ってるかわからないですね🤔

    Jamf Proよくわからんって人に対して構成プロファイルとポリシーってどう違うのっていう説明に、(技術的な話はともかく感覚的に言うと)RPGで言うところの装備が構成プロファイルで魔法がポリシーみたいな説明がいまのところ自分のなかでしっくり来てる

    — あっつん (@ssk_ats) January 11, 2023

    これは今年のはじめに突然降ってきたアイデアで、いつかどこかで書きたいなと思っていました。今回アドベントカレンダーやるという話を聞いて、この機に乗って仕事としてやってしまおうという公私混同テーマです。

    Jamf Proを使う前提での内容ではありますが、MDMやAppleの構成プロファイルの概念をふわっと捉えるという意味では他のMDMを使っていてもそんなに変わらないと思います。

    それでは本編いってみましょう。

    IT管理者よ、ようこそJamf Proの世界へ

    皆さんはRPGやったことありますか?
    異世界転生作品を観たことや読んだことありますか?
    なくても読めるように書いたつもりですが、知ってたほうが面白いかなと思います(知ってても面白いかどうかはちょっとわからないです)。

    今回はJamf Proの超入門として、よく使う機能や用語をありがちなファンタジーやRPGの用語に例えて解説する試みになります。

    とにかくわかりやすさを重視しようというところから始まっているため、AppleデバイスやJamf Proのについての説明が不十分/不正確であったり、ファンタジー世界観の解釈的に多少おかしな部分もあるかと思いますが、あらかじめご了承下さい。
    製品や機能の正確な仕様については、各項目や記事の最後にあるリンク先の公式ドキュメントをご参照下さい。

    この記事では

    • Jamf Pro

    • 構成プロファイル

    • ポリシー

    • コンピュータインベントリ

    について、どんなイメージの役割や機能なのかを書いています。

    冒険者ギルド - Jamf Pro

    画像
    https://winddorf.net

    Jamf Proってなに

    参考リンク:
    Jamf Pro | Apple Mobile Device Management | MDM
    Jamf Pro ドキュメント

    Jamf ProはMacやiOSデバイスなどのAppleデバイスの管理を行うためのMDM( Mobile Device Management | Wikipedia )製品です。近年は企業でのAppleデバイス利用増加に伴い導入数も伸びているようです。

    冒険者ギルドってなに

    参考リンク:
    冒険者ギルド - ピクシブ百科事典

    冒険者専用のギルドで、基本的な業務はカードやタグを発行しての冒険者の登録、あるいは冒険者の除名、 モンスターの討伐や薬草の採取、街の掃除、商隊の護衛といった各種依頼による仕事の斡旋、素材の買い取り、 冒険者のランク昇格のための試験開催、冒険者同士の揉め事の仲介等を行う

    https://dic.pixiv.net/a/冒険者ギルド

    ファンタジー作品や、特に異世界転生作品によく出てきますね。酒場や宿屋が併設されている描写も多く見られます。

    冒険者の登録を行って身分証を発行したり、民間や行政からの依頼(モンスターの討伐、薬草の採取、商隊の護衛など)を冒険者に紹介したりする組織です
    冒険者の実力に応じてランクを決めて、そのランクによって受けられる依頼や報酬が変わる、みたいなのがよくある設定です。

    冒険者のランクは達成した依頼(魔物の討伐や素材の採取等)の難易度で判定される他、冒険者の潜在能力を魔法や特別な魔道具などで測定して決められたりもします。
    また、その冒険者ギルドがある街に大規模なモンスターの襲撃などが発生した際は、所属する冒険者を招集して自体の対処にあたるなどの描写もよく見られます。

    Jamf Proは冒険者ギルド 🍺

    Jamf Proに登録された端末は、そのJamf Proを使っている組織に所属していることが証明されます。
    構成プロファイル(後述)やポリシー(後述)などを使用してその組織のポリシーやルールに沿った設定を行ったり、役割や部署によって異なる権限やアプリケーションを配布したり、コンピュータインベントリ(後述)でそのデバイスの状態を確認したりできます。

    そう、Jamf ProはAppleデバイスにとっての冒険者ギルドなのです。
    Macやユーザーは冒険者であり、彼らが合法かつ安全に冒険を行えるようサポートを行います。
    IT管理者であるあなたは、冒険者ギルドの職員、あるいはギルドマスターかもしれません。

    とある異世界の辺境にある街に、その冒険者ギルドはあります。
    ギルドマスターであるあなたは、その領地を管轄する貴族や、王都のギルド本部と方針の違いで対立することも多いかもしれません。
    しかしあなたにはこの街を、このギルドを、そして冒険者たちを守るという強い使命と志があるのです。

    こんな感じで行きます

    装備 - 構成プロファイル

    画像
    https://www.irasutoya.com

    構成プロファイルってなに

    参考リンク:
    コンピュータ構成プロファイル | Jamf Pro ドキュメント

    構成プロファイル(Configuration Profile)は、Apple製品でデバイスやアプリケーションなどの設定に使われる仕組みです。
    mobileconfigという形式のファイルで作成され、macOSやiOS(iPadOS)にインストールされることで機能します。
    Jamf Proを使って配布する端末の条件を指定したり、ユーザーが任意のタイミングで適用したりもできます。
    Appleが用意している仕組みなので、Jamf Pro以外のMDM製品でも利用されます。

    装備ってなに

    参考リンク:
    装備 - そうび - ピクシブ百科事典 - pixiv

    アクセサリーや衣服などを体に身につける行為のこと。 また、それが転じて身につけるアイテムそのものを指す場合が多い。 ゲームなどでは武器などが一般的。

    https://dic.pixiv.net/a/装備

    一般的にRPGには装備できるアイテムがあります。鎧や剣や盾、アクセサリーなどです。
    装備にはキャラクターのステータスを変化させるオプションが付いていて、例えば剣では攻撃力が上がったり、防具では防御力が上がるといった感じです。

    基本的なステータス以外にも特定の属性など特別な効果がついた装備も存在します。
    水属性のモンスターに通常より大きなダメージを与える稲妻の剣や、炎属性の攻撃に耐性を持つ氷の鎧、装備しているだけで闇属性の攻撃から身を守る聖なる首飾りみたいなイメージです。

    キャラクターのステータスを増加させて冒険を安全に進めるための装備ですが、物によっては呪われたアイテムのようにステータス異常を起こすこともあります。
    物騒な名前だったり怪しい雰囲気が漂っているアイテムを不用意に装備してしまうと、呪われてしまい身動きが取れなくなったり、混乱して仲間を攻撃したり、攻撃力が異常に上昇する代償として生命力が大幅に現象するなどの状態異常になってしまう事があります。

    呪われたアイテムは大抵の場合自ら外すことは出来ず、僧侶や神官などにお祓いをしてもらわないと外すことができないというのが定番の設定です。

    構成プロファイルは装備 ⚔️

    構成プロファイルは、Appleが用意したフレームワークを利用してデバイスを管理する仕組みです。タイプ別に用意された様々な機能の中から、必要な機能を必要な設定で利用するためのお約束が決まっています。
    決められたお約束に沿って構成プロファイルを作成してデバイスにインストールすることで、デバイスの構成を設定することができます。
    お約束の部分はJamf Proがいい感じにやってくれるので、管理者はどの機能をどう使えば良いかを考えることに専念できます。

    例えばパスワードやWi-Fiの設定、Firewallやディスクの暗号化等、AppleがOSに用意している基本的な設定を構成することができます。
    他にもシステム拡張やバックグラウンドで動作するアプリケーションの許可、証明書の配布や各種機能制限など、企業でAppleデバイスを利用する際に利用するための機能を構成できます。
    そして設定された項目は、構成プロファイルがアンインストールされない限り維持されます。

    これはまさしく装備です。
    攻撃力や防御力以外にも、エンチャントなどにより様々な特殊効果が付与された装備を使用することで、冒険を有利に進めることができます。
    冒険者ギルドが武器や道具を配布するというのはあまり聞いたことがありませんが、武器屋や防具屋などが併設されているというのは無理な設定では無さそうです。
    冒険者ギルドは依頼の内容や難易度、冒険者のステータスを把握しているため、冒険者に合った装備の選択やアドバイスをするというのも役割として違和感が無いですね。

    あなたは冒険者ギルドの職員として、冒険者に最適な装備を見繕ってくれる新米にもベテランにも信頼されるアドバイザーです。
    冒険者ギルドにはきっと工房が併設されており、凄腕のドワーフが日々素晴らしい装備を創っていることでしょう。

    構成プロファイルの中身をちょっとだけ見てみましょう
    (俺の魔眼†Eyesof Clarify† が構成プロファイルを解析†Analyze†するぜ)

    MDMを利用する際に構成プロファイルの中身を直接読んだり書いたりする事は無いですしやらなくていいですが、どんな決まりで書かれているかを知っているとイメージしやすいかなと思うのでさらっと書きます。
    詳しく知りたい人はこことかこことかを参考にしてください。

    神(🍎)より賜りし規範(リファレンス📕)

    構成プロファイルがmobileconfigファイルというのは先程触れました。
    そのmobileconfigファイルの中身はplist(Property list)という、AppleのOSで何かしら設定をするときに使われる形式です。
    plistはxmlというフォーマットで書かれているので、なるほど構成プロファイルというのはxmlみたいな感じで設定が書かれているんだなと思って下さい。
    構成プロファイルのお約束は色々あるのですが、今回はPayloadTypeとPayloadKeyについて触れたいと思います。

    †PayloadType†
    OSやアプリケーション管理の機能を種類別にまとめたものというイメージです。
    今回は一例として、Jamf Proの制限ペイロードで使われている com.apple.applicationaccess というPayloadTypeを例にします(他にもたくさんあるのですが、あくまで一例です)。

    †PayloadKey†
    機能のカタマリPayloadTypeの中に用意されている個別の機能が、どのように振る舞うかを伝える合言葉です。
    さきほどのcom.apple.applicationaccessの中に用意されている カメラの使用を許可 を制限する場合を例にします。先程例に出したペイロードタイプを指定して、allowCamera という合言葉(PayloadKey)にfalseと指定することで実現できます。

    何言ってるかわからないと思うので、該当部分だけ抜粋したのが以下の例になります。魔導書の一部や魔法陣だと思って下さい。

    <dict>
      <!-- ペイロードタイプ(機能のカタマリ)の指定 -->
      <key>PayloadType</key> 
      <string>com.apple.applicationaccess</string>
      <!-- ペイロードキー(上で指定したペイロードタイプの中の特定の機能)の指定 -->
      <key>allowCamera</key>
      <!-- 上で指定したペイロードキー(機能)がどのように振る舞うかの指定 -->
      <false/>
    </dict>

    付与魔術士がこの呪文を詠唱(または魔法陣を発動)することによって構成プロファイルにエンチャントが施され、
    その構成プロファイルを装備した冒険者はカメラの使用が制限されます。
    何言ってるかわからないですね🤔

    鍛冶屋 兼 付与魔術士のドワーフ

    画像
    https://www.irasutoya.com

    あなたは冒険者のために武器や防具などの装備品を作る鍛冶屋であり、また付与魔術の使い手でもあるドワーフです。
    自ら制作した装備に様々なエンチャントを付与することが出来る凄腕です。その技術は門外不出であり、冒険者ギルドに併設されたあなたの工房には誰も入ることは出来ません。
    工房からは時々、誰も聞いたことがないマークアップ言語による付与魔術の詠唱が聞こえて来るそうです。

    いくら凄腕とはいえども、弘法も筆の誤りという言葉もあります。たまにエンチャントに失敗して呪われた装備が出来ることもあるため、居合わせたギルド従業員や冒険者はその声が聞こえるたびにビクビクしています。
    あと弘法大師って誰なんだろうって魔道具屋の看板娘が言ってましたよ。異世界ですからね。

    噂によると工房の作業台には、齧られたりんごの印が入った金属製の本のようなものが置いてあるとか置いていないとか。

    魔法 - ポリシー

    画像
    https://www.irasutoya.com

    ポリシーってなに

    参考リンク:
    ポリシー | Jamf Pro ドキュメント

    スクリプトの実行やアカウントの管理、ソフトウェアのインストールなどを行えるJamf Proの機能です。任意のタイミングや条件で実行することが出来ます。
    実行のタイミングをユーザーに任せることも可能なので、ユーザーが必要になったタイミングで必要なアプリケーションや設定をインストールするなどの使い方もできます。

    魔法ってなに

    魔法 (まほう)とは【ピクシブ百科事典】 - pixiv
    RPGでは、必要に応じて魔法を使用することで様々な効果が得られます。魔法使いや僧侶など特定の職業の人が、MPやマナといった不思議なエネルギーを消費し、それを対価として魔法を発動します。
    魔法によって攻撃や回復、ステータスの上昇や、場合によっては昼夜を入れ替えたり鍵を勝手に開けたりなど無茶苦茶な様々な魔法があります。
    ルーラが使えたら良いのになと皆さんも日々思っていることだと思います。

    ポリシーは魔法 📛

    Jamf Proを使ってポリシーを使用する場合、スクリプトを実行したりアプリケーションのインストールを行うことが多いです。
    特にスクリプトは、Jamf Proから管理されているMacへ配信されてから実行されるため色々な事が出来てしまいます。
    「出来てしまう」と敢えて書いたのは、内容によってはユーザーや管理者さえも望んでいないような結果になることもあるからです。
    大いなる力には、大いなる責任が伴う とも言いますし、十分に発達した科学技術は、魔法と見分けがつかないという言葉もあります。魔法のような力を無自覚に使ってしまわないようにという自戒も込めています。

    あなたは魔道具氏であり、冒険者ギルドの魔法指導教官でもあります。
    魔法が使えない人でも魔法の効果を得られるマジックアイテムを作ったり、新米冒険者に魔法の使い方を指導したりしています。

    あなたは魔法についての知見がとても深く、冒険者たちがダンジョンで入手したどこの誰がいつ残したのかわからない魔法の巻物を解読し、安全なものだけを市中に流通させています。
    魔法の便利さも恐ろしさも理解しているあなたのおかげで、大勢の無鉄砲な若者たちが命を救われました。
    あなたのおかげで、この街には sudo rm -rf / などという無茶な魔法を使う者は一人もいません。

    スクリプト

    参考リンク:
    スクリプト | Jamf Pro ドキュメント

    画像
    https://www.irasutoya.com/

    もともとは台本・脚本などの意味を持つ言葉ですが、ITの文脈ではコンパイルを必要としないプログラミング言語を指して言う場合が多いと思います。
    Jamf Proはいくつかのスクリプト言語に対応していますが、Bashが使われる事が多いのかなというのが個人的な印象です。
    予め用意したスクリプトをJamf Proに登録して、先に挙げたポリシーという機能を使ってMacに展開します。

    イメージとしては、魔道具に魔法を込めておいて、必要なタイミングで使用するようなイメージです。
    呪文や魔法書をスクリプトと表現する作品もありますし、凄腕のハッカーをウィザード(魔法使い)と呼ぶカルチャーもあったりするので、今回のテーマとして割と連想しやすいのではと思っています。

    凄腕を自称するのはさすがに憚られると思うので、心の中でこっそり(自分は魔法使いなのだ)って思ったりして楽しくお仕事しましょう。

    ステータス - コンピュータインベントリ

    画像
    https://www.ac-illust.com

    コンピュータインベントリってなに

    参考リンク:
    コンピュータインベントリ | Jamf Pro ドキュメント

    Jamf Proで管理されているコンピュータの情報を見る事ができます。
    シリアルナンバーやモデル、適用されているポリシーや構成プロファイル、管理の履歴など、ここにぱぱっと例挙げるのが難しいくらい沢山の情報を見ることができます。詳しくは上のリンク先をご覧ください。

    ステータスって何

    参考リンク:
    ステータス - ピクシブ百科事典 - pixiv

    RPGではキャラクターごとに能力値が設定されています。
    生命力や攻撃力、素早さや運の良さなどのキャラクター自信の能力。装備しているアイテムや、そのアイテムの効果。キャラクターが使える魔法やスキルなどの特殊能力などなど、そのキャラクターの個性を表す能力が数値化されて設定されています。

    ファンタジー作品ではしばしば、ステータスの値と、それまでの冒険者としての実績を総合的に判断して冒険者ランクが決まるという設定があります。冒険者ランクは単にその冒険者の強さを表すだけではなく、その冒険者が請け負う依頼(クエスト)の難易度を決めるための重要な指標でもあります。

    ステータスによって攻撃の方法の得意不得意が決まったり、敵と戦う時の立ち回りも変わってきます。
    例えば力が強く魔力が少ないキャラクターの場合、剣などの武器を使った近接戦闘を得意とする反面、遠距離からの攻撃が苦手であったり、攻撃力は低いが回復や補助の魔力が高いキャラクターの場合は、戦闘中に回復やステータス上昇の魔法を使って仲間をサポートするなどです。

    大抵の場合は職業によってステータスに偏りがあり、複数の職業のキャラクターで構成されたパーティで、お互いの長所を活かし、短所を補い合って冒険に挑みます。

    コンピュータインベントリはステータス画面

    コンピューターインベントリではMacの状態を見る事ができます。
    OSのバージョンや、インストールされているアプリケーションとそのバージョン。配布した構成プロファイルやポリシーが正しく適用されたり実行されているか、もしそれらにエラーが発生しているとしたらどのようなエラーなのか。ユーザーを紐づけている場合はどの部署の誰が使っているのか。
    購入情報を登録している場合は、いつどこで買って価格はいくらで保証はいつまでなのかなどなど。

    コンピューターインベントリはまさしくステータス画面でしょう。Macの状態を把握し、ユーザーが快適にMacを利用できているのかを知ることができます。仮に異常が発生していた場合はその原因を調査したり、あるいは利用者にヒアリングを行って対処したりできます。

    あなたの冒険者ギルドには、触れた人のステータスを鑑定できる魔道具が用意されています。
    新人冒険者が登録に来た際はその魔道具でステータスを確認し冒険者登録を行います、アドバイザーや指導担当の職員が鑑定結果をもとに新人冒険者のサポートをを行います。
    既に登録済みの冒険者のランク再認定の際は、鑑定の結果とそれまでの功績を考慮して冒険者ランクを判断します。

    ステータスに見合わない高難易度のクエストを請け負うことは冒険者の命を危険に晒す事になる一方、高いステータスを持つ冒険者が実力にそぐわない低ランクに認定されてしまうことは宝の持ち腐れになってしまうでしょう。

    そして何より、その冒険者の得手不得手がわからなければその実力を活かすことはできません。高ランクの魔術師でも魔法耐性の高いモンスターとの戦闘には苦労するでしょうし、ステータスが低い盗賊でもダンジョンに設置された罠の解除は朝飯前かもしれません。

    そしてあなたは、鑑定の魔道具の性能をより引き出すことができる
    拡張属性 - エクステンション・アトリビュート
    というエクストラスキルを持っています。

    エクストラスキル
    拡張属性Extension Attributes/エクステンション・アトリビュート

    参考リンク:
    コンピュータの拡張属性 | Jamf Pro ドキュメント

    コンピュータインベントリには、予め用意された種類の情報がMacから取得されて表示されます。
    拡張属性はインベントリ表示の項目を追加することができる機能です。管理画面から特定のコンピュータのインベントリ情報を手動で入力するか、あるいはAPIを使って入力することができます。
    また、拡張属性のためのスクリプトを使用してMacの状態を定期的に取得して表示することも出来ます。

    例えば返却されたMacの外観情報(ステッカーが貼ってあるとか傷だらけとかありますよね)を拡張属性に登録しておいて、ストックしたデバイスを再利用したいときに参照するみたいな使い方ができます。
    スクリプトを使用して情報を取得する例としては、Macの連続起動日数を取得して表示したり、セキュリティソフトの動作ステータスを取得して表示するなどです。

    拡張属性はスマートコンピュータグループのクライテリアに使用することもできるので、スクリプトで取得した情報を基にグループを作成して、そのグループに対して特定のポリシーを適用するみたいな使い方もできます。

    ちなみにこの項はタイトルが言いたかっただけなので、ファンタジー小話みたいのは無いです。

    さいごに

    思いついたときはヘリウム並みの軽い気持ちだったのですが、出来上がってみたらだいぶ長くなってしまいました。
    わかりやすさ重視と言いながらも、逆にわかりづらくしているのでは…?という疑念はそっと胸に秘めました。

    チームメンバーが社名変更に伴うOktaやGoogle Workspaceについての真面目な記事を書いている中でこの記事のレビューを依頼するのはちょっと心が折れそうだったのですが、もしこれを読んで頂いたどこかの誰かに、ほんの少しでも『なるほど』が生まれてくれたら嬉しいです。

    参考

    Apple

    Jamf

     
     
    コーポレートエンジニアとしてmacのお世話とかしてます

    あなたへのおすすめ