Edited at

SoftLayer Bare Metal server: QuantaStor のクラウド・コンテナのファイル共有をより安全に使用するには

More than 3 years have passed since last update.


0. はじめに

前回、SoftLayer Bare Metal server: QuantaStor でのオブジェクト・ストレージの活用で省略時値では、十分なアクセス制御を設定していないと書きました。この記事では省略時設定ではどの様な状態となるか、および、その状態をどの様に改善するかを述べます。


1. 省略時値での動作

以下の省略時設定のままクラウド・コンテナ(以下の例ではQuantastorTestContainer)を作成すると、その瞬間から、Public /ゲストアクセス可能な NFS および CIFS の共有が作成され、不特定多数の外部ホストがアクセス可能となります。

create_cloudcontainer.png

この問題は、QuantaStor でのクラウド・コンテナ使用時に特有の問題です。QuantaStor で通常のファイル共有を作成する際には、よりきめ細かい設定が作成時に可能な為、この問題は発生しません。

CIFS アクセス:

# mount QuantaStorのIPアドレス:/export/QuantastorTestContainer /mnt

# dd if=/dev/zero of=/mnt/test.dat count=10 bs=1M
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 2.0097 s, 5.2 MB/s
# ll /mnt
合計 10240
-rw-r--r-- 1 nfsnobody nfsnobody 10485760 6月 16 20:07 2015 test.dat

NFS アクセス:

# mount.cifs //QuantaStorのIPアドレス/QuantastorTestContainer /mnt -o guest

# dd if=/dev/zero of=/mnt/test2.dat count=10 bs=1M
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 1.91142 s, 5.5 MB/s
# ll /mnt
合計 20480
-rw-r--r-- 1 nfsnobody nfsnobody 10485760 6月 16 20:07 2015 test.dat
-rw-r--r-- 1 nfsnobody nfsnobody 10485760 6月 16 20:10 2015 test2.dat


2. では、どうするか?

クラウド・コンテナ作成時に、「NFS/CIFSアクセスの有効化」のチェックボックスを外すこともできます。NFS/CIFS アクセスが不要な場合にはそれでよいのですが、NFS/CIFS アクセスが必要な場合、管理用 Web インターフェースから NFS/CIFS アクセスを有効化した時点で、自由にアクセスできる共有が作成されてしまいます。

そこで、この記事では、NFS において パブリック・アクセス設定を禁止して指定ホストのみにアクセスを限定すると共に、CIFS において、guest アクセスを禁止し、指定ユーザーのみにアクセスを限定します。


3. NFS 設定の変更

1) NFS パブリック・アクセスの禁止

管理用 Web インターフェースから、「ストレージ管理」→「ネットワーク共有」→「共有名の左側の三角」を順にクリックします。

[Public] という行が表示されますので、この行を右クリックし、「NFSクライアントアクセス権の削除」を選択します。確認のダイアログ・ボックスが表示されますので、表示内容を確認して、「OK」、「はい」ボタンを順にクリックします。

delete_public_access.png

この変更の結果、それまで可能であった パブリック・アクセスが禁止されることにより、NFS アクセスに失敗します。

# mount QuantaStorのIPアドレス:/export/QuantastorTestContainer /mnt

mount.nfs: access denied by server while mounting QuantaStorのIPアドレス:/export/QuantastorTestContainer

2) NFS アクセス権の追加

管理用 Web インターフェースから、「ストレージ管理」→「ネットワーク共有」をクリックし、さらに「共有名」を右クリックし、「NFSアクセス権の追加」を選択します。

アクセスをおこなうNFSクライアントのアクセスを追加するダイアログ・ボックスが表示されますので、IPアドレス、ネットワーク、ホスト/ドメイン名のいずれかで指定します。

add_nfs_access.png

この変更の結果、先ほど失敗していた NFS クライアントからの NFS アクセスが可能となります。

# mount QuantaStorのIPアドレス:/export/QuantastorTestContainer /mnt

# dd if=/dev/zero of=/mnt/test3.dat count=10 bs=1M
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 2.04684 s, 5.1 MB/s
# ll /mnt
合計 10240
-rw-r--r-- 1 nfsnobody nfsnobody 10485760 6月 16 21:28 2015 test3.dat


4. CIFS 設定の変更

1) CIFS のゲスト・アクセス禁止

管理用 Web インターフェースから、「ストレージ管理」→「ネットワーク共有」をクリックし、さらに「共有名」を右クリックし、「共有/CIFSアクセス権の変更」を選択して表示されるダイアログ・ボックスで 「CIFSユーザアクセス」タブを選択します。

change_cifs.png

cifs_uncheck_public.png

上記のダイアログ・ボックスのCIFS設定オプションから「公衆」のチェックを外し、「OK」ボタンをクリックします。

この変更の結果、それまで可能であった guest でのアクセスが禁止されることにより、CIFS アクセスに失敗します。

# mount.cifs //QuantaStorのIPアドレス/QuantastorTestContainer /mnt -o guest

mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

2) CIFS アクセス用役割(ロール)の作成

CIFS でアクセスする為のユーザーを定義しますが、その前に CIFS 経由でのアクセスのみを許可する役割/ロールを作成します。

まず、管理用 Web インターフェースから、「ユーザとグループ」→「役割」をクリックし、画面上部の「役割」のグループ中から「作成」をクリックします。

「役割の作成」ダイアログ・ボックスが表示されるので、役割の名前として「CIFS Access」を指定し、全ての許可範囲を None のままにした状態で、「OK」ボタンをクリックします。

3) CIFS アクセス用ユーザーの作成

管理用 Web インターフェースから、「ユーザとグループ」→「ユーザ」の「追加」をクリックします。ユーザー名として「CIFSuser」を、役割として 2) で作成した「CIFS Aacess」を指定し、パスワードを入力し、「OK」ボタンをクリックしてユーザーを作成します。

この変更の結果、3) で作成したユーザーでの CIFS アクセスが可能となります。

# mount.cifs //QuantaStorのIPアドレス/QuantastorTestContainer /mnt -o user=CIFSuser

Password:
# dd if=/dev/zero of=/mnt/test4.dat count=10 bs=1M
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 1.97035 s, 5.3 MB/s
# ll /mnt
合計 10240
-rw-r--r-- 1 1001 1001 10485760 6月 17 00:03 2015 test4.dat


5. まとめ

クラウド・コンテナのファイル共有作成直後に不特定多数からのアクセスを許してしまう短時間の状態は引き続き存在することには変わりはありませんが、上記に示す様な設定をおこなうことで、QuantaStor の省略時設定で作成したファイル共有をより安全に使用できるようになります。

参考:

QuantaStor Administrators Guide

QuantaStor Manager Web Admin Guide

http://wiki.osnexus.com/index.php?title=CIFS_Access_User

補足:

この記事の内容は以下のバージョンで検証したものです。

quantastor_version.png