MDMせずにMAMのみ適用した時の話(Intune)
はじめに
IntuneにはMDMだけではなくMAM(Mobile Application Management)とよばれるアプリケーションの挙動を制御する機能があります。
アプリケーション起動時にPINを要求したり、ファイルのローカルダウンロードをブロックしたり、結果としてセキュリティリスクが低減します。
このMAMの機能はIntuneにデバイスを登録しなくても利用できます。
※①「MAM for unenrolled devices」と文脈に記載されていました。(Microsoft Learn)
※②基本的にはiOS/iPadOS・Android向けになります。WindowsではWIPと呼ばれる機能が代替えでしたが現在は新規作成が非推奨となり、DLPやInformation Protectionで対応してねとのこと。(Microsoft Learn)
デバイスをMDMに登録せずに、企業アカウントでアプリケーションにサインインした際にMAMが適用されることからスマートフォンのBYODのシナリオに向いています。
今回はMAM for unenrolled devices環境を構築支援した際の忘備録になります。
MAM for unenrolled devices設定
設定項目の詳細は割愛いたします。
Microsoft LearnやSE久保田の事件簿さんのブログが参考になります。
アプリ保護ポリシーを作成時、すべてのデバイスではなくアンマネージドデバイスを対象にします。
マネージドデバイスとアンマネージドデバイス用に2種類作成を推奨します。
※MSいわくアンマネージド用の制限をより強くした方がよいとのことです。
アプリ保護ポリシーの各項目の詳細はEMS勉強会の動画でイメージがついた後に、Microsoft Learnの設定項目の詳細や企業や政府ごとの推奨値を読むと頭に入ってきます。
MAM for unenrolled devicesクライアント条件
iOSではMicrosoft Authencticator、AndroidではIntuneポータルサイトアプリがインストールされている必要があります。
MFAでAuthenticatorを利用しているケースは多いですが、Intuneポータルサイトアプリを私物スマホにインストールしている人はいないですよね。
AndroidでIntuneポータルサイトアプリがインストールされていない状態で企業アカウントにサインインするとどうなるのでしょうか?
※アプリ保護ポリシーは有効化、条件付きアクセスは無効化状態
Microsoft 365 Apps(例:Outlook)
Outlookで企業アカウントにサインインするとこのようなポップアップがでます。
ストアアクセスをタップするとPlayストアのIntuneポータルサイトアプリに遷移
これにより、Intuneポータルサイトアプリをインストールするまではアプリ保護ポリシーを適用できず、Outlookでは企業アカウントを利用できないようです。
また、Intuneアプリをインストールしアプリ保護ポリシーを適用後、Intuneアプリをアンインストールすると企業アカウントは強制的にサインアウトされ利用できません。
良いですね
Microsoft 365 Apps以外(例:Gmail)
Gmailに企業アカウントのメールを追加してみます。
サインインできてメールのやり取りやファイルのダウンロードができてしまいます。
もちろんIntuneポータルサイトアプリがインストールされていないので、アプリ保護ポリシーは適用されていません。
これではGmail経由で情報漏洩の危険があるので条件付きアクセスの利用する必要があります。
条件付きアクセス設計
アクセス許可項目に「アプリの保護ポリシーが必要」があるので調べてみると下記の前提条件がありました。
この許可コントロールを適用するために、条件付きアクセスでは、ブローカー アプリの使用を必要とするデバイスを Azure AD に登録する必要があります。
Azure ADにデバイス登録しないといけない!
Intuneと比べると収集できる情報は少ないですが、Azure ADにデバイスのどの情報が収集されるかを社内規定や利用同意書的なものに明記しておいたほうがいいと思います。
上述したGmailで利用できなければこんなことには。。仕方ないです。
ということで、アンマネージドデバイス(iOS/Android)であれば「アプリの保護ポリシーが必要」という条件を満たしていればアクセスを許可します。
※アプリ保護ポリシーの対象アプリは「Microsoft Apps」です。
ではマネージドデバイスとアンマネージドデバイスはどう区別するのがいいんでしょうか。
アンマネージドデバイスもAzure AD登録するので、(device.trustType -eq "Workplace")
は利用できません。
使えそうな項目にはMDM登録有無の項目はありませんが、mdmAppIdを利用できそうです。
「mdmAppId」は名前通りどのMDMが適用されているかの値で、Intuneであれば「0000000a-0000-0000-c000-000000000000」、MDMが適用されていなければ空です。
というわけでデバイスフィルターでdevice.mdmAppId -eq "0000000a-0000-0000-c000-000000000000"
を利用し、マネージドデバイス用とアンマネージドデバイス用の2つのポリシーを作成しました。(作成したポリシーは記事末尾にJSON形式で記載します)
Intuneポータルサイトアプリがインストールされていない状態でアクセスしてみます。
Microsoft 365 Apps(例:Outlook)
まず企業アカウントでID・パスワードを入力するとIntuneポータルサイトアプリをPlayストアでインストールするように促されます。
※条件付きアクセスにMFAも要求していた場合、①ID・パスワード②MFA③Intuneポータルサイトアプリの順番に要求されます。条件付きアクセスの評価の順番がMFA⇒アプリ保護ポリシーだからだと思います。
インストール後にセッションが継続しているかなと思ったら最初からやり直しだったので、Intuneポータルサイトアプリがインストールされている状態で企業アカウントでサインインします。
※Intuneポータルサイトアプリのサインインは不要です。あくまでAzure AD認証やアプリ保護ポリシーの仲介役です。
するとアプリ保護ポリシーを適用するためにアプリの再起動を要求されます。
この項目の日本語訳どうにかならないかな
再起動後利用できました!
サインインログを見るとMDM未登録デバイスと判定されているのが分かります。
Microsoft 365 Apps以外(例:Gmail)
企業アカウントでID・パスワードを入力するとIntuneポータルサイトアプリをPlayストアでインストールするように促されず、アクセスがブロックされました。(以上)
1
2
条件付きアクセス有効可前にGmailにメールアカウントを追加していた場合、認証を求められます。
認証を失敗、または未完了の場合、メールの送受信はできませんが過去データは残るのでご留意ください。
MFAも要求した方がなりすまし対策になる
条件付きアクセスで「アプリの保護ポリシーが必要」を満たしてもなりすましは防げません。
なりすまし対策のためにも「多要素認証を要求する」こともアクセス許可条件に加えたほうが良いです。
おわりに
Azure ADにBYODを登録するのをどう納得してもらうかが一番大変でした
条件付きアクセスポリシーJSON
アンマネージドデバイス用
{
"Conditions": {
"Applications": {
"ExcludeApplications": [
],
"IncludeApplications": [
"Office365"
],
"IncludeAuthenticationContextClassReferences": [
],
"IncludeUserActions": [
]
},
"ClientAppTypes": [
"all"
],
"ClientApplications": {
"ExcludeServicePrincipals": null,
"IncludeServicePrincipals": null
},
"Devices": {
"DeviceFilter": {
"Mode": "exclude",
"Rule": "device.mdmAppId -eq \"0000000a-0000-0000-c000-000
000000000\""
}
},
"Locations": {
"ExcludeLocations": null,
"IncludeLocations": null
},
"Platforms": {
"ExcludePlatforms": [
],
"IncludePlatforms": [
"android",
"iOS"
]
},
"ServicePrincipalRiskLevels": [
],
"SignInRiskLevels": [
],
"UserRiskLevels": [
],
"Users": {
"ExcludeGroups": [
"除外するグループID"
],
"ExcludeRoles": [
],
"ExcludeUsers": [
],
"IncludeGroups": [
"対象グループID"
],
"IncludeRoles": [
],
"IncludeUsers": [
]
}
},
"Description": null,
"DisplayName": "T MAM for unenrolled devices for MFA and APP",
"GrantControls": {
"BuiltInControls": [
"mfa",
"compliantApplication"
],
"CustomAuthenticationFactors": [
],
"Operator": "AND",
"TermsOfUse": [
]
},
"SessionControls": {
"ApplicationEnforcedRestrictions": {
"IsEnabled": null
},
"CloudAppSecurity": {
"CloudAppSecurityType": null,
"IsEnabled": null
},
"DisableResilienceDefaults": null,
"PersistentBrowser": {
"IsEnabled": null,
"Mode": null
},
"SignInFrequency": {
"AuthenticationType": null,
"FrequencyInterval": null,
"IsEnabled": null,
"Type": null,
"Value": null
}
},
"State": "disabled"
}
マネージドデバイス用
{
"Conditions": {
"Applications": {
"ExcludeApplications": [
],
"IncludeApplications": [
"Office365"
],
"IncludeAuthenticationContextClassReferences": [
],
"IncludeUserActions": [
]
},
"ClientAppTypes": [
"all"
],
"ClientApplications": {
"ExcludeServicePrincipals": null,
"IncludeServicePrincipals": null
},
"Devices": {
"DeviceFilter": {
"Mode": "include",
"Rule": "device.mdmAppId -eq \"0000000a-0000-0000-c000-000
000000000\""
}
},
"Locations": {
"ExcludeLocations": null,
"IncludeLocations": null
},
"Platforms": {
"ExcludePlatforms": [
],
"IncludePlatforms": [
"android",
"iOS"
]
},
"ServicePrincipalRiskLevels": [
],
"SignInRiskLevels": [
],
"UserRiskLevels": [
],
"Users": {
"ExcludeGroups": [
"除外するグループID"
],
"ExcludeRoles": [
],
"ExcludeUsers": [
],
"IncludeGroups": [
"対象グループID"
],
"IncludeRoles": [
],
"IncludeUsers": [
]
}
},
"Description": null,
"DisplayName": "T MAM for Managed Device for Compliant",
"GrantControls": {
"BuiltInControls": [
"compliantDevice"
],
"CustomAuthenticationFactors": [
],
"Operator": "OR",
"TermsOfUse": [
]
},
"SessionControls": {
"ApplicationEnforcedRestrictions": {
"IsEnabled": null
},
"CloudAppSecurity": {
"CloudAppSecurityType": null,
"IsEnabled": null
},
"DisableResilienceDefaults": null,
"PersistentBrowser": {
"IsEnabled": null,
"Mode": null
},
"SignInFrequency": {
"AuthenticationType": null,
"FrequencyInterval": null,
"IsEnabled": null,
"Type": null,
"Value": null
}
},
"State": "disabled"
}
Discussion