ソフトウェア

SAS University Editionで解析サーバの構築

これも勉強ということでCentOS7にSASサーバを立てた。(そもそもそれ自体がSASにしては意外と簡単でびっくりする)

ただ、これはライセンスの関係もあって誰のどのPCにも適用できる汎用性がないので、試しにSAS University Editionも立ててみた。
SAS University Editionの場合には無料なので、外部などで急用でとりあえず触るには実にちょうどいい。

CentOS7でVirtualBoxを入れる。

$ wget https://download.virtualbox.org/virtualbox/rpm/el/virtualbox.repo -P /etc/yum.repos.d
$ yum install VirtualBox-x.x

バージョン指定がわからないならyum search VirtualBoxとでもすればインストールできるバージョン一覧が出てくる。
SAS University Edition自体は.ovaファイルをSASからダウンロードしてきて、インストールしたVirtualBox上にインポートすればいい。

インポートして立ち上がったら、
http://localhost:10080/
にアクセスすればあとはこんな感じで表示される。

この画像にもあるけど、あと共有フォルダの設定が必要なので、

$ mkdir ~/SASUniversityEdition/myfolders

してからVirtualBoxの設定から共有フォルダに追加しておく。

これだけやればまずはUNIX上で直接触る設定はOK。

dockerでJupyterやRStudioを走らせている時と違って、LAN内の別PCから
192.168.0.2:10080
にアクセスしてもなぜか表示されない。

試しにMacのネットワークユーティリティからポートスキャンをかけてみたところ、ポートが開いていなかった。

$ firewall-cmd --zone=public --add-port=10080/tcp

これでポートが開くので、もう一回ポートスキャンかけると、

これでアクセスできる。
ちなみにこの状態でグローバルIPにさらすと終わるので決してやってはいけない。SAS StudioにせよJupyter Labにせよアカウントによるアクセス制限がかかっていないので計算し放題だし保存されているデータにもアクセスし放題となる。そういうことをやりたいならSAS Mid-Tierとかを契約しないといけないんじゃないかな(公式”Working in a Multi-User, Multilingual Environment”見るとThe SAS Studio Mid-Tier (also called Enterprise) edition and the SAS Studio Basic edition enable multiple users to access SAS Studio.って書いてあるけどUEはSAS Studio Basic Editionなのかという疑問もある。UEの場合だと環境変数とかは一切いじれないので、そんなものでマルチユーザとかできるとは思えん)。

もしSAS UEをグローバル環境に晒したいのであれば、例えばうちの研究室のように(他にも色々とセキュリティ対策は施しているものの、)まず最低限アクセス元のIPアドレス+ポート番号をホワイトリストで設定するとかしないとまずい。もっというとログイン式の固定IPのVPN使うとか。大学ならアクセス元IPを大学から払い出されるグローバルIPの範囲内に収めた上で学内VPNからしかアクセスできないようにするとか。

んでVirtualBoxのVM立ち上げをsshで外部からコマンドでやれるようにしておけばいい。すると、外部からでも解析する前にSSHでつないでインスタンスを立ち上げて、使い終わったら落とす形にできる。手動にはなるもののセキュリティという面ではいい。

AWSにElasticIP取得してグローバルネットワーク上のJupyter HubにID+PWで、とかっていうのは正直怖い。JupyterのログインPWを100文字ぐらいにしてもまだ怖い。あれもアクセス元の指定をしないと怖いが、いろんな人がアクセスする環境なので制限がしづらいという問題もある。