10分でわかる!デバイス証明書でデバイストラスト!Jamf Pro✖️Microsoft Entra CBA編
こんにちは、GO株式会社 IT戦略部の白井(@yunmarurun)です。
今回は、Jamf ProとMicrosoft Entra CBAを使って、macOSのデバイストラストを行う方法について解説します。詳しい構築方法については公式ドキュメントを参考にしていただくとして、ここではデバイストラストの概念とデバイス証明書を用いた仕組みの大枠を説明します。
デバイストラストの基本概念
要するに、会社が許可した端末のみが会社のリソースにアクセスできるということです。弊社ではBYOD(Bring Your Own Device)を禁止しているため、会社所有の端末であることが必須条件となります。
Microsoft Entraによる条件付きアクセスとデバイストラストの仕組み
ではどうやって、その端末が「会社所有の端末」であることを確認するのでしょうか?Microsoft Entra IDをIdPとして利用している場合、まずは「条件付きアクセス」を利用することになると思います。
通常、Microsoft Entra IDと一緒にMDMとしてIntuneを利用していれば条件付きアクセスの許可条件として「準拠したデバイス」を利用することができます。
サードパーティのMDMであってもデバイスのコンプライアンス状態をIntuneと共有してこの「準拠したデバイス」という許可条件を利用することが可能なものもあります。Jamf Proはこのコンプライアンスポリシー共有を利用することができるMDMの一つです。
今回はIntuneとJamf Proの間のコンプライアンスポリシー共有ではなく、デバイス証明書を使って、デバイストラストの仕組みを構築していきます!わいわい!
デバイス証明書を使ったデバイストラストの図
デバイス証明書と条件付きアクセスを使ってデバイストラストをすると、以下のようになります。
MDMであるJamf Proがデバイス証明書の認証局(SCEPman)に対して、各端末の証明書を要求します。
認証局であるSCEPmanは、Jamf Proからの情報を受け取って、デバイスごとに証明書を発行します。
証明書はJamf Proを通じて配布されます。
会社の管理するMacから会社リソースへアクセスする際に、条件付きアクセスで証明書を要求されます。
条件付きアクセスは、確かに会社の発行したデバイス証明書であることをMicrosoft Entra IDを通して確認します
条件付きアクセスが端末からのアクセスを許可します。
リソース
MDM:Jamf Pro
認証局:SCEPman(Azure環境に構築)
IdP:Microsoft Entra ID
∟ Microsoft Entra CBA(証明書ベース認証)
認証局はSCEPmanである必要はありません!お好きなものをご利用ください!ただし、IntuneのCloud PKIについては、2024年12月現在、Intune管理下の端末のみのサポートとなっているため、Jamf Proで利用することはできません。
構築手順
大きく以下の流れで対応しました!
SCEPmanをAzure上にデプロイします!
Jamf ProをSCEPプロキシとして設定、SCEPmanと接続します!
構成プロファイルを配って、ルート証明書とデバイス証明書を発行します!
Microsoft Entra CBAの設定を行います!
条件付きアクセスを設定します!
完了です!
わーい!かんたーん!(ほんとはだいぶかかった)
SCEPmanをAzure上にデプロイする
まずはSCEPman公式のdocsを確認します!
こちらのdocsとっても丁寧に書いてくれているので、よく読みましょう!(よく読まないですっ飛ばしたら、あとでどこの話かわからなくなって、何を直せばいいの…?となって、私と同じ目に遭います)
Getting Startedから開始します。
トライアル目的であれば、Standard Guidに従って構築していきます。
https://docs.scepman.com/scepman-deployment/deployment-guides
Extended GuideはEnterprise Editionのみで利用できる機能があるため、トライアル時点でそちらの機能を試してみたければ、SCEPmanに連絡してトライアルキーをいただきましょう!!(質問にも答えてくれます!)
ライセンスの購入も公式サイトでそのまま行うことができます。
Azure マーケットプレイスからも購入できますが、私が構築した当時は日本では購入できなかったため、こちらのGuidに従って構築しました。
Jamf Pro側の設定
Guidを進めていくと、SCEPmanのdocsの中にJamf Pro側の設定方法も記載がありますので、Guidに沿って設定します。
Jamf Pro 側の設定が完了すれば、端末側でルート証明書とデバイス証明書を確認できるようになります!
Advanced Configurationの中にはSCEPman App Serviceの設定値として設定すると、利用できるようになる項目がありますので、必要なものを確認するようにしましょう。
例えば、CRLの項目には、"AppConfig:CRL:RequestToken"がありますが、Microsoft Entra CBA側の設定で必要になりますので、設定しておきましょう!
Microsoft Entra CBA側の設定をする
今度はMicrosoft learnを参考に設定していきます!
⚠️ハマりポイント⚠️
テナントでCBAを有効にすると、有効にしたスコープ内のユーザーについては、例えMFAの対応ができていなかったとしても、MFA対応ができるユーザーとして扱われます!
よって、MFAとしてAuthenticatorへの通知を条件付きアクセスに設定している場合に、全く未登録の新入社員は一切りソースにアクセスができず、Authenticatorの登録もできない!という状態に陥ることになります。登録時にはTAPを利用する&関連の条件付きアクセスから除外 or CBAを有効にするスコープから除外する等の対応が必要になることをお忘れなく!!
条件付きアクセスを設定する
条件付きアクセスで、証明書を許可条件に表示させるためにはCBAの設定で、『認証バインドポリシー』を設定する必要があります。
要は、この証明書は認証強度として単一要素なのか、多要素なのかを管理者が定義することができます。
ここで、証明書による認証を多要素と定義するか、単一要素と定義するかによって、証明書の他に認証を必要とするかしないかが決まってきます。証明書を多要素と定義した場合は、テナント全体にMFAを強制する条件付きアクセスが存在していたとしても、証明書を認証したら多要素な認証をしたという認識になるため、例えAuthenticatorを設定していたとしても通知はこなくなります。この辺りは考え方によってどう設計すべきかが変わってくるポイントかなと思います。
ここまで設定が完了すれば、無事にデバイス証明書を使ったデバイストラストができるようになります!!!お疲れ様でした。
おわりに
デバイス証明書を使ったデバイストラストについて、だいたいイメージいただけたでしょうか。公式ドキュメントや参考資料も是非ご覧ください。デバイストラスト、コワクナイヨ!