前回はJamf Pro Serverにログインするところまでを解説しました。

業務でSaaSを当たり前に使うようになってきた現在、使用するサービスごとにパスワードを覚えるのはたいへんです。 また、パスワード使い回しによる不正アクセスのリスクにさらされる可能性があります。

今回はこの問題を解決できるSSO(Single Sign On)をJamf Pro Serverに設定する方法を解説します。

SSO(Single Sign On)とは

SSOとは、複数の関連するが独立したソフトウェアシステムのアクセスを制御する特性のことを指します。多くの場合、ユーザーは単一のIDとパスワードなどを使用してIdP(Identity Provider)の認証するのみでよく、そのIdPと連携済みのシステムはIdPに認証を委譲することでシステムにアクセスを可能とします。

Jamf Pro ServerにおけるSSO

Jamf Pro ServerでSSOを有効にすると、以下のケースにおいて指定したIdPに認証を委譲されます。

  • Jamf Pro Serverへのログインの認証
  • macOS用のSelf Serviceを使用する際の認証
  • User-Initiated Enrollment時のプロファイル、インストーラをダウンロードするための認証

Jamf Pro ServerはSAML 2.0をサポートしているIdPであれば、ほとんどすべてのIdPが使用できるはずです。

Jmaf Pro ServerにSSOを設定

それでは実際にJamf Pro ServerにSSOを設定していきます。 ここではIdPとしてシェアが大きいOktaAzure Active Directoryを例にして統合方法を解説します。

OktaをIdPとするSSOの設定

まずは、OktaをIdPとしてJamf Pro Serverと統合する方法を紹介します。

OktaをIdPとするSSOの設定 - Okta側

  1. Oktaの管理ページにログインします。
  2. アプリケーションの追加ページに遷移します。

    Oktaのアプリケーションの追加ページ

  3. Jamf Proのアプリケーションを検索します。

    OktaのJamf Proのアプリケーション検索

  4. 追加するJamf Proアプリケーションの構成情報を指定します。
    • Application labelにはJamfのアプリケーションであることがわかるような任意の名前を付けます。
    • DomainにはJamf Pro Serverのドメイン名を指定します。
      • この値を使用してOktaの内部では、エンティティIDがhttps://ドメイン名/saml/metadata、ACS(Assertion Consumer Service)がhttps://ドメイン名/saml/SSOとして振る舞います。

    OktaのJamf Proのアプリケーションの追加

  5. Jamfアプリケーションにアクセスを許可するユーザーをアサインします。

    OktaのJamf Proアプリケーションにユーザーをアサイン

  6. 「Sign On」タブに遷移して、Identity Provider metadataのURLをメモしておきます。
    • のちほどこのURLをJamf Pro Server側に設定します。

    OktaのJamf ProアプリケーションのSign On設定

  7. Jamf Pro Serverへのログインを許可するユーザーおよびグループをアサインします。
    • ここで指定されたNameIDの値を使用して、Jamf Pro Server側のどのユーザー名とマッピングするかが決まります。
      • User Profile Mappingsを使用することで渡す値をカスタマイズできます。

    OktaのJamf Proアプリケーションのアサイン

  8. 次に、セキュリティの認証ページに遷移します。

    Oktaのセキュリティの認証ページへの遷移

  9. 「Sign On」タブに遷移して、Jamf Pro Serverにログイン可能なポリシーが一つまたは複数あり、すべての「Session Lifetime」の時間が同一の場合、その時間をメモします。
    • のちほど、この時間をJamf Pro Server側に設定します。

    Oktaの認証のSing On設定

