PowerShellでIntuneデバイスポリシーを一括設定しリモートワークのセキュリティを強化する方法

リモートワークが急速に普及した現代、企業は従業員が利用するデバイスのセキュリティを確保するため、さまざまな課題に直面しています。特に、個人所有のデバイスを業務で利用するBYOD(Bring Your Own Device)の普及により、デバイス管理の重要性はかつてないほど高まっています。

Microsoft Intuneは、クラウドベースのデバイス管理ソリューションとして、この課題を解決する効果的なツールです。しかし、デバイスが増加する中で、手動でポリシーを設定することは非効率であり、エラーの原因にもなり得ます。そこで、PowerShellを利用することで、Intuneのデバイスポリシーを効率的に一括設定し、リモートワーク環境のセキュリティを強化する方法が注目されています。

本記事では、PowerShellを活用したMicrosoft Intuneのデバイスポリシー設定の方法を詳細に解説します。このプロセスを理解することで、時間を大幅に節約できるだけでなく、セキュリティリスクを軽減し、管理作業の効率化を図ることができます。

目次

Intuneの基本概念とPowerShellの役割

Microsoft Intuneとは何か

Microsoft Intuneは、クラウドベースのデバイスおよびアプリケーション管理サービスです。主に以下のような機能を提供します:

  • デバイスの登録と管理(Windows、macOS、iOS、Androidなど)
  • ポリシー設定によるデバイスのセキュリティ確保
  • アプリケーションの配布と管理
  • 条件付きアクセス制御

これにより、企業は従業員が利用するデバイスを一元的に管理し、セキュリティを強化することができます。

PowerShellを使う利点

PowerShellは、Microsoft Intuneの管理を効率化するために不可欠なツールです。PowerShellを使用することで、以下の利点を得ることができます:

  • 大量のデバイスやポリシーを一括で操作可能:GUIでは手間がかかる操作を自動化できます。
  • カスタマイズ性の向上:組織特有の要件に応じたスクリプトを作成できます。
  • 反復作業の削減:定期的な作業をスクリプト化することで時間を節約できます。
  • 高度なエラー管理:PowerShellを使えば、エラーの検出やログの記録が容易になります。

PowerShellでできること

PowerShellを使用してIntuneで以下の操作を実現できます:

  • デバイスポリシーの作成、編集、削除
  • 登録デバイスの一覧取得やフィルタリング
  • アプリケーションの管理(配布や削除)
  • 条件付きアクセスルールの設定

PowerShellは、Intuneの機能を最大限に活用し、管理者の業務負担を大幅に軽減する強力なツールです。次のセクションでは、PowerShellでIntuneに接続するための準備手順を解説します。

PowerShellでIntuneに接続する準備

環境構築

PowerShellを使ってMicrosoft Intuneに接続するには、事前に環境を整備する必要があります。以下のステップに従って準備を進めましょう。

1. 必要な権限の確認

PowerShellでIntuneにアクセスするには、以下の権限が必要です:

  • Azure Active Directory(AAD)のグローバル管理者またはIntune管理者権限
  • アカウントが多要素認証(MFA)を有効化していることが推奨されます。

2. 必要なソフトウェアのインストール

Intune管理を行うには、以下のモジュールをインストールする必要があります。

  1. PowerShell 7.x以降(推奨):
    最新バージョンを公式サイトからダウンロードしてインストールしてください。
  2. Microsoft Graph PowerShell SDK:
    IntuneはMicrosoft Graph APIを使用して管理されるため、このSDKを利用します。以下のコマンドでインストールできます。
   Install-Module -Name Microsoft.Graph -Scope CurrentUser

PowerShellでのIntune接続手順

1. Microsoft Graphにサインイン

以下のコマンドを実行し、Microsoft Graphにサインインします。プロンプトが表示されるので、管理者アカウントで認証してください。

Connect-MgGraph

2. 使用するスコープを確認

接続後、次のコマンドで現在のスコープ(権限レベル)を確認します:

Get-MgContext

3. 接続確認

