【Azure AD】条件付きアクセスにある「ドメイン参加」の条件–ADFS編

皆さんこんにちは。国井です。

前回、条件付きアクセスに「ドメイン参加」の条件について紹介しました。
その中で、Active Directoryドメインに登録しているデバイスであることをAzure ADに
お知らせするために、Azure ADにデバイスを登録しなければならないという話をしました。

そのデバイス登録についてですが、Azure ADにデバイスを登録するときには、
Azure ADで認証を行い、認証が成功するとデバイスの登録が行われます。
(この図、間違っていたら、どなたかご指摘いただけるとありがたいです。)

一方、ADFSを利用している場合には、Azure ADで認証は行わないため、
私はデバイス登録を行いたい。でも、AD/ADFSを通じて既に認証は済ませているから、
Azure ADでの認証プロセスを省略してデバイスを登録させてほしい

というお願いをしなければなりません。

そのため、ADFSを利用している環境で、Azure ADの条件付きアクセスの「ドメインに参加しているデバイスが必要です」を利用する場合には、ADFSから発行されるクレームにデバイス登録を行うための情報(厳密に言うと、Azure ADデバイス登録サービスにデバイスを登録するためのアクセストークンをもらうための情報)を追加して、Azure ADにデバイスを登録するように依頼をします。
ADFSサーバー上で設定するAzure ADデバイス登録のためのクレームルールは証明書利用者信頼の[発行要求規則]から次の3つのルールを作成します。
(発行変換規則のうち、最初の2つはデフォルトの規則で、順序3~5が自動登録のために追加している規則です)

それぞれの規則で登録されている内容について、ざっくり見てみます。
まず、順序3ではaccounttypeクレームにDJという値をセットするというルールです。DJは「Domain Join」の略で、ドメインに参加済みのデバイスという意味です。

c:[Type == “http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid”,
Value =~ “-515$”, Issuer =~ “^(AD AUTHORITY|SELF AUTHORITY|LOCAL AUTHORITY)$”]
=> issue(Type = “http://schemas.microsoft.com/ws/2012/01/accounttype”, Value = “DJ”);

次に順序4に登録されている規則は
onpremobjectguidクレームにobjectGUID値をセットするというルールです。

c1:[Type == “http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid”, Value =~ “-515$”,Issuer =~ “^(AD AUTHORITY|SELF AUTHORITY|LOCAL AUTHORITY)$”] && c2:[Type == “http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname”,  Issuer =~ “^(AD AUTHORITY|SELF AUTHORITY|LOCAL AUTHORITY)$”]
=> issue(store = “Active Directory”, types = (“http://schemas.microsoft.com/identity/claims/onpremobjectguid”), query = “;objectguid;{0}”, param = c2.Value);

最後に順序5に登録されている規則は
primarysidクレームの内容をパススルーでセットする(つまりコンピューターアカウントのSIDをクレームの値として登録するってこと)というルールです。

c1:[Type == “http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid”,
Value =~ “-515$”, Issuer =~ “^(AD AUTHORITY|SELF AUTHORITY|LOCAL AUTHORITY)$”]&& c2:[Type == “http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid”, Issuer =~ “^(AD AUTHORITY|SELF AUTHORITY|LOCAL AUTHORITY)$”]
=> issue(claim = c2);

以上の設定を済ませ、グループポリシーが適用されると、ADFSで発行されたクレームをもってAzure ADにアクセスします。そして、クレームに記述されたobjectGUID値と同じ値を持つデバイスの情報は登録可能な状態となり、後にAzure AD Connectからディレクトリ同期が実行されることによって同一objectGUID値を持つドメイン参加のデバイスの情報がAzure ADに登録されます。
その様子はGet-MsolDeviceコマンドレットの他、Azure ADのSynchronization Service Managerからも確認できます。

クレームルールをADFSサーバーで書かなければならないのが面倒ですが、マイクロソフトさんのWebサイトにはクレームルール作成を自動化するスクリプトも置いてあるので、参考にしてください。

■Azure Active Directory への Windows ドメイン参加済みデバイスの自動登録の構成方法
https://docs.microsoft.com/ja-jp/azure/active-directory/active-directory-conditional-access-automatic-device-registration-setup