OktaをIdPとするSSOの設定 - Jamf Pro Server側

  1. Jamf Pro Serverにログインします。
  2. 左上の歯車から設定ページに遷移し、シングルサインオン設定ページに遷移します。

    Jamf Pro Serverの設定ページ

  3. 「Single Sign-On 認証を有効化」にチェックを付けます。
  4. 各種値を設定し、保存します。
    • アイデンティティプロバイダのセクション
      • アイデンティティプロバイダには「Okta」を指定します。
      • エンティティIDには「https://サブドメイン名.jamfcloud.com/saml/metadata」を指定します。
      • アイデンティティプロバイダのメタデータソースには「メタデータ URL」を指定し、Okta側の設定で取得した「Identity Provider metadata」のURLを指定します。
        • 「メタデータファイル」と「メタデータ URL」はどちらを選択しても構いませんが、視認性や設定の容易さから「メタデータ URL」を選択しました。
      • トークン有効期限(分)にはOkta側の設定で取得した「Session Lifetime」を分単位に変換した値を指定します。
        • Okta側の認証のサインインポリシーが複数あり、「Session Lifetime」が異なる場合は、SAML トークンの有効期限を無効化にチェックを入れることを推奨します。
    • セキュリティのセクション
      • アイデンティティプロバイダのユーザマッピングには「NameID」を指定します。
      • JAMF PROのユーザマッピングには「ユーザ名」を指定します。
      • アイデンティティプロバイダグループ属性名には何も指定しません。
        • http://schemas.xmlsoap.org/claims/Groupを指定し、Okta側で該当の設定するとアサーションにグループを追加できるらしいですが、試したところ特に追加されているようには見受けられずこの機能が使用できることを確認できませんでした。
      • LDAP グループ用の RDN キーには何も設定しません。
    • Jamf Pro の Single Sign-On オプションのセクション
      • JAMF PRO 署名証明書には「証明書なし」を指定します。
    • Jamf Pro のSingle Sign-On オプションのセクション
      • Single Sign-On 認証のバイパスをユーザに許可しますは特段理由がない限りはチェックを外します。
      • macOS 用 Self Service の Single Sign-On を有効化は特段理由がない限りはチェックを外します。
        • Self Serviceがインストールされているということはその端末は(完全ではないですが)信頼できると考えられるため、わざわざ認証を付ける必要がないと考えています。
      • User-Initiated Enrollment の Single Sign-On を有効化は運用に合わせてチェックを付けます。
        • 今回は例であるため、チェックを外しています。

    Jamf Pro ServerのSingle Sing-On設定 Oktaの内容

Azure Active DirectoryをIdPとするSSOの設定

次に、Azure Active DirectoryをIdPとしてJamf Pro Serverと統合する方法を紹介します。 10.19.0から公式にサポートされましたが、それ以前のバーションでもSSOは可能です。

Azure Active DirectoryをIdPとするSSOの設定 - Azure Active Directory側

  1. Microsoft Azure Potalにログインします。
  2. エンタープライズアプリケーションのページに遷移し、新しいアプリケーションを追加するページに遷移します。

    Azure ADのエンタープライズアプリケーションの追加

  3. Jamf Proアプリケーションを検索し、アプリケーションを作成します。

    Azure ADのJamf Proアプリケーションの作成

  4. シングルサインオン方式として「SAML」を選択します。

    Azure ADのJamf Proアプリケーションのシングルサインオンモード選択

  5. シングルサインオンの設定に遷移して、「基本的なSAML構成」の編集ページに遷移します。

    Azure ADのJamf Proアプリケーションのシングルサインオン画面

  6. 追加するJamf Proアプリケーションの構成情報を指定します。
    • 識別子(エンティティID)には「https://サブドメイン名.jamfcloud.com/saml/metadata」を指定します。
    • 応答URL(Assertion Consumer Service URL)には「https://サブドメイン名.jamfcloud.com/saml/SSO」を指定します。
    • サインオンURLには「https://サブドメイン名.jamfcloud.com」を指定します。

    Azure ADのJamf Proアプリケーションのシングルサインオンの基本的なSAML構成画面

  7. デフォルトでNameIDUser Principal Nameが使われているため、必要な場合は使用する属性を変更します。
    • ここで指定された属性の値を使用して、Jamf Pro Server側のどのユーザー名とマッピングするかが決まります。
  8. 「SAML署名証明書」の項目からアプリのフェデレーションメタデータURLをメモしておきます。
    • のちほど、このURLをJamf Pro Server側に設定します。

    Azure ADのJamf ProアプリケーションのシングルサインオンのアプリのフェデレーションメタデータURL取得

  9. Jamf Pro Serverへのログインを許可するユーザーおよびグループをアサインします。

    Azure ADのJamf Proアプリケーションへのユーザーアサイン

