アプリケーション管理の重要なシナリオの 1 つは、承認を必要とするソフトウェアに対して、制御されたインストールとアンインストール プロセスを提供することです。 Configuration Manager インフラストラクチャの全体的な負荷を軽減し、パフォーマンスを向上させるために、ワークフローでは、各アプリケーションのインストールとアンインストールを管理する個々のコレクションを作成する必要はありません。
シナリオ 1: アプリケーションをインストールする前に承認する必要がある
Contoso の IT 管理者は、ソフトウェア センターを使用して、ユーザーがソフトウェアを使用できるようにします。 これらのアプリケーションは、インストールする前に承認する必要があります。 管理者は、アプリケーションをすべてのユーザーにデプロイし、承認を必要とするように構成します。
ユーザーはソフトウェア センターのアプリケーションの一覧を参照しますが、要求が承認されるまでアプリケーションをインストールできません。 ユーザーはソフトウェア センターから要求を送信し、要求の理由を指定します。 [ デバイスごとのユーザーに対するアプリケーション要求の承認] オプションが有効になっている場合、ユーザーはアプリケーションをインストールするすべてのデバイスから承認を要求する必要があります。 その後、管理者は、要求が行われたユーザーのデバイスごとに要求を承認または拒否します。
注:
Configuration Managerでは、この機能は既定では有効になりません。 使用する前に、オプションの機能 [ デバイスごとのユーザーのアプリケーション要求を承認する] を有効にします。 詳細については、「更新プログラムのオプション機能の有効化」を参照してください。
ソフトウェア センターでは、ユーザーがデバイスからアプリケーションの要求を送信する必要があります。 ユーザーはソフトウェア センターで次のメッセージを表示します。
ユーザーは、アプリケーションが必要な理由を指定し、承認要求を送信します。
管理者が要求を承認すると、ユーザーはデバイスにアプリケーションをインストールできます。 ユーザーが何もアクションを実行しない場合、業務時間外にユーザーに対してアプリケーションが自動的にインストールされます。
シナリオ 2: アプリケーション承認システムを統合する
Northwind Traders には既存のアプリケーション承認システムがあり、管理者は承認システムをConfiguration Managerと統合したいと考えています。
管理者は、アプリケーションをすべてのユーザーにデプロイし、承認を必要とするように構成します。 次に、管理者は[ソフトウェア センター クライアント] 設定を [ ソフトウェア センターで承認されていないアプリケーションを非表示にする] を有効にします。
このオプションを使用すると、アプリケーション要求がデバイスへのインストールが承認されるまで、ユーザーはソフトウェア センターにアプリケーションを表示しません。 organizationの承認システムを介して承認が付与されると、オーケストレーション システムは、Configuration Managerでユーザーとそのデバイスに対して承認された要求を行うことができます。 オーケストレーション システムでは、Configuration ManagerでCreateApprovedRequest WMI メソッドが使用されています。 次に、このメソッドは、既存のConfiguration Manager アプリケーションデプロイ メカニズムを使用します。 コレクション メンバーシップは変更されません。すぐに有効になります。 ソフトウェア センターでアプリケーションをユーザーが使用できるようになりました。
管理者は、ユーザーのデバイスにアプリケーションを自動的にインストールするように自動化を構成することもできます。 承認が付与されるまで、ソフトウェア センターで使用可能なアプリケーションは他のユーザーには表示されません。 このソリューションは、個別のコレクションを作成する必要なく、ソフトウェアのユーザーごととデバイスごとの制御を提供します。
SMS_UserApplicationRequest クラスの WMI メソッドCreateApprovedRequestには、次の入力パラメーターがあります。
必須パラメーター
-
ClientGUID- クライアントの一意識別子 -
Username- ユーザーの一意のユーザー名 -
ApplicationID- アプリケーションのモデル名
ApplicationID は、SMS_Application インスタンスの ModelName プロパティです。 この値は、バージョンのないアプリケーションの一意の ID です。 たとえば、「 ScopeId_21A9ED3B-D8C6-49DC-87A6-01F296182F14/Application_40243740-01f2-48db-abf0-c95259986d94 」のように入力します。
オプションのパラメーター
Comments- ソフトウェア センターに表示される承認済み要求のコメント。 既定では、空の文字列を指定します。AutoInstall- 要求が承認された直後にアプリケーションをインストールします。 既定では、このパラメーターは true です。注:
バージョン 2006 以前では、このメソッドを呼び出すことができるのは、特定のアプリに対して 1 回だけです。 バージョン 2010 以降では、このメソッドを複数回呼び出すことができます。 AutoInstall パラメーターが
$trueされている場合、クライアントはアプリのインストールを再試行します。
次のコード サンプルは、特定のユーザー、コンピューター、アプリケーションに対して WMI メソッドを呼び出す方法を示すWindows PowerShell スクリプトです。
$machinename = $args[0]
$username = $args[1]
$appid = $args[2]
$autoInstall = $args[3]
$comments = $args[4]
$scObj=Get-WmiObject -Namespace root\sms -Query 'select SiteCode from sms_providerlocation'
$sitecode = $scObj.SiteCode
$namespace ="root\sms\site_" + $sitecode
$machine = Get-WmiObject -Namespace $namespace -Query "SELECT * FROM SMS_R_SYSTEM WHERE Name = '$machinename'"
$clientGuid = $machine.SMSUniqueIdentifier
Invoke-WmiMethod -Path "SMS_UserApplicationRequest" -Namespace $namespace -Name CreateApprovedRequest -ArgumentList @($appid, $autoInstall, $clientGuid, $comments, $username)
次のコマンド ラインでは、サンプル スクリプトが実行されます。
.\CreateApprovedRequest.ps1 "MachineName" "Domain\User" "ScopeId_2E4DAE44-C9A0-4694-8B7A-474424C080D4/Application_88808a3a-86e4-4820-be59-aa7d61cb8c33 "true" "Application has been approved"
管理者は、ソフトウェア ライブラリ>Application Management>Approval Requests から、Configuration Manager コンソールに承認済みの要求を引き続き表示できます。
制限事項
このアプリケーション承認 WMI メソッドの現在のバージョンには、次の制限があります。
-
CreateApprovedRequestメソッドは、一意のマシン ID、アプリケーション ID、およびユーザー名の組み合わせに対して 1 回だけ呼び出すことができます。 メソッドが同じパラメーターで複数回呼び出されると、エラーが返されます。 このエラーの詳細は、SMSProv.logにあります。 - アプリケーションの自動インストールを有効にするには、WMI メソッドを呼び出す前に、ユーザーまたはユーザー グループのコレクションにアプリケーションをデプロイします。 WMI メソッドを呼び出した後にデプロイを作成した場合、アプリケーションはインストールのためにユーザーが使用できるようになり、自動的にはインストールされません。
シナリオ 3: アプリケーションの承認を取り消す
管理者が承認を取り消すか、アプリケーションが使用されなくなった場合は、アプリケーションをアンインストールします。
管理者は、Configuration Manager コンソール、PowerShell スクリプト、または WMI を使用して、アプリケーションの承認を取り消します。 アプリケーションが既に承認されている場合でも、管理者は [拒否] オプションを使用できます。 承認を取り消した場合、ユーザーはデバイスにアプリケーションをインストールできなくなります。 同じアクションにより、アプリケーションが以前にインストールされている場合、ユーザーのデバイスでアプリケーションがアンインストールされます。
Deny-CMApprovalRequest コマンドレットの詳細については、こちらをご覧ください。
アプリの承認を取り消すための前提条件
- [ これらの新しい設定を選択して会社情報クライアント] 設定を[はい] に設定します。
- [デバイスごとにユーザーのアプリケーション要求を承認する] のオプション機能を有効にする。 詳細については、「更新プログラムのオプション機能の有効化」を参照してください。
シナリオ 4: マシンベースの事前承認された要求
CreateApprovedRequest API を使用して、ユーザーが不要なデバイスに対して事前に承認された要求を作成できます。 このアクションを使用すると、リアルタイムでアプリケーションをインストールおよびアンインストールできます。 現在、この機能は SDK でのみ使用できます。 マシンベースの事前承認要求を機能させるには、オプションの機能 [ デバイスごとのユーザーに対するアプリケーション要求の承認] も有効にする必要があります。 詳細については、「更新プログラムのオプション機能の有効化」を参照してください。
管理者は、 New-CMApplicationDeployment コマンドレットを使用して、承認を必要とするコンピューターで利用可能なデプロイを作成できます。 次に例を示します:
New-CMApplicationDeployment -CollectionName "All Systems" -Name "Test app" -DeployAction Install -DeployPurpose Available -ApprovalRequired $true -DistributionPointName 'DistributionPoint.domain.com" -DistributeContent
requires approval フラグを true に設定して作成されたデプロイは、サーバー上にとどまり、大規模なコレクションで使用できます。 ユーザー要求フローは、承認を必要とするマシンターゲットのデプロイではまだ使用できません。 そのため、個々のデバイスに対して事前に承認された要求を作成するまで、アプリケーションはソフトウェア センターに表示されません。
次のWindows PowerShellサンプル スクリプトは、マシンとアプリケーションの WMI メソッドを呼び出して、事前に承認された要求を作成する方法を示しています。
$machinename = $args[0]
$appid = $args[1]
$autoInstall = $args[2]
$comments = $args[3]
$scObj=Get-WmiObject -Namespace root\sms -Query 'select SiteCode from sms_providerlocation'
$sitecode = $scObj.SiteCode
$namespace ="root\sms\site_" + $sitecode
$machine = Get-WmiObject -Namespace $namespace -Query "SELECT * FROM SMS_R_SYSTEM WHERE Name = '$machinename'"
$clientGuid = $machine.SMSUniqueIdentifier
Invoke-WmiMethod -Path "SMS_ApplicationRequest" -Namespace $namespace -Name CreateApprovedRequest -ArgumentList @($appid, $autoInstall, $clientGuid, $comments)
次のコマンド ラインでは、サンプル スクリプトが実行されます。
.\CreateApprovedRequestForMachine.ps1 "MachineName" "ScopeId_2E4DAE44-C9A0-4694-8B7A-474424C080D4/Application_88808a3a-86e4-4820-be59-aa7d61cb8c33 "true" "Application has been approved"
autoInstall パラメーターを false に設定しても、コンピューターベースの事前承認要求の構成マネージャーには影響しません。 事前に承認された要求がサイトに作成されるとすぐに、デバイスはアプリケーションのインストールを試みます。 承認要求を拒否して、デバイスからアプリケーションを削除できます。
シナリオ 5: 以前に拒否されたアプリケーション要求を再現する
以前に拒否されたアプリケーション要求を再び実行できます。 再表示は、SDK API を介してのみ使用できます。 次の PowerShell サンプル スクリプトは、要求が拒否された後の承認を示しています。
$machinename = $args[0]
$username = $args[1]
$appid = $args[2]
$scObj=Get-WmiObject -Namespace root\sms -Query 'select SiteCode from sms_providerlocation'
$sitecode = $scObj.SiteCode
$namespace ="root\sms\site_" + $sitecode
$reqObj = Get-WmiObject -Namespace $namespace -Class SMS_UserApplicationRequest | Where {$_.ModelName -eq $appid -and $_.RequestedMachine -eq $machinename -and $_.User -eq $username }
$reqObjPath = $reqObj.__PATH
Invoke-WmiMethod -Path $reqObjPath -Name Approve
次のコマンド ラインでは、サンプル スクリプトが実行されます。
.\ReapproveRequest.ps1 "MachineName" "DomainName\Username" "ScopeId_2E4DAE44-C9A0-4694-8B7A-474424C080D4/Application_88808a3a-86e4-4820-be59-aa7d61cb8c33"
シナリオ 6: アプリケーションの承認要求の通知をEmailする
管理者は、アプリケーションの承認要求の電子メール通知を構成できます。 アプリケーションのデプロイ中にアプリケーションの承認者を指定できます。 すべての承認者は、ユーザーがアプリケーションを要求したときに電子メール通知を受け取り、電子メールに記載されているリンクを使用して要求を承認または拒否できます。 また、内部ネットワークの外部でアプリケーション要求を承認できるように、クラウド管理ゲートウェイを構成することもできます。
電子メール通知の前提条件
バージョン 2107 以降、SMS プロバイダーには .NET バージョン 4.6.2 が必要であり、バージョン 4.8 が推奨されます。 バージョン 2103 以前では、このロールには .NET 4.5 以降が必要です。 詳細については、「 サイトとサイト システムの前提条件」を参照してください。
[デバイスごとにユーザーのアプリケーション要求を承認する] のオプション機能を有効にする。 詳細については、「更新プログラムのオプション機能の有効化」を参照してください。
PKI 証明書インフラストラクチャが設定されていない場合は、 拡張 HTTP を有効にします。
注:
拡張 HTTP の構成は、プライマリ サイトごとに行われます。 階層内のいずれかのプライマリ サイトで有効にした場合、Configuration Managerはすべてのプロバイダーで自己署名証明書を使用します。 この動作には、CAS とその他のプライマリ サイトが含まれます。
電子メール通知を構成する
- Configuration Manager コンソールで、[管理>サイトの構成] ->Sites に移動します。
- 階層内の最上位サイトを選択し、リボンで [ サイト コンポーネントの構成 ] を選択します。
- [Email通知] を選択して、[プロパティ] ダイアログを開きます。
- [アラートの電子メール通知を有効にする] をオンにし、SMTP サーバーのポートを指定します。 Microsoft 365 を使用している場合は、 Microsoft 365 SMTP サーバーを使用できます。
- SMTP サーバーの FQDN または IP アドレスを入力します。
- [ アカウントの指定] を選択し、[ 設定] を選択し、[ 新しいアカウント] を選択します。
- 新しいアカウントのユーザー名とパスワードを入力し、[OK] をクリック します。
- 電子メール アラートの送信者アドレスを入力します。
- [適用] をクリックします。
- 電子メール サンプルを送信することで、SMTP サーバーをテストできます。 [Email通知のプロパティ] ダイアログで [SMTP サーバーのテスト] を選択します。
-
NotiCtlr.logのエラーを確認します。 - クラウド管理ゲートウェイが設定されていない場合は、SMS プロバイダーの PKI 証明書を使用して SSL を構成して、内部ネットワークの要求を正常に承認または拒否することをお勧めします。 それ以外の場合は、"このセキュリティ証明書に問題があります" という警告が含まれているページが表示されます。
-
内部ネットワークの外部でアプリケーション要求を承認する
内部ネットワークの外部でアプリケーション要求を承認するには、追加の設定が必要です。
- [管理>Site Configuration>Servers および Site Systems Roles>SMS Provider>Properties で[クラウド管理ゲートウェイ トラフィックConfiguration Manager許可する] を有効にします。
- クラウド管理ゲートウェイを構成します。
- ユーザー検出Microsoft Entra有効にします。
- Microsoft Entra IDで、このネイティブ アプリ (クライアント アプリ) に対して次の設定を構成します。 これらの設定は、Azure portalで手動で構成する必要があります。
リダイレクト URI:
https://<CMG FQDN>/CCM_Proxy_ServerAuth/ImplicitAuth。 クラウド管理ゲートウェイ (CMG) サービスの完全修飾ドメイン名 (例: GraniteFalls.Contoso.com) を使用します。
マニフェスト: oauth2AllowImplicitFlow を true に設定 します。 たとえば、
する
電子メールの承認プロセスをテストする
エンド ツー エンドのシナリオを見てみましょう。
ユーザー コレクションで使用可能なアプリケーションをデプロイします。 [ 展開設定] ページで、承認のために有効にします。 また、いくつかの電子メール アドレスを入力して、アプリケーション要求に関する通知を受信します。
ユーザーはソフトウェア センターで新しいアプリケーションを確認し、そのアプリケーションに対する要求を送信します。 サイトは、アプリケーションの展開で指定されたアドレスに 5 分以内に電子メール通知を送信します。
メール 受信者が [承認] または [拒否] を選択します。 サイトがアプリケーション要求を正常に処理した場合、成功メッセージがブラウザーに表示されます。
- アプリケーション要求が電子メールで承認または拒否された場合、リンクの有効期限が切れ、他のユーザーが使用することはできません。
既知の問題
-
ApproveまたはDenyリンクをクリックすると、404 エラーが表示されます。- 管理 サービスにバインドされた証明書はありません。 Configuration Manager生成された証明書機能が有効になっているかどうかを確認します。 それ以外の場合は、独自の PKI 証明書インフラストラクチャを設定します。
-
SMS_REST_PROVIDER.logエラーがないか確認します。
-
There is a problem with this security certificateApproveまたはDenyリンクがクリックされた後に警告が表示されます。- Configuration Manager生成された証明書は、クライアント上の Web ブラウザーによって信頼されません。 内部ネットワークでリンクを使用する場合は、PKI 証明書インフラストラクチャを設定することをお勧めします。
-
Service is unavailable, HTTP Error 503メッセージ。- 管理 サービスが実行されているかどうかを確認します。 プロバイダー コンピューターで、 タスク マネージャー>Details に移動します。 というアクティブなプロセスがあることを確認します
sccmprovidergraph.exe - Configuration Manager コンソール、管理>サイト構成>Servers およびサイト システムの役割>SMS プロバイダーを開きます。
[プロパティ] を右クリックします。 電子メールの承認機能が Cloud Management Gateway で使用することを意図している場合は、
Allow Configuration Manager cloud management gateway traffic.がオンになっていることを確認し、この機能を使用して内部ネットワークの要求を承認または拒否する場合はチェックしないでください。
- 管理 サービスが実行されているかどうかを確認します。 プロバイダー コンピューターで、 タスク マネージャー>Details に移動します。 というアクティブなプロセスがあることを確認します
- Cloud Management Gateway を使用して要求を承認または拒否するためのリンクは機能しません。
- Microsoft Entraユーザー検出が有効になっていることを確認します。
- アプリケーションのデプロイ中に指定された電子メール アドレスがorganizationに属していることを確認します。
- Emailは、ユーザーがアプリケーションを要求したときに送信されません。
- メール アドレスが正しいことを確認します。
- アラートの電子メール通知が構成されていることを確認します。
- エラーの
NotiCtrl.logを確認します。
-
アプリケーション展開の作成ウィザードでエラーが発生しました。
- サブスクリプションを作成する権限があることを確認します。 サブスクリプションは、アプリケーションのデプロイ中に自動的に作成されます。