ファイルサーバーのデザインについてのあれこれ

ファイルサーバーのデザインについて質問を受けて、色々要素があって一応説明したけれどもあまり伝わらなかった気がするのでブログに書いておいてみます。

注意というか前提

何に関してもそうなのですが「どうするのがベストなのか?」という問いにはたいていの場合答えはありません。「いや、ベストってのはなかなかないよね。お客さんの使い方にあわせてベターな選択肢がいくつかあるという話であって、例外が無いなんていうことはあり得ないし…ごにょごにょ……」というのが本音であり、紳士的な回答だと思います。

#だいたい、何かにおいて「こたえはこれです!こうしておけば間違いない!」なんてのは騙そうとしているか、その人自身盲目になっちゃってるかですよね。
#怪しい宗教とか怪しいビジネスとか疑似科学なら断言するでしょうけどね!

とはいえ、技術要素を抑えた上で「こうすればこうなる。一方こうすればこうなる。こういう前提ならこの選択肢がいいんじゃない?」ということは言えるし、お客さんの前では「お客様の環境や使い方を考慮すると、私としてはこのようなデザインと進め方をお勧めします。」ということはやっぱりプロとして言わなくちゃいけないですよね。それをするためには技術的なことを抑えた上でお客さんの希望や使い方を良く聞いて、自分の頭で考えてアイデアを出さなくちゃいけないです。

特にファイルサーバーのデザインや運用に関してははっきりいって「うまくいってる!」「こうすれば成功確実!」というようなものは聞いたことがありません。ファイルサーバーの権限管理は破綻し、ゴミファイルが散乱し、慢性的に容量不足で、組織変更の度にアクセス権設定とフォルダ構成変更とで多大な工数が必要となり…となってしまっている環境も多数あると思います。

そういう分野であるという認識の元、以下を読んでもらえればと思います。

抑えておくべき技術的な事

まず抑えておくべきは以下の事項です。

アクセス権の設定個所は「NTFSアクセス権」「共有のアクセス権」の2つがあるので(Windows Server 2012ではさらにもう1つ増えましたがここでは触れない事にします。すぐに使われそうも無いので。)どちらかあるいは両方のパターンについてきちんと検討が必要です。

NTFSアクセス権を使ってアクセス権をコントロールすることに決めた場合にはそのファイルをコピー、移動した時のアクセス権の動きに付いても考慮が必要です。

その他にも知っておいた方がよい事柄を紹介します。

NTFSのアクセス権を維持したままファイルをコピーする方法はある

  • NTFSのアクセス権はxcopy, robocopy等のコマンドでオプションを適切につければ、コピーであってもアクセス権を維持することができる。

これについてはヘルプを見てもらえば一発で分かるかと思います。xcopyなら/oオプション、robocopyなら/SECオプションあたりで実現できます。

フォルダがネストしていて、別階層が共有されている場合ユーザーが混乱するかもしれない

  • 共有フォルダの作成方法によっては「同一のファイルに複数のUNCパスが存在する」という状況が起きる。しかもその際に共有のアクセス権の設定方法によっては「ある人は複数のUNCパスで同一のファイルを開けるのに、別の人はこちらのパスでは開けるけれども、別のパスでは開けない」ということが起きる。

これについてはちょっと補足説明があった方がいいでしょうか。例えば以下のパスがあるとします。

  1. D:¥Share                  →Shareとして共有(¥¥Server¥Share, 管理者のみフルコントロール)
  2. D:¥Share¥Share2  →Share2として共有(¥¥Server¥Share2, Everyoneフルコントロール)

さてここでD:¥Share¥Share2¥folder¥file1.txtというファイルがあったとします。このファイルは1の共有からたどると
「¥¥Server¥Share¥Share2¥folder¥file1.txt」というUNCパスになります。一方2の共有からだと
「¥¥Server¥Share2¥folder¥file1.txt」というUNCパスになります。

管理者であればどちらのUNCパスからでも同じファイルにアクセスする事ができます。一方管理者以外の人は1の共有からのパスにはアクセスできません(共有のアクセス権を持たないので)。しかし、2の共有からのパスにはアクセスする事ができます。

エンドユーザーがこの事を理解して「あの人はこの共有にはアクセス権を持たないからこっちの共有からのUNCパスを伝えてあげないとな」と、気を利かせてくれたりする……ということはかなり難しいと思いますし、それを期待してはいけないと思います。

また、この場合でも、NTFSのアクセス権のみで制御し、共有のアクセス権はだれでも何でもできるような権限設定の場合にはアクセス自体には何も問題が発生しない事になります。ユーザーさんはちょっと混乱するかもしれませんけどね……。

組織毎にフォルダ作成、権限設定をすると組織変更時に泣きたくなる

決行スタンダードなファイルサーバーの設計として、「組織毎に管理する」というのはあると思います。組織毎にセキュリティグループがあり、ファイルサーバーにも組織毎のフォルダがあり、その組織に所属する人はその中にアクセスできる(つまり、組織のフォルダに組織のセキュリティグループでのアクセス権が設定してある。共有アクセス権か、NTFSアクセス権かはここでは問わない)。