Azure Active DirectoryをIdPとするSSOの設定 - Jamf Pro Server側

  1. Jamf Pro Serverにログインします。
  2. 左上の歯車から設定ページに遷移し、シングルサインオン設定ページに遷移します。

    Jamf Pro Serverの設定ページ

  3. 「Single Sign-On 認証を有効化」にチェックを付けます。
  4. 各種値を設定し、保存します。
    • アイデンティティプロバイダのセクション
      • アイデンティティプロバイダには「Azure」を指定します。
      • エンティティIDには「https://サブドメイン名.jamfcloud.com/saml/metadata」を指定します。
      • アイデンティティプロバイダのメタデータソースには「メタデータ URL」を指定し、Azure AD側の設定で取得した「アプリのフェデレーションメタデータ」のURLを指定します。
      • トークン有効期限(分)にはなにも指定せずにSAML トークンの有効期限を無効化にチェックを入れます。
        • Azure ADを使用するとセッションの関係でいくつかのエラーが発生する可能性があるため、有効期限を無効化しています。
    • セキュリティのセクション
      • アイデンティティプロバイダのユーザマッピングには「NameID」を指定します。
      • JAMF PROのユーザマッピングには「ユーザ名」を指定します。
        • 公式ドキュメントには、Eメールを指定するように記載されていますが、Jamf Pro側でEmailは一意な属性ではないため、ユーザ名を指定することをお勧めします。
      • アイデンティティプロバイダグループ属性名には何も指定しません。
        • http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsを指定し、Azure AD側で設定するとアサーションにグループを追加できるらしいですが、試したところ特に追加されているようには見受けられずこの機能が使用できることを確認できませんでした。
      • LDAP グループ用の RDN キーには何も設定しません。
    • Jamf Pro の Single Sign-On オプションのセクション
      • JAMF PRO 署名証明書には「証明書なし」を指定します。
    • Jamf Pro のSingle Sign-On オプションのセクション
      • Single Sign-On 認証のバイパスをユーザに許可しますは特段理由がない限りはチェックを外します。
      • macOS 用 Self Service の Single Sign-On を有効化は特段理由がない限りはチェックを外します。
        • Self Serviceがインストールされているということはその端末は(完全ではないですが)信頼できると考えられるため、わざわざ認証を付ける必要がないと考えています。
      • User-Initiated Enrollment の Single Sign-On を有効化は運用に合わせてチェックを付けます。
        • 今回は例であるため、チェックを外しています。

    Jamf Pro ServerのSingle Sing-On設定 Azure ADの内容

Jamf Pro Serverのユーザー作成について

Jamf Pro Serverはユーザーおよびグループのプロビジョニングをサポートしていません。 そのため、新しいユーザーを追加したい場合はLDAPと統合してユーザー情報を取得するか、マニュアルで作成する必要があります。

上記で設定したアイデンティティプロバイダのユーザマッピングおよびJAMF PROのユーザマッピングの設定を元に、Jamf Pro Serverのユーザーを統合または作成してください。

LDAPとの統合についての個人的な見解

少々話がそれますが、LDAPについて個人的な見解を述べます。

LDAPを使用してのユーザーアカウントとグループの統合は、個人的にはお勧めしません。 なぜなら、以下のような理由です。

  • LDAPをそもそも外部公開することは少ない
    • 外部公開したときの攻撃に対する防御または検知がたいへん
  • LDAPの運用はかなり運用コストがかかる
  • SAMLやOIDCに置き換わる流れがきている

このためだけではなく、macOSのバインドなどにも使ったりするのでLDAPあるので、それなら使っても良いという意見もあるかもしれません。 しかし、macOSではLDAPに不安を抱えている関係もあり1、macOSの認証に関してはJamf Connectなど、LDAPがそもそも必要ない流れがきており、IdPサービスと連携する方に投資したほうが良いと考えています。

また、誰がどの端末をつかっているのか、個別にポリシーを当てたいなどの用途で使いたいたので、LDAPでユーザー一覧がないと面倒であるという意見もあるかもしれません。 この部分に関しては、誰がどの端末を使っているかはMicrosoft Intuneとの統合でカバーできます。 個別のポリシーに関しては、結局は個別の端末ベースの話になることがほとんどであるため、スマートコンピュータグループなどを使って適用する方法をお勧めしています。

本当であればJamf Pro Server側にSCIM(System for Cross-Domains Identity Management)があればよいのですが、まだ実装されていません。 Feature Requestが出ているので、ぜひVoteしてみてください。

Jmaf Pro ServerのSSO設定後のお勧め作業

SSO設定完了後は、現在存在しているすべてのユーザーのパスワードを強固なものに変更しておくことをお勧めします。

管理者に関しては、https://サブドメイン名.jamfcloud.com/?failoverを使用することでログインが可能です。 SSO設定やIdPに何かあったときにログインできる口があることは重要ですが、強度が弱いパスワードを設定していると、ここから突破されてしまいます。

また、管理者以外でもユーザー名とパスワードを使用することでAPI呼び出しが可能です。

そのため、以下のような設定および作業をお勧めします。

  • 管理者ユーザー、APIユーザー
    • パスワードジェネレータなどで作成した強固なパスワードを設定
    • 対象パスワードをパスワードマネージャーなどで管理
  • その他ユーザー
    • パスワードジェネレータなどで作成した強固なパスワードを設定
    • 対象パスワードは管理せず対象ユーザーにも伝えない

終わりに

今回は、OktaとAzure Active DirectoryをIdPとして、Jamf Pro ServerとSSOで統合する方法を解説しました。

次回はApple Business ManagerおよびApple School Managerとの統合について紹介しようと思います。

この記事の作成には、OktaとAzure Active Directory、Jamf Pro Serverはすべて無料ライセンスおよび開発者ライセンスを使用させていただきました。