接続が成功したら、Intuneのデバイス一覧を取得するなど、動作確認を行います。

Get-MgDeviceManagementManagedDevice

トラブルシューティング

  • エラーが発生した場合:
  • Microsoft Graphモジュールが正しくインストールされているか確認してください。
  • ネットワークやプロキシ設定が正しいか確認してください。
  • 認証に失敗する場合:
  • 管理者権限が付与されていることを確認してください。
  • Azureポータルでアカウントの状態を確認してください。

次のセクションでは、Intuneで設定可能なデバイスポリシーの概要と具体的な設定項目について解説します。

デバイスポリシーの概要と設定項目

デバイスポリシーとは

デバイスポリシーは、企業が従業員のデバイスを安全かつ効率的に管理するために設定するルールの集合です。Microsoft Intuneでは、デバイスポリシーを通じてセキュリティ対策、アプリケーション管理、デバイス設定の制御を行います。

デバイスポリシーの種類

Intuneで設定できるデバイスポリシーには以下のような種類があります:

1. セキュリティポリシー

  • パスコード要件:デバイスのロック解除に必要なパスコードの長さや複雑さを設定。
  • 暗号化の有効化:デバイスやストレージの暗号化を必須に設定。
  • 条件付きアクセス:リソースにアクセスするデバイスがセキュリティ基準を満たしていることを確認。

2. 設定ポリシー

  • Wi-Fiプロファイル:企業用ネットワークへの自動接続設定を配布。
  • VPN構成:業務用アプリが安全に通信できるようVPN設定を配布。
  • メール設定:従業員のデバイスに企業メールを自動的に設定。

3. アプリケーション管理ポリシー

  • アプリのインストール制御:業務に不要なアプリのインストールを禁止。
  • モバイルアプリ管理(MAM):アプリ単位でのデータ保護やアクセス制御を実施。

4. コンプライアンスポリシー

  • デバイスが準拠する必要のある条件:OSのバージョン、デバイスの健全性、セキュリティソフトの状態など。

設定項目の概要

各ポリシーでは、以下のような具体的な設定項目を調整します:

  • 適用対象のデバイス:Windows、iOS、Android、macOSなど
  • 適用対象のユーザーグループ:特定の部門や役職に基づいてポリシーを適用
  • デバイスの条件:デバイスの種類や状態に基づく適用条件
  • 有効期限やポリシー更新間隔:ポリシーの適用タイミングや更新頻度を設定

ポリシー設定のポイント

  • 必要最小限のルールを設定し、デバイスのパフォーマンスを確保します。
  • テスト環境で設定を検証し、本番適用時のリスクを軽減します。
  • ポリシー変更時は従業員に通知を行い、適用後の混乱を防ぎます。

次のセクションでは、PowerShellを使用したデバイスポリシーの一括設定方法を詳しく解説します。

PowerShellを用いたデバイスポリシーの一括設定方法

デバイスポリシーのスクリプト構成

PowerShellを利用してMicrosoft Intuneのデバイスポリシーを一括設定する際には、以下のプロセスを順番に実行します:

  1. 必要なモジュールのインポート
  2. 認証と接続
  3. ポリシーの定義
  4. ポリシーの適用

以下では、それぞれのステップを具体的なスクリプト例を用いて解説します。

1. 必要なモジュールのインポート

Intuneのポリシー設定を行うために、Microsoft Graph PowerShellモジュールをインポートします。

Import-Module Microsoft.Graph

もしインストールがまだの場合は以下を実行します:

Install-Module -Name Microsoft.Graph -Scope CurrentUser

2. 認証と接続

Microsoft Intune環境に接続するために、管理者アカウントでサインインします。

Connect-MgGraph

接続が成功したかを確認するには以下を実行します:

Get-MgContext

3. ポリシーの定義

デバイスポリシーを定義する際に必要な設定内容をJSON形式で作成します。以下は、例としてセキュリティポリシーを定義するスクリプトです:

