ファイル共有はNTFSアクセス権と共有アクセス権のどちらで設定?
2018/07/20
本エントリーの目次
ファイル共有の設定をする際に迷いがちなこと
Windowsのファイル共有機能を設定する際に、こう疑問に思ったり、迷ってしまうことはありませんか?
Windowsのファイル共有機能は、NTFSアクセス権と共有アクセス権のどちらで設定すれば良いんだろうか?
というわけで今回は、ファイル共有はNTFSアクセス権と共有アクセス権のどちらで設定?と題してお送りします!
NTFSアクセス権と共有アクセス権とは?
まずはNTFSアクセス権と共有アクセス権について、軽くふれておきましょう。
NTFSアクセス権とは?
NTFSアクセス権とは、HDDがNTFSでフォーマットされていれば、すべてのフォルダーやファイルが持つアクセス許可情報のこと。
そのためWindows98などのOSで使用されていた、FAT32形式のHDD上のフォルダーやファイルには存在しません。
その特徴は、以下のとおり。
- すべてのフォルダーやファイルがアクセス許可情報を個別に持つ。
- 権限を親フォルダーから継承することが可能である。
- NTFSアクセス権はリモート、ローカル双方のアクセスに適用される。(詳細は後述)
尚、NTFSアクセス権はマイクロソフトさんのKB(Knowledge Base)では、NTFS アクセス許可と表記されていることがほとんど。
ですがネット上では、NTFSアクセス権と表記されることが多いので、本エントリーではNTFSアクセス権と表記します。
そしてその設定は、フォルダーやファイルのプロパティーを開き、セキュリティータブから行います。
共有アクセス権とは?
共有アクセス権は、共有に関するアクセス許可情報のことで、フォルダーに設定を行います。
フォルダーのプロパティーを開き、共有タブの『詳細な共有』、『アクセス許可』とボタンをクリックしていくと設定可能です。
こちらの特徴は、以下のとおり。
- NTFSアクセス権に比べると設定可能な権限が少ない。
(フルコントロール、変更、読み取りのみ) - HDD上では同じパスに存在するフォルダーやファイルであっても、アクセスする際に使用した共有が異なる場合、適用されるアクセス許可が異なる。
そのため、Aという共有経由ではアクセス可能なファイルが、Bという共有経由ではアクセスできない、なんてことが起こり得る。 - NTFSアクセス権と異なり、共有アクセス時のみ、アクセス許可が適用される。
共有リソースへのアクセス可否は、NTFSアクセス権と共有アクセス権が相互に干渉する!
共有リソース(共有設定されているフォルダーあるいはファイル)へのアクセス可否は、先に挙げたNTFSアクセス権と共有アクセス権の双方が評価され、決まります。
そして、双方の評価結果が許可の場合のみ、共有リソースへのアクセスが許可されます。
そのためNTFSアクセス権が許可、共有アクセス権が拒否の場合は、共有リソースへのアクセスは拒否。
NTFSアクセス権が拒否、共有アクセス権が許可の場合は、共有リソースへのアクセスは拒否。
双方が拒否の場合ももちろん共有リソースへのアクセスは拒否、となります。
というわけで、共有リソースへのアクセスを可能にするには、NTFSアクセス権と共有アクセス権の両方の設定を、正しく行う必要があるのです。
共有リソースへのアクセス権の設定は、NTFSアクセス権のみで設定するのがおすすめ!
さて、いよいよ本題。
Windowsのファイル共有機能を設定する際に、NTFSアクセス権と共有アクセス権のどちらで、あるいは両方で設定をすべきなのか、という疑問。
はるるの見解は、ズバリこれ!
NTFSアクセス権のみで設定するのがおすすめ!
NTFSアクセス権のみで設定?どういうこと?
と思われるかもしれませんね。
ですがその設定方法はとっても簡単。
共有アクセス権は全てのアクセスを許可に設定し、NTFSアクセス権で正しいアクセス許可を設定するだけです。
つまり共有アクセス権の設定は以下のように、Everyoneフルコントロール 許可に設定する。
そしてセキュリティタブでNTFSアクセス権を設定し、許可を与えたいユーザーなりグループなりに対して、適切なアクセス権限を設定する。
または拒否を設定し、明示的にアクセスの拒否設定を行う、ということ。
NTFSアクセス権のみで設定することをおすすめする理由
はるるがNTFSアクセス権のみで、アクセス権の設定をする方法をおすすめするのは、以下のような理由から。
手間いらずで、分かりやすい!
先にも書いたとおり、共有リソースへのアクセスを可能にするには、NTFSアクセス権と共有アクセス権の設定を、両方とも正しく行う必要があります。
この時、両方に異なる設定を行っていた場合、両方の設定を確認しないと設定内容が把握できず、手間がかかります。
さらにそれを自分で解釈して、こう設定しようとしたのか、という設定した当時の設定意図を読み取るのが難しくなります。
そしてこの設定方法の一番の問題は、設定者(たいていの場合、システム管理者やネットワーク管理者)の予期しない権限設定の抜け道があり、本来アクセス許可を与えるつもりのないユーザーやグループに、アクセスを許してしまう可能性がある、ということ。
設定が把握しにくく、分かりづらいわけですから、こういったミスが起こる可能性は十分にあります。
これに対してNTFSアクセス権のみで設定する方法では、確認は片方で済むのでとっても簡単。
しかも同じフォルダーやファイルへの設定が、共有アクセス権と異なる場合を考慮せずに済みます。(共有アクセス権は、何でもかんでもOK!という設定なので。)
NTFSアクセス権の方が、きめ細かな制御が可能!
共有アクセス権の設定は、NTFSアクセス権ほど細かく設定することはできません。
そのためきめ細かな制御が必要となる場合、共有アクセス権では機能不足となります。
つまりNTFSアクセス権と共有アクセス権の両方でアクセス許可の設定を行うケースでも、複雑なアクセス権の制御を行わせる場合、その部分に関しては、NTFSアクセス権の設定を頼る必要があるのです。
たとえば共有アクセス権で設定できるのは、ルートフォルダーだけ。
内部の特定のフォルダーのみアクセスさせたくない、ということであれば、NTFSアクセス権による制御が必要なのです。
それならば、最初からすべてNTFSアクセス権のみで設定した方が、間違いなく分かりやすいでしょう。
共有アクセス権には、継承という概念がない!
これはきめ細かな制御に関係する部分と言えますが、共有アクセス権では継承機能が使えません。
また、特定のフォルダーは親フォルダーの設定を継承しない、といった設定もできません。
というか、そういう概念自体がないのです。
なにしろアクセス権を設定できるのは、共有を設定したルートフォルダーだけ、ですから。
つまりルートフォルダー配下のフォルダーやファイルはすべて、ルートフォルダーの権限を継承し、変更できないイメージになります。
共有アクセス権は、経由元によって適用されるアクセス権が異なる!
これは共有アクセス権の特徴でふれた内容そのものですが、同じフォルダーやファイルであっても経由元が異なる場合、適用されるアクセス権が異なります。
そのため、予期しないユーザーのアクセスが可能になってしまうなど、脆弱性の原因になることも。
NTFSアクセス権はリモート、ローカル双方のアクセスに適用される
NTFSアクセス権の設定は、リモートとローカルのどちらにも適用されます。
これに対し、共有アクセス権による設定は、共有アクセス時にのみ適用されます。
これ、実は見落としがちな脆弱性の原因になるのです。
ちなみにこの内容について、マイクロソフトさんはKBで以下のように述べています。
NTFS アクセス許可は、ローカルおよびリモートの両方のアクセスに影響します。
NTFS アクセス許可は、プロトコルに関係なく適用されます。
これに対して、共有アクセス許可は共有ネットワーク リソースだけに適用されます。共有アクセス許可では、ローカル ユーザーまたはターミナル サーバー ユーザーのアクセスは制限されません。
したがって、複数のユーザーが使用するコンピューター上では、共有アクセス許可でユーザー間のプライバシーを保護することはできません。
この件についての詳細は、Windows ローカルログオンによる脆弱性も考慮しないと危険!をご覧いただけると、よく分かると思います。
『アクセス ベースの列挙を有効にする』を利用するには、NTFSアクセス権の設定が必要!
いつからだったか、正確なバージョンは忘れてしまったんですが、Windows Server 2003あたりから、Windows Serverによるファイル共有では、ABE(Access-based Enumeration) = アクセス ベースの列挙という機能が使用可能になりました。
これはアクセス可能なフォルダーやファイルのみ、エクスプローラで可視化される、という機能。
つまりABEを有効にすると、アクセス権のないフォルダーやファイルは見えなくなるのです。
参考:Windows Server上のアクセス権がない共有フォルダーを見えなくする方法
たとえば、以下のような設定を考えてみましょう。
- 共有アクセス権での設定で、ルートフォルダーを『Everyone』フルコントロール 許可。
- NTFSアクセス権での設定で、子フォルダーAを『Everyone』フルコントロール 許可。
- NTFSアクセス権での設定で、子フォルダーBを『usertest』ユーザーのみフルコントロール 許可。
ABEを使用しない場合、『usertest』ユーザーは子フォルダーAもBも見え、どちらにもアクセス可能です。
ところが、『usertest』ユーザー以外のユーザーは、子フォルダーAもBも見えますが、子フォルダーBにアクセスしようとすると、警告が表示され、アクセスできません。
これ、アクセスできないなら、『usertest』ユーザー以外のユーザーでは、子フォルダーBを表示する必要はないのでは?
という、ごく自然な疑問を解決するための機能です。
つまりABEを有効にした場合は、『usertest』ユーザー以外のユーザーでは、子フォルダーBが表示されなくなる、ということ。
アクセス権のないユーザーには、フォルダーやファイルの存在自体を知らせないことは、セキュリティー上重要でしょう。
そのためABEを利用するのが望ましいのですが、これを利用するには結局NTFSアクセス権の設定が必要。
だったら、共有アクセス権の設定は必要ないよね、ということ。
迷ったら、NTFSアクセス権だけでの設定がおすすめ!
ファイル共有のアクセス権の設定が、親フォルダーと子フォルダーで異なることはないなど、シンプルで良い!
ということであれば、今回はるるがおすすめした方法とは逆に、共有アクセス権だけで設定する方法の方が、実は簡単です。
そのため一概にはるるがおすすめした、NTFSアクセス権だけで設定する方法が常に最適、とは言いません。
マイクロソフトさんも以下のように述べており、NTFSアクセス権だけで設定する方法を常に推奨している、というわけではないのです。
NTFS アクセス許可だけを使用してフォルダーーおよびボリュームのアクセスを管理する場合は、Everyone の共有アクセス許可をフル コントロールに設定します。
こうすると、共有アクセス許可の管理は簡単になりますが、NTFS アクセス許可の管理は共有アクセス許可よりも複雑になります。
ですがNTFSアクセス権による設定の方が、共有アクセス権による設定よりも、高度できめ細かな設定が可能なのは事実です。
そのため、どちらで設定すべきか迷ったら、NTFSアクセス権だけで設定する方法をおすすめします!
両方で設定するのだけは、双方の設定の相違による設定ミスの可能性があるので、おすすめできません。
そのため避けた方が無難じゃないかと思います。
それでは今回はこの辺で。