SaaS

Okta Identity EngineとEDRを連携してアクセス制御してみた

こんにちは! たつみんです。
Okta Identity Engine(以下OIE)の検証の連載記事としては最後で、EDRとの連携について書かせていただきました。

今回はCrowdStrikeとmacOSのパターンを中心に検証内容をご案内いたします。

注意

2021年11月18日現在、OIEは新規発行されるテナントに限り適用されます。これまでのOkta Classic EngineからOIEへ移行する時期や方法については別途Okta社からのアナウンスをお待ちください。

参照ドキュメント

検証にあたり参照したドキュメントは以下の通りです。

  • 前提条件
  • エンドポイントセキュリティ統合の追加
  • macOS用EDR統合プラグインについて
  • Windows用EDR統合プラグインについて
  • 利用できるEDRシグナルについて

前提条件

  • WindowsはOkta Verifyでアカウントと紐づいていること(Not managedでも問題ない)
  • macOSは事前にDevice Trustの状態であること(Managedである必要がある)
  • EDRがOktaに対して有効であること
  • Okta Verifyのバージョン
    • Windowsは1.3.100.3以上
    • macOSは1.9.0以上
  • デバイスのOSバージョン
    • Windowsは1709 32bitと64bit
    • macOSは10.15 Catalina以降
  • 対応しているEDR
    • CrowdStrike Falcon Agent 6.14以上(macOS/Windows共通)
      • Zero Trust Assessment(ZTA)が有効状態であること
    • Windows Security Center(Windowsのみ)

連携の流れ

  1. ユーザーがOkta上のリソースにアクセスする。
  2. Oktaが端末上のOkta Verifyを利用し、シグナルをチェックします。
  3. CrowdStrikeはデバイスの状態を評価し、Okta Verifyに送信します。
  4. Oktaはデバイスシグナルを利用し、アクセスを決めます。(アクセスポリシーの適用)

設定方法

CrowdStrike事前確認

CrowdStrikeがインストールされたmacOS端末で、以下のディレクトリにファイルが存在するかを確認します。

  1. /Library/Application Support/Crowdstrike/ZeroTrustAssessmentに移動します。
  2. data.ztaファイルのサイズを確認します。
  3. data.ztaファイルが0バイト以外であれば問題ありません。
  4. ファイルが存在しないか存在してもゼロバイトである場合はCrowdStrikeサポートへZero Trust Assesment(ZTA)有効化のリクエストを行う必要があります。

data.ztaファイルにEDRシグナルが書き込まれ、Okta Verify経由でアプリケーションサインオンポリシーの評価に利用されます。

エンドポイントセキュリティ統合の追加

  1. Okta管理画面のSecurity>Device IntegrationsのEndpoint SecurityからAdd endpoint integrationをクリックします。
  2. CrowdStrikeをクリックします。
  3. Select platformで対応したいプラットフォームを選択し、Addをクリックします。

Jamf Proによるマネージドアプリ設定

  1. コンピュータ>構成プロファイル>新規をクリックします。
  2. 一般タブでプロファイルの名称を入力(今回はOIE EDR integrationとしました)
  3. レベルはComputer Levelを選択します。
  4. アプリケーションとカスタム設定のアップロードを選択し、追加をクリックします。
  5. 環境設定ドメインにcom.okta.mobileを入力します。
  6. プロパティリストに以下を入力します。
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<managedAppConfiguration>

<dict>

<key>OktaVerify.Plugins</key>

<array>

<string>com.crowdstrike.zta</string>

</array>

<key>com.crowdstrike.zta</key>

<dict>

<key>description</key>

<string>description</string>

<key>format</key>

<string>JWT</string>

<key>location</key>

<string>/Library/Application Support/Crowdstrike/ZeroTrustAssessment/data.zta</string>

<key>name</key>

<string>com.crowdstrike.zta</string>

<key>type</key>

<string>file</string>

</dict>

</dict>

</managedAppConfiguration>

</plist>
  1. もう一度、追加をクリックします。
  2. 環境設定ドメインにcom.okta.mobile.auth-service-extensionを入力し、プロパティリストに6.とまったく同じ内容を入力し、保存をクリックします。
  3. 下図のように、ひとつの構成プロファイルに2つのPayloadが作成されている状態とします。

最後に、忘れずに作成した構成プロファイルを対象端末に配布します。

構成プロファイル適用確認

macOS端末で、以下のディレクトリで確認を行います。

  1. /Library/Managed Preferencesを開きます。
  2. PLISTファイルcom.okta.mobileとcom.okta.mobile.auth-service-extensionが生成されていることを確認します。
  3. /Library/Managed Preferences/<ユーザー名>を開きます。
  4. PLISTファイルcom.okta.mobileとcom.okta.mobile.auth-service-extensionが生成されていることを確認します。

Okta Authentication policiesの設定

  1. Okta管理画面のSecurity>Authentication policiesからAdd a policyをクリックします。
  2. 名前をEDRなどわかりやすいものを設定します。
  3. Add Ruleをクリックします。
  4. Device state isをRegisteredにし、Device management isをManagedにします。
  5. The follwing custom expression is trueに以下の記述し、Saveをクリックします。
    device.provider.zta.overall >= 10
  6. 最終的に以下のようなポリシーとなっているかを確認します。
  7. Applicationsタブ内のAdd appをクリックします。
  8. 作成したポリシーを割り当てるアプリケーションのAddボタンをクリックし、最後にCloseをクリックします。

作成したポリシーは上から順番に判定され、ルールに該当しない場合に次のルールに一致するかどうかを確認します。今回の例ではEDRに合致しない場合はCatch-all Ruleにてアクセスを拒否する設定としています。