$policyName = "SecureDevicePolicy"
$policyJson = @{
    "@odata.type" = "#microsoft.graph.deviceCompliancePolicy"
    "displayName" = $policyName
    "passwordRequired" = $true
    "passwordMinimumLength" = 8
    "passwordRequiredType" = "alphanumeric"
    "deviceThreatProtectionEnabled" = $true
    "deviceThreatProtectionRequiredSecurityLevel" = "secured"
} | ConvertTo-Json -Depth 10

4. ポリシーの適用

作成したポリシーをIntuneに適用します。以下のスクリプトを使用してポリシーを作成します。

New-MgDeviceManagementDeviceCompliancePolicy -BodyParameter $policyJson

5. 適用結果の確認

ポリシーが正しく作成されているかを確認するために、現在のポリシー一覧を取得します:

Get-MgDeviceManagementDeviceCompliancePolicy | Select-Object DisplayName, Id

一括設定の応用例

複数のポリシーを一括で設定する場合、以下のようにループを利用します:

$policies = @(
    @{Name="Policy1"; PasswordLength=6; ThreatProtection="secured"},
    @{Name="Policy2"; PasswordLength=8; ThreatProtection="high"}
)

foreach ($policy in $policies) {
    $policyJson = @{
        "@odata.type" = "#microsoft.graph.deviceCompliancePolicy"
        "displayName" = $policy.Name
        "passwordMinimumLength" = $policy.PasswordLength
        "deviceThreatProtectionRequiredSecurityLevel" = $policy.ThreatProtection
    } | ConvertTo-Json -Depth 10

    New-MgDeviceManagementDeviceCompliancePolicy -BodyParameter $policyJson
}

注意点

  • スクリプトを本番環境で実行する前に、必ずテスト環境で検証を行ってください。
  • JSON形式の定義は正確に記述し、エラーを防ぐようにします。
  • PowerShellの実行権限が十分であることを確認してください。

次のセクションでは、セキュリティを強化するための推奨設定について具体例を挙げながら解説します。

セキュリティ強化のための推奨設定

リモートワーク環境に適したポリシー設定

リモートワーク環境では、セキュリティリスクを最小化するために特に重要なポリシーがあります。以下では推奨設定を具体的に解説します。

1. パスワードポリシー

パスワードの強化は、基本的なセキュリティ対策の一つです。以下の設定を推奨します:

  • パスワードの最小文字数: 8文字以上
  • 複雑なパスワードの強制: アルファベット(大文字・小文字)、数字、特殊文字を含む
  • パスワードの有効期限: 30~90日

PowerShellでの設定例:

$policyName = "PasswordPolicy"
$policyJson = @{
    "displayName" = $policyName
    "passwordRequired" = $true
    "passwordMinimumLength" = 8
    "passwordRequiredType" = "alphanumeric"
    "passwordExpirationDays" = 30
} | ConvertTo-Json -Depth 10

New-MgDeviceManagementDeviceCompliancePolicy -BodyParameter $policyJson

2. デバイス暗号化

業務データが保存されるデバイスは暗号化を必須とします。BitLockerを活用したWindowsデバイスの暗号化を推奨します。

  • 暗号化の有効化: デバイスに保存されるデータを保護
  • リカバリーキーの保存: Azure Active Directory(AAD)に自動保存

PowerShellでBitLockerポリシーを設定する例:

$policyName = "EncryptionPolicy"
$policyJson = @{
    "displayName" = $policyName
    "requireEncryption" = $true
} | ConvertTo-Json -Depth 10

New-MgDeviceManagementDeviceCompliancePolicy -BodyParameter $policyJson

3. 条件付きアクセス

リモートワークでは、信頼できるデバイスとネットワークからのみ企業リソースにアクセスを許可することが重要です。

  • 要件: コンプライアンス準拠デバイスからのアクセスを必須とする
  • MFA(多要素認証): アカウント認証に多要素認証を設定

条件付きアクセスルールのPowerShell例:

$policyName = "ConditionalAccessPolicy"
$policyJson = @{
    "displayName" = $policyName
    "conditions" = @{
        "deviceStates" = @{
            "includeCompliantDevicesOnly" = $true
        }
    }
    "grantControls" = @{
        "builtInControls" = @("mfa")
    }
} | ConvertTo-Json -Depth 10

New-MgDeviceManagementConditionalAccessPolicy -BodyParameter $policyJson

4. 自動更新の強制

デバイスのOSやアプリケーションを常に最新の状態に保つことは、脆弱性を防ぐために不可欠です。

  • OSの自動更新: 毎日確認
  • 更新のインストールを必須化

リモートワークでの応用例

  • 部門ごとの異なるポリシー設定:経理部門には厳しいデータ保護ポリシーを適用、一方でクリエイティブ部門には柔軟な設定を許可する。
  • 地理的制限:特定の国または地域からのアクセスを制限。

まとめ

リモートワーク環境では、パスワードの強化、デバイス暗号化、条件付きアクセス、自動更新の強制といったポリシーが特に重要です。これらの推奨設定を適用することで、従業員の生産性を損なうことなく、セキュリティを大幅に向上させることができます。

次のセクションでは、PowerShellを使用したトラブルシューティングと一般的なエラー対策を解説します。

トラブルシューティングと一般的なエラー対策

よくあるエラーとその原因

PowerShellを使用してIntuneのデバイスポリシーを管理する際、以下のようなエラーが発生することがあります。

1. 接続に関するエラー

エラー例:

Connect-MgGraph : The term 'Connect-MgGraph' is not recognized...

原因:

  • Microsoft Graphモジュールがインストールされていない
  • モジュールのバージョンが古い
    対策:
Install-Module -Name Microsoft.Graph -Scope CurrentUser -Force

2. 認証失敗

エラー例:

Access denied. You do not have permission to perform this action.

原因:

  • アカウントに必要な権限がない
  • 多要素認証(MFA)が設定されていない
    対策:
  • Azureポータルで管理者権限を確認し、必要なロールを割り当てる
  • 多要素認証を有効化する

3. JSONフォーマットエラー

エラー例:

Invalid JSON format in request body.

原因:

  • JSON形式が正しくない
  • 特殊文字や余分なカンマが含まれている
    対策:
  • JSONファイルをConvertTo-Jsonコマンドで生成してフォーマットを確認
  • オンラインツール(例:JSONLint)で構文エラーをチェック

エラーの詳細確認

PowerShellではエラー詳細を表示するために、以下のコマンドを活用します:

$error[0] | Format-List * -Force

これにより、エラーコードや詳細なエラー情報が表示され、原因の特定が容易になります。

デバッグモードの活用

スクリプトの問題を特定する際に役立つデバッグモードの活用方法:

  • -WhatIfパラメーター:コマンドの実行結果をシミュレート
Remove-MgDeviceManagementDeviceCompliancePolicy -PolicyId "example-id" -WhatIf
  • Set-PSDebug -Trace 1:スクリプトの実行過程をトレース
Set-PSDebug -Trace 1

一般的なトラブルシューティングの手順

  1. コマンドレットの構文確認:
  • Get-Helpコマンドを使って正確な構文を確認
   Get-Help New-MgDeviceManagementDeviceCompliancePolicy -Detailed
  1. モジュールの更新:
  • 使用しているモジュールを最新バージョンに更新
   Update-Module -Name Microsoft.Graph
  1. ネットワーク接続確認:
  • ファイアウォールやプロキシが接続を妨げていないか確認

エラー対策のベストプラクティス

  • ログ記録の実施:エラーを記録するスクリプトを用意
   Start-Transcript -Path "C:\Logs\IntuneScriptLog.txt"
  • スクリプトの分割とテスト:複雑なスクリプトは小さな単位でテスト
  • 定期的なモジュールメンテナンス:定期的にモジュールを更新し、互換性を維持

まとめ

PowerShellを使用したIntune管理では、接続や認証、スクリプトの構文に関連したエラーが発生することがあります。これらのトラブルを迅速に解決するためには、エラー詳細の確認やデバッグツールの活用、スクリプトの構文チェックが重要です。次のセクションでは、運用自動化の実現方法について解説します。

