クラウドストレージとは、クラウド上にあるストレージにデータを置くことで、社内の PC やスマホなどから任意のデータにアクセスすることができる機能を持つサービスのことをここでは定義します。一般的には iCloud や Google Drive などのことを言います。
個人利用であれば選択肢も数多くあり、One Drive や BOX など容量制限はあれど無料で使用できるものもたくさんありますが、企業で使うとなるとパブリッククラウドにデータを置くのは躊躇してしまいがちで、生産性が失われてしまうこともあります。特にセキュリティについては気を付けないと、企業情報が漏洩してしまい、社会的信頼が失墜しビジネスに大きなダメージを与えかねません。特筆すべきは BOX で、容量無制限でセキュリティの高いサービスを選択することもできます。しかし、肝心なデータは社外、いわゆるパブリッククラウド側に保存されます。どうしても、社内にデータを置き、それをスマホ等からアクセスできるような画期的なソリューションがないものか・・・。
ということで、ここでは nextCloud を紹介します。
nextCloud はオープンソースのクラウドゲートウェイアプリケーションで、日本ではスタイルズさんが商用販売を行っており、保守も購入することができます。nextCloud は IP 制限や保存するファイル領域を自社のセキュリティ要件に沿って構築することが可能で、既存のファイルストレージや Active Directory などの認証サーバを連携することもでき、簡単にクラウドストレージとしてスタートすることができます。
nextCloud には「Community Edition」「Standard Edition」「Enterprise Edition」の 3 つのエディションがあり、このうち「Standard Edition」と「Enterprise Edition」には日本語による保守サポートが付いています。「Standard Edition」は「Community Edition」に保守サポートが付いたもの、という見方でも問題ないかと思います。この 2 つのエディションは AGPL に基づいていますので、基本的にソースに改修が生じた場合は公開する義務が発生します。「Enterprise Edition」はユーザ数に伴う年間サブスクリプションライセンスで、「Standard Edition」にはないエンタープライズ機能も付随しており、企業向けとして使うには、こちらの「Enterprise Edition」がおすすめです。
基本的に利用される機能としては、社内で使っているファイルサーバのデータをスマホなどで社外からもアクセスでき、設定により特定のファイルを他の方にダウンロードリンクというカタチで提供できる機能も持っています。また、PC にツールを導入して自動的に PC にあるデータと同期をとることも可能なので、データのバックアップとしても活用できます。
既に DellEMC パートナーである図研ネットウエイブさんが既存 Isilon(ファイルサーバ) に ownCloud(nextCloud の前身) を接続する評価検証しており、ホワイトペーパーを提供しています(https://owncloud.jp/contacts/emc_isilon_solutionsreport)ので、既存で Isilon をお使いのお客様はスグにクラウドストレージとしてスタートすることができます。
もちろん、Isilon をお使いでないお客様も、ご検討中のお客様も対応できますので、お気軽にお問い合わせください。
Isilon をご存知ない方のために代表的な機能と特長をご案内します。
ノードを追加して容量とパフォーマンスを同時に拡張できるスケールアウトアーキテクチャを採用しており、サービスを停止することなく、容易に容量とパフォーマンスを拡張することができます。当初から将来を見越して大きなシステムを準備する必要はなく、最小 3 ノードからスタートでき、ビジネスが大きくなった(この調子だと、容量やパフォーマンスが足りなくなる!と気付いた)時点で拡張を検討することができます。具体的には数十PBの容量、最大900万回/秒のファイル操作を実行できるパフォーマンス、540GB/秒超の総スループットへの拡張をすべて1つのファイルシステムで実現できます。ノードの追加に要する時間は約1分。ビジネスニーズに合わせて、IT部門の負荷を増やすことなく、容量とパフォーマンスを柔軟に拡張できます。
ノードを増やすことでアクセスポイントも増えますが、どこからアクセスしても同じデータにアクセス可能です。スマートコネクトを使い、代表アドレスにアクセスすることで、一番負荷の少ないアクセスポイントに Isilon が自動的に誘導してくれます。ひとつのファイルはデータとしてバラバラになり、効率よくノードに分散されます。これにより、ドライブ障害、ノード障害が起こってもデータが保護され、サービスが継続できます。
ストレージの利用効率が高く、80%超えを実現します。また、Isilon SmartDedupe データ重複排除機能により、重複したデータが含まれる環境においてストレージ容量を最大30%縮小できます。効率性に優れたIsilonストレージシステムは、他のストレージシステムよりも少ない物理ストレージとスペースでデータを保存できるため、初期設備投資と維持コストの両方を削減することが可能となります。
Isilonは、業界最高レベルの信頼性、可用性、保守性を提供します。高速で効率的なデータのバックアップとリカバリのために、特定のRPO(目標復旧時点)に応じて、柔軟にスナップショットを取得することができます。Isilonは、信頼性の高い災害復旧を実現するために超高速なデータレプリケーション機能とシンプルなファイルオーバー/フェイルバック機能を備えており、ミッションクリティカルなアプリケーションのデータ可用性をさらに高めます。
ここでは、簡単に DellEMC ストレージに接続できる、という構築検証をご紹介します。なるべくお金をかけずに動作検証しようと思うと Isilon は使えないため、代わりに DellEMC ECS というオブジェクトストレージを使います。nextCloud の方は、AWS の Market Place にリストアップされていて、EC2 の料金とソフトウェア($0.1/h)しかかからないため、こちらに構築します。また、どうしてもモバイルからのテストなどを考えると、インターネットから nextCloud にアクセスする必要があり、自由にできる仮想環境も持ち合わせていないので、パブリッククラウドに環境構築します。 まずは、Work Space でクライアントとアクティブディレクトリサーバを作ります。こちらは、最初の 1 ヵ月は無料で構成できるので、こちらを選択しました。Work Space の構成方法は割愛します。コツとしてはアクティブディレクトリサーバを作成する際「AWS Managed Microsoft AD」を選択くして作成することです。他の選択肢「Simple AD」ですと samba で簡易的なものが作成されますし「AD Connector」としてしまうと既存のものと接続ということになり閉じた世界での構成ができなくなります。また、ここで作成されたセキュリティグループを EC2 で作成したサーバと連携するため、記録しておきます。
ストレージ部分は、ECS のテストドライブ(https://portal.ecstestdrive.com/)で作ります。こちらは、DellEMC が開発者用に ECS をテスト的に開放しています。アカウント登録し、ECS のクレデンシャルを取得します。
AWS 側に nextCloud を構築します。Market Place に nextCloud がありますので、構築は簡単です。今回は「TurnKey Linux(HVM)」を選択してみました。
作成時のウィザードで変更した部分はインスタンスタイプとセキュリティグループです。インスタンスタイプは t2.micro にグレードダウン、セキュリティグループは Work Place に合わせました。セキュリティグループには https(443) が空いていないので、anywhare アクセス OK に設定します。
手順通りにサーバへ admin ユーザで ssh アクセスし、セットアップを行います。まずは admin 自身のパスワードを設定します。
次に MySQL(データベース) adminer のパスワードを設定します。
次に nextCloud の admin のパスワードを設定します。
次に nextCloud のサーバ名を設定します。
ココ大事です。このアドレスで Web アクセスしないと入れません。
なんか API キーを求められますが、ここはスキップ。きっと、あとでもできる、と思い。
セキュリティアラート用にメールアドレスを登録しろっぽいことを聞いてきますが、ここもスキップ。
動かす前に nextCloud のアップデートをしろ、と来ます。これはこのサーバがそとへの接続を許可するセキュリティグループの設定になっているので「install」を選んでアップデートを処理します。
そうすると、アップデートをネットワーク経由で実行し始めます。
アップデートが終わると再起動するか聞かれますので、ここは「reboot」を選んで再起動させます。
セットアップが完了してから https アクセスすると、アクセス権がなく怒られてしまいます。これは 初期設定で nextCloud のドメイン名を設定しましたが、そのアドレスにアクセスしないとログインできないからです。この設定を変更するためには nextCloud の config ファイルを修正しないと https でアクセスできないのですが、この config.php を探すのに苦労しました。(/var/www/nextcloud/config/config.php)
netstat によると https は apache でしたので、/etc/apache2/apahe2.conf を覗くと 最下行に virtual host の設定があり /etc/apache2/sites-enabled の *.conf を読んでいる設定がありました。
/etc/apache2/sites-enabled/nextcloud.conf を見ると、443 のアクセスは /var/www/nextcloud/ を見ているようでしたので、調べてみると /var/www/nextcloud/config/config.ph を発見したので、表示してみる。
別に nextCloud の config を変更しなくてもアクセスできるようにするため、config 変更はとりやめ、DDNS を設定することにしました。
今回は Free の dynu.com を使いましたので、ddclient を apt でインストールして IP アドレスを ddclient で更新できるように設定します。(ddclient とインストールする前に dynu.com でドメイン名を取得しておく必要があります)
インストールすると初期設定が走るので、事前に登録しておいた DDNS 名やクレデンシャルを入力して完成させます。
この設定が終わると、ddclient を実行したときに AWS のグローバルアドレスで指定したドメイン名の IP アドレスを更新します。この作業はサーバ起動時に起動するのように設定されるので、都度 ddclient を実行する必要はなく、サーバを起動するだけでドメイン名が設定されるようになります。
既定のアカウント admin でログイン、パスワードは最初の初期設定で設定した admin のパスワードを入力します。
とりあえず、一番最初にすべきは日本語表示。
ページ右上にあるアカウント名をクリックし「Settings」を選択。
画面右上あたりに「Language」があるので、プルダウンメニューから 「Japanese(日本語)」を選択。
即時反映を確認。
一般企業での使われ方を想定して、ownCloud を Active Directory(AD) 連携でユーザ認証するようにします。ここでは構築手順は割愛しますが、社内を想定して AD サーバを建てました。ここで構築された AD は外向けのサービスは行わないため、AWS のルールに従い RDP のポートだけ Firewall には通貨の許可をしたものを使います。
ブラウザから nextCloud に admin でログインし、左上のメニューから「+アプリ」を選びます。
一番下までスクロールさせると「LDAP User and group backend」がありますので「有効」にします。
有効にするためには admin のパスワードを入力する必要があります。
そうすると、こんな感じでインストールされたことがわかります。(ボタンが「無効」になってます)
設定メニューに戻ると、「LDAP/AD 統合」というメニューが増えているのがわかります。
ここから nextCloud の LDAP 設定に入るのですが、ちょびハマリました。AWS のセキュリティ設定を変更し、nextCloud のセキュリティグループから Windows Server へのすべてのトラフィックを通過させるように設定変更しました。
nextCloud で AD 連携する場合、DN 設定が必要なのですが、AD の場合どのようなつくりになっているのかわからず、とりあえず Windows 側で調べてみることにしました。
AWS のインスタンスから調べた internal ip アドレスを入力し「ポートの検出」をクリックすると、ちゃんと 389 と出てきました。
「ユーザDN」には、さきほど Windows 側で調べた DN を入力し、Administrator のパスワードを設定します。念のため「資格情報を保存」をクリックします。
うまくいかないので、いろいろ試してみる。とりあえず、ldapsearch コマンドをインストールしてみる。
admin@nextcloud ~$ sudo apt-get -y install ldap-utils
admin@nextcloud ~$ ldapsearch -x -D "CN=Administrator,CN=Users,DC=dellemc,DC=lab" -h 172.31.23.10 -b "CN=Users,DC=dellemc,DC=lab" "(objectclass=*)" "sAMAccountName=Administrator"
# extended LDIF
#
# LDAPv3
# base <CN=Users,DC=dellemc,DC=lab> with scope subtree
# filter: (objectclass=*)
# requesting: sAMAccountName=Administrator
#
# search result
search: 2
result: 1 Operations error
text: 000004DC: LdapErr: DSID-0C090A37, comment: In order to perform this opera tion a successful bind must be completed on the connection., data 0, v4563
admin@nextcloud ~$
ようやくわかりました。Administrator アカウントではダメっぽいので、LDAP 用のアカウント(padl)を作りました。
admin@nextcloud ~$ ldapsearch -x -w xxxxxxxx -D "CN=padl,CN=Users,DC=dellemc,DC=lab" -h 172.31.23.10 -b "CN=Users,DC=dellemc,DC=lab" "(objectclass=*)" "sAMAccountName=Administrator"
# extended LDIF
#
# LDAPv3
# base <CN=Users,DC=dellemc,DC=lab> with scope subtree
# filter: (objectclass=*)
# requesting: sAMAccountName=Administrator
#
# Users, dellemc.lab
dn: CN=Users,DC=dellemc,DC=lab
などなど、たくさん表示されました。
# Guest, Users, dellemc.lab
dn: CN=Guest,CN=Users,DC=dellemc,DC=lab
# search result
search: 2
result: 0 Success
# numResponses: 27
# numEntries: 26
admin@nextcloud ~$
と、いうことで Administrator ではなく padl ユーザでアクセスするように変更しました。
ようやく出てきてくれました。「設定が不完全です」と表示されますが、無視して「続ける」をクリックします。
とりあえず、Domain Users だけに利用を絞ってみる。そして「続ける」。
AD のアカウント名でログインさせようと思うので、デフォルトのままから変更せず。「続ける」。
本当はグループでログインを制限してみたいけど、今回の動作検証はソコじゃないから、デフォルトのままにしておきます。
さて、Active Directory ユーザでログインできるか、検証。Administrator をログアウトし、ログイン画面から AD のユーザでログインしてみる。
おめでとうございます!
いやいや、ここからが本番なんです。わたし、ストレージの会社に勤めてまして、ストレージ連携を試しておかないといけないんです。ここからは、丁寧に行きます。
今回は外部のストレージとして ECS テストドライブを利用します。
ECS テストドライブとは、ECS を持っていなくてもオブジェクトストレージとしてお試しで使うことができるものです。アカウントさえあれば ECS(オブジェクトストレージ)を無料で使うことができます。
テストドライブで ECS を使うためには、アカウントの登録さえすれば簡単に利用できるようになります。まずは、「GET STARTED」からアカウント登録します。
メールアドレスやパスワード~電話番号まですべて入力後、「REGISTER」をクリックします。そうすると、完了画面に変わります。
これで完了です。あとは ECS を使うためのクレデンシャルを得るために、ログインします。画面右上に「LOG IN」がありますので、そこから先ほど登録したメールアドレスとパスワードでログインし、画面が変わると右上のメニューが変わります。「LOG OFF」のとなりに「CREDENTIALS」がありますので、クリックするとあなたが使える ECS のクレデンシャルが表示されます。
アカウント名から「+アプリ」をクリックし、一覧から「External storage support」の「有効にする」をクリックします。
有効になると「External storage support」が「無効にする」ボタンに変わります。
アカウント名から設定をクリックし External storage の設定を行います。
左側のメニューにある「外部ストレージ」をクリックし、外部ストレージの設定ページを表示させます。
外部ストレージを「S3」で設定します。ECS では S3 のクレデンシャルをそのまま設定できます。ただ、nextCloud では、ちょっとコツがいります。
バケット名は、アクセスするためのフォルダ名のようなものですので。ここでは backet という名前にしました。
ホスト名は、ECS テストドライブのクレデンシャルで表示された Endpoint ですが先頭の https:// を削ったホスト名だけを入力します。
ポートとリージョンは情報がないので、スキップ。特に入力必須項目でもないので、なくても大丈夫です。
一応 https アクセスするので「SSLを有効」にチェックを入れます。
アクセスキーには ECS テストドライブで表示された AccessKey を入力します。
シークレットキーには ECS テストドライブで表示された SecretKey1 を入力します。いわばパスワードなので表示上はマスクされます。
全部入力し終わったら、右側の✅をクリック、クレデンシャルを評価してくれます。
正しく入力されていれば、左側に緑色のチェックが表示されます。
ちなみに WinSCP で S3 に接続してファイルを操作できるので、この時点で ECS テストドライブの中身がどうなっているか確認します。
セッションの登録でホスト名に http:// から始まる Endpoint を入力するとポート番号を含む情報に自動変換されます。アクセスキーには AccessKey を、シークレットキーに SecretKey1 を入力し保存します。
接続するとトップが表示されますが、先ほど nextCloud で設定したトップにあるバケットの backet が表示されています。
Admin でファイルを表示してみると、改めて「ECS」というフォルダが作成されていることがわかります。
実験してみます。ECS の下に admin というフォルダを作成し、jpg ファイルを nextCloud インターフェースからアップロードします。
WinSCP から確認すると backet の下に admin ができています。その中を覗くと jpg ファイルがありますので、表示させてみます。
ファイルを一旦テンポラリにコピーされ、表示れます。
Windows 用のアプリケーションもあり、便利です。
共有も簡単。
スマホアプリもあり、こんな感じに表示されます。