動作確認

Oktaアプリケーション制御の確認

  1. Oktaにログインしている場合は一度、ログアウトしてから再度ログインをします。
  2. 対象アプリケーションにアクセス可能かを確認します。
  3. アプリケーションアサインポリシーの条件式を変更し、あえて一致しないパターンの場合も検証します。
  4. それぞれが意図したとおりの挙動になるかを確認します。

なお、正常にアクセスできなかった場合は以下のような表示となります。

CrowdStrikeのEDRシグナルについて

Okta VerifyがEDRの評価値をシグナルとしてOktaへ渡すことでデバイスの状態に応じてアクセスの許可/不許可を行います。ここではどのようなシグナルが利用できるかをご紹介します。

以下の3つが利用でき、整数で表現されます。(最大値は100)

  • device.provider.zta.os
  • device.provider.zta.overall
  • device.provider.zta.sensorConfig

これら項目はCrowdStrikeのZero Trust Assesmentを確認することで、どのような評価となっているかを確認することができます。

今回の利用したmacOS端末では以下のように評価されていることがわかります。

またOktaのシステムログを確認すると、EDRシグナルが正しく受け取れていることがわかります。

Windowsについて

本記事ではmacOSとCrowdStrikeの連携を中心に構成していますが、Windowsについても簡単ではありますが触れておきます。

詳細につきましては冒頭の参照ドキュメントでもあげました以下のドキュメントをご参照ください。

CrowdStrikeとの連携方法

以下の二つの方法があります。

  • MDMなどでOkta Verifアプリを配布する際に機能を有効化する
  • PowerShell scriptを利用する

今回は以下のPower Shell scriptを実行する方法をとりました。

$content = "{`r`n`t`"name`": `"com.crowdstrike.zta`",`r`n`t`"description`": `"Okta provided integration with CrowdStrike Falcon endpoint collecting the zta score.`",`r`n`t`"type`": `"FILE`",`r`n`t`"format`": `"JWT`",`r`n`t`"location`": `"%ProgramData%\\CrowdStrike\\ZeroTrustAssessment\\data.zta`",`r`n`t`"availabilityChecks`": [`r`n`t`t{`r`n`t`t`t`"type`": `"SERVICE_RUNNING`",`r`n`t`t`t`"value`": `"csagent`"`r`n`t`t}`r`n`t]`r`n}"

$path = $env:ProgramData + "\Okta\OktaVerify\Plugins\"

$filePath = $path + "your.plugin.name.json"

if (-not (Test-Path $path))

{

New-Item $path -ItemType Directory

}

[System.IO.File]::WriteAllText($filePath, $content)

スクリプト実行後に以下のディレクトリにシグナルが書き込まれたファイルがファイル名:com.okta.ztaDefault.jsonとして生成されます。
%PROGRAMDATA%\Okta\OktaVerify\Plugins

EDRシグナルはmacOSと同じ内容が利用できます。

Windows Security Centerについて

前提条件でWindowsの場合は、Windows Security Centerにも対応と記述しましたが、最初は何を指しているのかわかりませんでした。

調べていくうちに、どうやらWindows標準で備わっている下図のWindowsセキュリティのことを指しているようでした。

Windows Security Centerとの連携方法

エンドポイントセキュリティ統合の追加としてOkta管理画面のSecurity>Device IntegrationsのEndpoint SecurityからWindows Security Centerを追加しておきます。

Windows端末でOkta Verifyアプリを利用しアカウントと紐づけるだけで、自動的に以下のフォルダにシグナルが書き込まれたファイルがファイル名:com.okta.windowsSecurityCenter.jsonとして生成されます。
%PROGRAMDATA%\Okta\OktaVerify\Plugins

Windows Security Centerで利用できるシグナルについて

シグナルの種類

  • device.provider.wsc.antiVirus
  • device.provider.wsc.fireWall
  • device.provider.wsc.autoUpdateSettings
  • device.provider.wsc.internetSettings
  • device.provider.wsc.userAccountControl
  • device.provider.wsc.securityCenterService

シグナルの評価値

以下の5種類の状態を表す値となります。

  • UNKNOWN
  • GOOD
  • NOT_MONITORED
  • POOR
  • SNOOZE

アプリケーションサインオンポリシーのThe follwing custom expression is trueで指定する時は以下のような値を指定します。
device.provider.wsc.fireWall == "GOOD"

最後に

EDRとの連携方法をmacOSとCrowdStrikeを中心に見てきました。ZTA有効化のためにサポートに連絡しないといけない部分にハマったことを除くとスムーズに検証できました。

EDRの値によってアクセスの許可/不許可をコントロールできるため、企業の端末からのアクセスからであっても状態の悪い端末からはアクセスさせないといった、より高度なポリシーを作成できるようになりました。

また、CrowdStrikeであればWindowsにおいても、macOSの場合と同じ評価基準で数値化されるため、アプリケーションアサインポリシーも共通化することができます。

一方でWindows Security Centerとの連携についてはファイアウォールの状態がGoodかどうかといったような基準になりますが、これは果たしてEDRなのだろうか?と疑問に思っています。

今後は他のEDR製品に対応していくのだと思うので期待したいですね。

というわけでOkta Identity Engineの検証ブログ記事も一旦は終わりとなります。
今後も新しい発見や機能が追加された時にはブログ記事にしたいと思います。

また別の記事でお会いしましょ〜✌️

たつみん

事業会社の情シスからクラウドネイティブにJoin!
好きなものはF1海外観戦とベルギービール!
集中力の質は深く長く遅い典型的なシングルタスクタイプです。