Blog

ClickOnce採用時のセキュリティ観点での注意事項、および制約事項について

2017/08/16

質問内容

ClickOnceを使用して展開する場合に、セキュリティ上
検討・注意すべき点など知見がありましたらご教示ください。

Microsoftからの回答

セキュリティ関連で注意すべきことはこちらのサイトにまとまっています。
http://msdn.microsoft.com/ja-jp/library/76e4d2xw(loband).aspx
http://msdn.microsoft.com/ja-jp/library/ms228998.aspx
http://msdn.microsoft.com/ja-jp/library/ms228996.aspx

私の経験上、特にコードアクセスセキュリティに関しては、十分に検証する必要があると思います。

また、これはClickOnce とは関係ないですが、Windows Vistaではコードアクセスセキュリティに加え、
UAC の制御が必要となります。
私もまだちゃんと検証できていないんのですが、Windows 7 においてはUAC とコードアクセスセキュリティの関係が少し変わっているようです。
この辺も Windows 7 が対象のクライアントになるようでしたら、十分な検証を行っていただいた方が良いかと思います。

必須コンポーネント(.NET Frameworkなど)のインストール制限

現象

ClickOnceを利用すると、アプリケーションの配布が容易に実現でき、
また管理者権限を持たないユーザがアプリケーションを
インストールできる等、メリットが大きい。
しかし、ClickOnceが前提とする必須コンポーネント
(.NET Framework 3.5等)のインストールには、
管理者権限が必要となる。

質問内容

この制限があると、ClickOnceでの初回配布の利便性が低い。
管理者権限がなくても、エンドユーザが簡単に
必須コンポーネントをインストールできる配布シナリオはあるか?

Microsoftからの回答

こちらはOSのセキュリティが優先されるため、管理者権限が必要となります。
ただし、ネットワーク管理者であり、かつ一定の条件を満たすことで、下記のような方法が考えられます。
http://msdn.microsoft.com/ja-jp/library/cc160717.aspx

ClickOnceでバージョン管理する上での制約事項

概要

ClickOnceでは、サーバ側、クライアント側双方でバージョン情報を保持し、
任意のタイミングでバージョン確認、自動更新を行うことで、
クライアントへのソフト配布を容易にしている。
ただし、バージョン確認、自動更新するには、
それが同一製品として認識されている必要がある。

質問内容 その1

何をもって同一製品として認識されているか?
ClickOnceでバージョン管理を維持する上で変えてはいけない設定はあるか?
・インストールURL?
・製品名?発行元名?EXEファイル名?
・サービスパックなど.NET Frameworkのバージョンを変更できるか?

Microsoftからの回答

・インストールURL?
変更可能です。こちらをご覧ください。
http://msdn.microsoft.com/ja-jp/library/16z3sw0x.aspx

・製品名?発行元名?EXEファイル名?
一意性の維持に関してはこちらをご覧ください。
http://support.microsoft.com/kb/950275/ja
上記の設定はClickOnce におけるマニフェストの設定になります。

・サービスパックなど.NET Frameworkのバージョンを変更できるか?
問題なく変更できます。

質問内容 その2

現状、以下を変更して、
クライアント側で新バージョンをインストールするとエラーが発生する。
変更してもバージョンアップを継続するにはどうしたら良いか?

Microsoftからの回答

・ClickOnceバージョン番号のフォーマット(例:1.0.1124.01 ⇒ 1.0.091124.01 に変更)
こちらの内容に関してはサポートサービスにお問い合わせいただく必要があります。
なお、参考までに下記のURLにいくつかトラブルシューティングの情報があります。ご確認ください
http://msdn.microsoft.com/ja-jp/library/ms229001.aspx

・添付した署名の変更(例:自動生成のデジタル署名 ⇒ 正規のデジタル署名)
こちらは先ほどのKBの内容と同じかと思います。
http://support.microsoft.com/kb/950275/ja

-Blog