運用自動化の実現方法

運用自動化の必要性

Microsoft Intuneを利用したデバイスポリシー管理では、繰り返し発生する作業を自動化することで効率性と正確性を大幅に向上できます。PowerShellと他のツールを組み合わせることで、自動化されたポリシー適用、更新、モニタリングを実現できます。

自動化に活用するツールと手法

1. スケジュールタスクを活用

Windowsのスケジュールタスクを使って、定期的にPowerShellスクリプトを実行します。

ステップ:

  1. スクリプトの準備:
    以下は、デバイスポリシーを定期的に適用するスクリプト例です。
   $policyName = "WeeklySecurityPolicy"
   $policyJson = @{
       "displayName" = $policyName
       "passwordRequired" = $true
       "passwordMinimumLength" = 8
   } | ConvertTo-Json -Depth 10

   New-MgDeviceManagementDeviceCompliancePolicy -BodyParameter $policyJson
  1. スケジュールタスクの設定:
    PowerShellでスケジュールタスクを作成します。
   $action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-File C:\Scripts\ApplyPolicy.ps1"
   $trigger = New-ScheduledTaskTrigger -Daily -At 2AM
   Register-ScheduledTask -TaskName "ApplyIntunePolicy" -Action $action -Trigger $trigger

2. Power Automateの活用

Power Automateを使うと、GUIベースでの簡単な自動化を実現できます。たとえば、新しいデバイスがIntuneに登録された際に特定のポリシーを自動適用するフローを作成できます。

例:

  • トリガー:デバイス登録時に通知を受け取る
  • アクション:PowerShellスクリプトを実行するAPIを呼び出す

3. Azure Automation

Azure Automationを利用して、PowerShellスクリプトをクラウドで管理し、自動実行できます。

設定手順:

  1. Runbookの作成:
    AzureポータルでRunbookを作成し、スクリプトを登録します。
  2. スケジュールの設定:
    スクリプト実行スケジュールをAzure Automationで管理します。
  3. 例:
    以下のスクリプトをAzure Automationに登録し、定期実行します。
   Connect-MgGraph
   $policyName = "DailySecurityPolicy"
   $policyJson = @{
       "displayName" = $policyName
       "deviceThreatProtectionRequiredSecurityLevel" = "secured"
   } | ConvertTo-Json -Depth 10

   New-MgDeviceManagementDeviceCompliancePolicy -BodyParameter $policyJson

自動化の利点

  • 時間の節約:繰り返し作業が不要になり、管理者の負担を軽減
  • エラーの削減:手動操作による設定ミスを防止
  • 一貫性の確保:すべてのデバイスに同じポリシーを適用

注意点とベストプラクティス

  • スクリプト実行環境を事前にテストし、本番環境に適用する前に検証する
  • 自動化のログを保存し、問題発生時に迅速に対応できるようにする
  • 定期的にスクリプトやツールの更新を確認し、最新の機能やセキュリティパッチを適用

まとめ

運用自動化は、Microsoft Intuneの管理を効率化し、セキュリティや運用コストの最適化に大きく貢献します。スケジュールタスク、Power Automate、Azure Automationといったツールを活用することで、管理作業をほぼ自動化できるため、管理者の負担を軽減しつつ、より高いレベルのセキュリティを確保することが可能です。

次のセクションでは、特定部門向けポリシー設定とカスタマイズの応用例を解説します。

応用例:特定部門向けポリシー設定とカスタマイズ

部門別ポリシーの必要性

企業では、部門ごとに異なる業務ニーズやセキュリティ要件が存在します。例えば、経理部門ではデータ保護を強化する必要がある一方、営業部門では柔軟なモバイルアクセスが求められます。Microsoft Intuneでは、グループごとにカスタマイズされたポリシーを適用することで、これらの要件を効率的に管理できます。

カスタマイズされたポリシー設定の手法

1. Azure ADグループの活用

