はじめに
ファイバチャネル(以下FC)には、一般に知られているよりも強力なセキュリティメカニズムがあらかじめ備わっています。しかし、このメカニズムはたいていの場合あまり活用されていないか正しく理解されておらず、そのせいで「SANはセキュリティに問題がある」などと言われています。今回の記事では、FCスイッチの機能のなかで最も簡単で最も設定ミスをしやすい部分である「FCゾーン」について取り上げてみます。
ある程度の機能を備えたFCスイッチであれば、ゾーンの設定が可能でしょう。ゾーン化という技術は、ネットワークトラフィックを分離するために使われる、イーサネットでのVLANと非常によく似ています。ただし、ゾーン化の方がVLAN化よりも効果的です。ゾーン化では分割区間の間でトラフィックが「漏れ出す」危険性がまったくないからです。
FCゾーンはVLANよりも高度な概念です。ゾーンは一見複雑な技術に見えますが、複雑な部分は隠蔽されていて簡潔になっています。デバイスノード番号もしくはWWNは、複数のゾーン内で共存が可能です。この機能が混乱の元になるのです! 正しく管理しやすいゾーン設定を行うためには、何らかの体系が必要となります。以降では、この点に関して詳しく見ていきます。
ゾーンには、ソフトゾーンとハードゾーンの2種類があります。
ソフトゾーン
ソフトゾーン化では、スイッチはデバイスのWWNをゾーンに割り当て、各デバイスの接続先ポートについては関知しません。たとえば、QとZというWWNが互いに同じソフトゾーンにある場合、これらはお互いにやりとりが可能です。同様に、ZとAというWWNが先ほどとは別のゾーンに存在する場合、ZとAはお互いを認識しやりとりが可能ですが、AはQを認識できません。これは、イーサネットスイッチではあまり使われていない機能なので、ややこしいところです。
ソフトゾーンの概念を理解するのはそれほど難しくはありません。簡単に言えば、ファブリック内のノードのWWNに基づいて制約が適用されるということです。ソフトゾーンの利点は、スイッチ上のどのポートでも利用でき、参照しようとする他のノードへ簡単にアクセスできることです。
しかし、これはよいことでしょうか? 残念ながら、そうではありません。第一に、ソフトゾーン環境には管理上の問題があります。メンテナンスなどを行うために、管理者はノードがどのポートに接続されているかを把握しておかなければなりません。ソフトゾーンを利用しているケースでは、スイッチの設定上にポートに関する記述がまったくないことがあります(内容がすぐに古くなる可能性があるため)。第二に、ソフトゾーンではある種のセキュリティリスクが考えられます。今のところ、ハッカーによるWWNのなりすまし行為の事例は報告されていませんが、起こりうる可能性はあります。攻撃者は、侵入しようとするゾーンへのアクセスが許可されているWWNを知る必要がありますが、ソフトゾーンでは、別のゾーンに属するようにデバイスのWWNを変更することは非常に困難です。まさか誰でも自由にアクセスできる場所にスイッチの設定を置いたりしていませんよね?
ハードゾーン
ハードゾーンは、イーサネットの世界で言うVLANによく似ています。ハードゾーンでは、ポートをゾーンに割り当て、そのポートに接続されたものはすべて、ポートに関連付けられた単一もしくは複数のゾーンに属するものと見なします。この方式は、ファイバ接続を直接つなぎ変えるような物理的攻撃に対しては安全性が下がりますが、実際問題として、そのような攻撃が行われる可能性は低いでしょう。理想的なSANの構成とは、スイッチ上でハードゾーン化を行い、ターゲット側ではWWNに基づくLUNアクセス制限を適用するというものです。ストレージアレイではWWNマスキングを実施し、複数のイニシエータがターゲットを認識できるようにゾーン化を行います。
ゾーン化計画を立てるときには注意が必要です。類似のOSをグループ化するというアイデアは、一見うまい考えであるように思いますが、実際には何の意味もありません。かつて、Windowsサーバを非Windowsサーバも利用しているストレージアレイと同じゾーンに割り当てるのは無謀だと思われていた頃のことを思い出してください。Windowsは新しいLUNを認識すると「この新しいボリュームを初期化しますか?」というダイアログボックスを表示します。ここでクリック大好きなWindows管理者が「はい」のボタンをクリックすると、他人のLUNを破壊してしまうことになります。ストレージアレイにLUNマスキングを用いていれば、このような心配はありません。
ゾーン化のベストプラクティス
ゾーン化のベストプラクティスについては数多くの説が唱えられています。ソフトゾーンは悪夢だというのが大多数の意見であり、実際にそのとおりです。そのため、ここではハードゾーンによるゾーン化を前提に話を進めていきましょう。まず、各ノードはHBAを2つ持つ必要があります(冗長化のために、HBAをそれぞれ別々のファブリック、別々のスイッチに配置します)。スイッチはそれぞれ、同じゾーン設定を持つ必要があります。
「1ゾーン1イニシエータ」派の人々は、イニシエータを中心としてゾーンを作成するべきだと考えています。これは、各ゾーンに1つのホストまたはイニシエータを設置するという意味です。複数のストレージアレイポートをゾーンに追加することは、「1ゾーン1イニシエータ」のルールに違反しません(この場合のターゲットはストレージアレイです)。この手法は非常に有用で、その構成においてホストがどのアレイにアクセスできるかが一目でわかります。
ターゲットを中心としてゾーンを作成すべきだと考える人々もいます。結局のところ、各ターゲットは一定数のホストからのアクセスを受け付けるのだから、同じ目的を持つイニシエータを選んで小さなネットワークを作成すればいいのではないかという主張です。複数のイニシエータがお互いを認識できることに神経を尖らすストレージ管理者もいるかもしれませんが、これは場合によっては良いアイデアです。あるサーバがリブートした場合は、同じゾーンにいる別のサーバから、「ノードXがファブリックから消失しました」という内容がsyslogにレポートされます。ターゲットを中心としたゾーンの利点は、どのホストがどのターゲットにアクセスするかを容易に把握できることです。
実は、「ゾーン」とはノード間の通信マッピングを二重化(もしくはそれ以上)にしたものにすぎません。ストレージアレイの1つのポートは、それぞれにホストつまりイニシエータを含む複数のゾーン(「1ゾーン1イニシエータ」形式のゾーン)にまたがって存在することになります。
ゾーン化を一切しない人もいますが、安定性という観点からだけでも、その方法はお薦めできません。ファブリックをリセットした場合に、全ホストが同時に再ログインし、ファブリックの更新情報を全ホストに送信する必要が出てくるからです。セキュリティ問題の可能性もあります。そもそも、ゾーン化を行わないというのは絶対に避けるべき初歩的な過ちです。
ゾーン構成の決定は大変重要です。そのため、自分の環境に適したハードゾーンの構成を決定するためには、ある程度時間をかける必要があります。
要約
- ゾーンは分割区画であり、VLANに似ている。ポートやWWNは複数のゾーンにまたがって存在できる。
- ソフトゾーンではWWNに基づいて分割を行う。ファイバ接続を新しいポートにつなぎ変える場合の管理が困難。
- ハードゾーンではポートに基づいて分割を行う。どのノードがどこに接続されているかを追跡できる。「CというWWNはこのポートに存在しなくてはならない」というこだわりがある場合は、スイッチ上にハイブリッドゾーンを設けることができる。
