最後になりましたが、ここではもう少しだけ複雑なシナリオに合わせてみます。
この記事は3つに分割されたものの3つ目です。
①ADFSのデバイス認証を1時間でハンズオン(1/3 環境準備編)
②ADFSのデバイス認証を1時間でハンズオン(2/3 Workplace Join編)
③ADFSのデバイス認証を1時間でハンズオン(3/3 クレームルール制御編)
まず、前の記事の手順でやった場合の問題点として、ユーザIDを持っている社員が勝手にデバイスをどんどん持ち込んで社内に繋いでも、繋げてしまうという問題点がありました。
許可済みのデバイスのみを繋げるようにしたい場合の一番シンプルな方法から書いてみます。
ADから登録済みのデバイスのプロパティを開きます。
属性エディタから「msDS-IsEnabled」というプロパティを探します。これのTrue、Falseを設定することで、デバイス認証を受け付けるかどうかを設定できます。
早速試してみます。ダブルクリックすると設定画面が出るのでFalseを選択して、OKを押します。
「msDS-IsEnabled」がFalseになっていることが確認できたらApplyを忘れずに押します。
ではデバイスが無効化されたか調べてみましょう。またCLIENT2から作業をしていきます。
この際にIEのキャッシュなどが残っていると上手く行かないことがあるので、Privateモードで実行します。IEを開いてCtrl+Shift+PのショートカットでPrivateモードのウィンドウが開きます。
ではまた同じ手順で進めます。Sign-in pageを開いていきます。
このようなエラーが出ます。デバイスが無効化されたのでデバイス認証ができなくなっています。 このようにシンプルにデバイス毎に認証をコントロールすることもできます。
The device authentication failed.
もう少し複雑なシナリオ
もう少し複雑なシナリオ例として、以下の二つのクレームを使ってみます。(それぞれのクレームの正式な使い方ではないかもしれませんが、ここは例としてみてください。)
- 外部ネットワークかの判断に利用するクレーム
http://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork
- デバイスが許可済みかという判断に利用するクレーム
http://schemas.microsoft.com/2012/01/devicecontext/claims/ismanaged
このクレームはAD上のデバイスのプロパティの「msDS-IsManaged」に紐付いているのですが、これを管理者による許可の有無ということにしたシナリオを考えてみます。 (本当はMDM管理対象かとうかを管理するクレームのようなので正規の使い方ではないと思います)
この二つのクレームのTrueとFalseの組み合わせを判断基準にしてみます。
社内接続 | 外部接続 | |
---|---|---|
許可済みデバイス | ○ | × |
許可されてないデバイス | できないという想定で。 | × |
これは、ADFSにクレームルールを追加していくこと、クレームの値を元に認可の有無をコントロールすることで実現します。
まずはADFSであるSERVER2に接続し、AD FS Managementからserver3.contoso.comのクレームルールの編集を行います。
Issuance Authorization Rules(発行承認規則)にAdd Ruleでクレームルールを追加します。
Send Claims Using a Custom Ruleでカスタムルールを追加します。
一つ目はこちらです。つまりは外部接続でも許可済みのデバイスならOKだということです。
Exists([Type == "http://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork", Value == "false"]) && Exists([Type == "http://schemas.microsoft.com/2012/01/devicecontext/claims/ismanaged", Value == "true"]) => issue(Type = "http://schemas.microsoft.com/authorization/claims/permit", Value = "PermitUsersWithClaim");
二つ目はこちらです。つまりは外部接続で許可されていないデバイスならNGだということです。
Exists([Type == "http://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork", Value == "false"]) && Not Exists([Type == "http://schemas.microsoft.com/2012/01/devicecontext/claims/ismanaged", Value == "true"]) => issue(Type = "http://schemas.microsoft.com/authorization/claims/deny", Value = "DenyUsersWithClaim");
設定が完了すると以下のようにルールの一覧が出ますので、OKかApplyを忘れずにクリックします。
この後CLIENT2から今までの手順で接続してみると、このようなエラーが出ます。
DCに入りデバイスの属性を変更して「msDS-IsManaged」をTrueに変更してます。
クレームルールは他にも色々な書き方があるので、様々な要件に対応できます。例えば営業部門だけがデバイス認証で入ることが可能といったことも設定次第ということです。
クレームルールの書き方はこの資料で勉強させていただきました。