特定部門向けのポリシーを適用するには、Azure Active Directory(AAD)のグループを利用します。

  • 部門別グループ作成:
    Azureポータルで部門ごとにユーザーまたはデバイスをグループ化します。
   New-AzureADGroup -DisplayName "FinanceDepartment" -MailEnabled $false -SecurityEnabled $true -MailNickname "FinanceDept"

2. 部門ごとのポリシー設定

ポリシーを作成し、特定のグループに適用します。

  • 経理部門向けポリシー(例:データ保護強化):
   $policyName = "FinanceDataProtection"
   $policyJson = @{
       "displayName" = $policyName
       "passwordRequired" = $true
       "passwordMinimumLength" = 10
       "deviceThreatProtectionRequiredSecurityLevel" = "high"
   } | ConvertTo-Json -Depth 10

   $groupId = "FinanceGroupId" # AzureポータルでグループIDを取得
   New-MgDeviceManagementDeviceCompliancePolicy -BodyParameter $policyJson -TargetGroupId $groupId
  • 営業部門向けポリシー(例:モバイルアクセス強化):
   $policyName = "SalesMobileAccess"
   $policyJson = @{
       "displayName" = $policyName
       "passwordRequired" = $true
       "passwordMinimumLength" = 6
       "deviceThreatProtectionRequiredSecurityLevel" = "secured"
       "conditionalAccessEnabled" = $true
   } | ConvertTo-Json -Depth 10

   $groupId = "SalesGroupId" # AzureポータルでグループIDを取得
   New-MgDeviceManagementDeviceCompliancePolicy -BodyParameter $policyJson -TargetGroupId $groupId

3. アプリケーションポリシーのカスタマイズ

特定のアプリケーションを部門別に配布することも可能です。

  • 経理部門への業務用アプリ配布:
   Add-MgDeviceAppManagementMobileAppAssignment -MobileAppId "FinanceAppId" -TargetGroupId $groupId

応用例の具体的なケース

1. セキュリティに厳格な経理部門

  • デバイス暗号化の必須化(BitLocker)
  • 高強度パスワードの要求
  • アクセス元IPアドレスの制限(社内ネットワークのみ許可)

2. フレキシブルな営業部門

  • 条件付きアクセスの活用(安全なデバイスからのアクセスを許可)
  • モバイルデバイスでの柔軟な業務アプリ利用
  • 簡易なパスコードポリシー(利便性を優先)

部門別ポリシー設定のベストプラクティス

  1. ポリシーのテスト:
    本番環境に適用する前に、テストグループでポリシーを検証します。
  2. 従業員への通知:
    ポリシー適用前に通知を行い、変更点を周知します。
  3. ポリシーの定期レビュー:
    部門の業務ニーズやセキュリティ要件に応じてポリシーを更新します。

まとめ

特定部門向けのポリシー設定とカスタマイズにより、業務ニーズを満たしながら、セキュリティを確保することが可能です。Azure ADグループとPowerShellスクリプトを組み合わせることで、ポリシーの適用が効率化され、組織全体の生産性向上につながります。

次のセクションでは、本記事の内容を簡潔にまとめます。

まとめ

本記事では、Microsoft Intuneを利用したデバイスポリシーの一括設定とリモートワーク環境のセキュリティ強化について、PowerShellを活用した具体的な方法を解説しました。

主なポイントは以下の通りです:

  • IntuneとPowerShellの基礎:効率的なデバイス管理のための基本的な仕組みを理解。
  • ポリシーの一括設定:スクリプトを活用し、手動操作の非効率性を解消。
  • 推奨設定:リモートワーク環境に適したセキュリティ強化の設定例。
  • トラブルシューティング:エラー解決やデバッグ手法の紹介。
  • 運用自動化とカスタマイズ:特定部門やニーズに応じた柔軟なポリシー適用。

PowerShellを使うことで、Intune管理の効率性と正確性が向上し、セキュリティリスクを最小限に抑えつつ業務環境を最適化できます。今回の内容を参考に、ぜひ自社のデバイス管理に役立ててください。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次