どうも。
キクです。
ここ最近は業務でNetAppに触れる機会が多く、いろいろなことを吸収できている気がしていて楽しいです。
そんな僕がNetAppをしっかり触り始めたのは今携わっているプロジェクトが始まってから。
そのため深掘った知識は正直まだないのですが、初心者だからこそ分からなくて調べたことをブログとして残せたらなと思い書いています。
初心者目線の記事と思ってお手柔らかに見ていただけると幸いです(笑)
今日書くテーマは「エクスポートポリシー」という技術
この技術に関して、今回は下記3点について書いていこうと思います。
・エクスポートポリシーってどんなもの?
・ボリュームとの関係性は?
・エクスポートポリシー「default」とは?
それではよろしくお願いします。
エクスポートポリシーってどんなもの?
エクスポートポリシーとは簡単にいうとボリュームに対するアクセス制御を設定するポリシーです。
エクスポートポリシーを構成する要素として、「エクスポートルール」というものがあります。
構成はこんな感じです。
エクスポートポリシー
└エクスポートルール1
└エクスポートルール2
・・・
└エクスポートルールX
クライアントからのアクセスは、このエクスポートルールの内容に従って制御されることになります。
エクスポートルールでは以下のような観点からアクセス制御を実施することができます。
・NFSやSMBなどクライアント側から送信されるファイルアクセスプロトコル
・ホスト名やIP
・KerberosやAUTH_SYSなどクライアントからの認証セキュリティタイプ
この中から1つまたは複数設定可能で、複数設定した場合にはすべての条件に一致しないとアクセスは拒否されることになります。
エクスポートルールにはインデックス番号というものが紐付いており、クライアントからのアクセスは番号が若いルールから順に審査されていきます。
条件にあったルールが存在していればそのルールが適用され、それ以降のルールについては処理されません。
そのため、例えばルールインデックス1番で「すべてのアクセスを拒否」としていた場合、それ以降のルールで条件に合うものが存在したとしてもアクセスできないことになります。
このようにしてエクスポートポリシーの中でエクスポートルールを設定して、クライアントからのアクセスを制御することができます。
ボリュームとの関係性は?
エクスポートポリシーはボリューム1つ1つに個別に設定することが可能です。
1ボリューム1エクスポートポリシーの関係性。
そのためボリューム毎にアクセス制御を設定することが可能です。
エクスポートポリシー「default」とは
エクスポートポリシー名「default」とは、SVM作成時に自動的に作成されるものです。
SVMは「エクスポートルールを備えたエクスポートポリシーが存在する必要がある」という決まりがあるので、このでdefaultは削除することはできません。
またdefaultは空のエクスポートルールのみを持った状態で作成されます。
空のエクスポートルールとはどのような状態なのか?
前の項目でエクスポートルールについて触れましたが、「すべての条件に一致しないとアクセスは拒否される」と書きました。
「空」つまりは「一致する条件がない」ということなので、この状態ではクライアントからのアクセスはすべて拒否されるということになります。
もちろんこの状態だとクライアントからのアクセスが全く通らず使い物にならないので、下記のような設定をしてクライアントからのアクセスを制御する流れになるかと思います。
・default内のエクスポートルールを追加する
・独自のエクスポートポリシーを作成する
この「エクスポートルールが空の場合、全アクセス拒否」という仕組みは、僕自身が調査を進めていく中でも感心したポイントでもあり、
「そのまま空の状態にしておいた方がいいのかな?」
とも感じました。
※もちろん設計によって様々だとは思いますが。
そのように感じた理由に関して少し解説します。
まずSVMは必ず「ルートボリューム」というボリュームを保持しており、このルートボリュームにデフォルトで紐付くエクスポートポリシーは「default」になります。
また通常のボリューム作成時に、ボリュームへ紐付けるエクスポートポリシーを指定しなかった場合にはルートボリュームに紐付くエクスポートポリシー、つまりdefaultが紐付けられます。
ここでdefaultのエクスポートルールが空の状態であれば、ボリューム作成段階では誰もアクセスすることはできません。
これが仮にdefaultにルールを追加してしまった場合、
例えばクライアントAとクライアントBがいたとして、default内にクライアントAを許可する設定をいれたとしましょう。
次にクラアントB用のボリュームを作成します。
この時に
・クライアントB用の独自エクスポートポリシーが存在しない
・存在していても指定し忘れてdefaultが割り当たった
などといったことが起こると、意図せずクライアントAからクライアントB用のボリュームにアクセスできることになってしまう可能性があるのでセキュリティ上好ましくないなと感じました。
そんな理由から、defaultは空の状態であった方が安全なのではないかと思いました。
さいごに
いかがでしたでしょうか。
最近触る機会が増えた程度なので深い話はできませんでしたが、僕と同じく触り始めの方で「それ気になってた!」と感じてくださることがあれば嬉しいです。
僕自身このように文字として書き起こして振り返ることで復習にもなりました。
背伸びせず今の自分のレベル感にあった記事を書いていきたいなと思います。
ではでは!