一見なんの問題もなさそうな、スタンダードな設計に思えますが以下の場合には悲惨な事になります。

  • 組織が頻繁に変わる
    • 組織変更の度にファイルサーバーの中のファイルやフォルダを移動して回らないといけなくなります。1つの組織が2つに分割したら?どのフォルダ、ファイルがどちらの組織に所属すべきなのかを全部担当者に聞いて回らないといけない事になります…。
  • 別の部署と共有したいファイルが出てくる
    • 別の部署と共有したいばあい共有用に別の場所をつくってそこに移動してもらうか、その特定のファイル、フォルダだけアクセス権を変更してしまうか…というようなイレギュラーな対応をする必要が出てくると思います。別の場所に移動するとその場所のアクセス権の設定はどうしても緩くなり、そうするとそこの使い勝手がいい物だからみんなそこにファイルを作るようになり…と当初の構成が無意味になってしまう事が良くあります。
      かといって特定のファイル、フォルダだけアクセス権を変更すると、都度管理者が特別対応をしなくてはいけないので管理者の負荷が上がる上に、出来上がった特別ファイル、フォルダは次の部署移動の際にどう扱っていいのか分からない事に……。

ユーザーにフルコントロールを与えてしまうとデザインを維持できない

ユーザーが自分で好き勝手できるようにフルコントロールを与えてしまうケースがあります。そうするとそのユーザーはそのフォルダ以下すべて完全に好き勝手できちゃいます。アクセス権も変更できてしまうので、ある程度の枠組みを決めてあったとしても事実上破綻します。もちろんそのフォルダ以下は完全に権限移譲するのと引き換えに管理責任もきちんと引き取ってもらえるのならいいのかもしれません。…が、部署毎のフォルダ構造があるなかに勝手に別部署用のフォルダを作られたりなどもできちゃうのでやはりフルコントロールは危ないと思います。

アクセス権はグループでつけておき、ユーザーはグループへの追加、削除で権限管理するのが大抵うまくいく

これはかなり常識的な感じですが、アクセス権のエントリに個人名を出してしまうのは良くない方法だと思います。

  • 個人で付与すると、アクセス権を追加、削除したいときにすべての場所に個別に設定を行う必要が出てくる。
  • 個人にしておくと、その個人アカウントを削除したときにアクセス権のゴミが残ってしまう。(生SIDが見えちゃうやつですね。)
  • 「XXさんの後任なので同じ権限で」と言われても、くまなく見て回って個別にアクセス権をつけるしか無くなってしまう。

このようになってしまうので、まず、グループを作成し、グループで権限をつけ、そのグループメンバの追加削除でアクセス権のコントロールをするとうまくいきます。

ユーザーにどのようにアクセスさせるかを考慮しておくべき

ユーザーがファイルサーバー(共有)にアクセスするときにどのような方法を使うか……というのは考慮しておくべきポイントです。パワーユーザーならUNCパスさえ知ってればあとは自分でショートカットを作成するなり、ドライブマップするなり、お気に入りに登録しておくなりどうとでもなるのでしょうが、そういうリテラシーの無いユーザーに対してはきちんと方法を用意しておいてあげるべきです。

とはいえ、この部分はかなり企業文化や情報システム部の方針によるところが大きいと思います。

  • UNCパスでOK
  • ユーザーのデスクトップにショートカットを配る
  • 自動的にドライブマップさせる
  • 部署毎の共有に自動的にドライブマップさせる
  • マイネットワークからたどらせるオペレーションで統一して学ばせる
などなど……。

例題:3段階の権限の段階を作りたい場合

1つ、ちょっと具体的な話をしてみたいと思います。

  • すごく偉い人、ちょっと偉い人、普通の人の3つの種類のユーザーを作りたい
  • すごく偉い人はすべてのファイルをみたい
  • ちょっと偉い人はちょっと偉い人たち用のファイルと普通の人たち用のファイルを見たいすごく偉い人用のファイルは見えてはいけない。
  • 普通の人たちは普通の人たち用のファイルのみ見たい。ちょっと偉い人とすごく偉い人用のファイルは見えてはいけない。

このようなケースを考えてみましょう。

#以下、思いついた事を思いついたままに書くので整理されないかもしれませんが、頭の体操ということで…。

パターンの構成要素と考慮点を考える

まず、どのような要素によって案に分かれて行くかを考えてみます。

  • フォルダ構造(フラットにする、ネストする)
  • アクセス権付与(NTFSで付与、共有で付与、両方に付与)
  • 共有をかける場所(3つのフォルダ毎に共有、3つのフォルダとは別に入り口を1つ作成)

私はとりあえず以上の3つの要素でいいんじゃないかと思いました(眠いので妥当じゃないかも…)。2×3×2で12パターン出来上がる事になりますね。

さらにそれぞれの構成要素毎にどの点を考慮するかを考えます。

  • アクセス権がきちんと要件を満たすようにつけられるか
  • それぞれのユーザーがどのようなパスでアクセスするか、そのパスは他の種類のユーザーにも使えるものになるか、ならないか
  • 別の種類のユーザーとファイルを共有したくなった場合どのように対処できるか(これもいくつかパターンが出るはず)
  • ファイルをコピーする、カット&ペーストするで結果が異なるケースがないか(ユーザーに特定の操作をお願いしなければならない点はないか)
  • 新しい区分ができた場合どのように対処できるか

だいたいこんなものでしょうか。

あとは、それぞれのパターン毎に絵を書いて、考慮点について考えてみて、良い点、悪い点をならべて比較検討すればそれなりにいい案をいくつか残せるのではないかと思います。

と…今回の例題ではちょっとそこまでやるのはやりすぎかもしれませんけどね。

具体的に自分でやってみようかとも思いましたが、今日はもう眠たいのでまた時間があったり、万が一要望があったりしたらやろうかと思います……。

子供3人。家族優先。都内SIer勤務。Windows系中心のインフラよりの何でも屋。脱原発。 Microsoft MVP for Cloud and Datacenter Management.

コメントを残す

メールアドレスが公開されることはありません。