【パブリッシャー】ファイルシステムをクエリしてみる

Sharperlightで作成するクエリはデータベースだけではなく、ファイルシステムに対しても実行することができるので、その機能を試してみようと思います。
### セキュリティ ###
初めにフォルダのセキュリティに関する設定をします。サーバー上のどのフォルダでも自由にアクセスできるとういうのはちょっと問題なので。
[Sharperlight](https://sharperlight.jp/)アプリケーションメニューから**サイトセットアップ**を起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/ce8c3984-8472-49c9-1c9a-696c883303bb.png)
サイトセットアップのダイアログが起動したら、`プロダクトの設定`の`システム`を選択します。右側にプロパティ一覧が表示されるので、以下の２つのプロパティを確認します。（日本語訳の見直しが必要ですね、すいません。:bow_tone1:）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/22ffef90-9698-7377-bd0c-c03fd1517e5a.png)
- **スケジューラのフォルダー内のファイルを許可します**
- **セキュリティで保護されたフォルダー**

**スケジューラのフォルダー内のファイルを許可します**プロパティは、スケジューラやクエリビルダからのアクセスに対して機能します。それに対して**セキュリティで保護されたフォルダー**プロパティは、**RESTfulサービス**経由のアクセスに対して機能します。
**RESTfulサービス**経由のアクセスとはこのようなURLを使用したアクセス方法です。
```
http://{サーバー名}/mdService1Rest/File/Trusted/{ファイルパス}
http://{サーバー名}/mdService1Rest/File/Secured/{ファイルパス}
```
これらのプロパティに、アクセスを許すフォルダを指定することで、フォルダに対するセキュリティを高めることができます。
### 検証準備とクエリの作成 ###
先ず同じ画像ファイル (Jacaranda.JPG) を以下のフォルダに保管します。
- C:\Bin\
- C:\Temp\QiitaSample\ResourcesA\
- C:\Temp\QiitaSample\ResourcesB\

次に検証用のクエリ（Webレポート）を作成します。
Sharperlightパブリッシャーで新規レポートを開始、**コード**、**グループ**、**タイトル**を記入します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/b4bdd8eb-a497-fc87-e563-36d0dd9276f5.png)
クエリの作成をします。`モード`は**詳細レポート**、`製品`は**システム**、`テーブル`には**ファイルの一覧**、`フォルダー`には**C:\Temp\QiitaSample\ResourcesA**をそれぞれ設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/fc93f4d2-b9d2-ef9d-bb7e-2bbb43b73441.png)
出力設定は、全てのフィールドを出力するようにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/b763236c-9042-4417-b957-30f688ba60a0.png)
更に拡張表現を使用して、RESTfulサービス経由での画像へのアクセスを追加します。ファイルパスは固定にしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/a81f405a-36a1-d2a6-2f65-1eda43020a4c.png)
```
"<img border=0 src='{_System.Rest.URL}File/Secured/C:\Temp\QiitaSample\ResourcesA\Jacaranda.JPG{_System.Rest.Usid}'" 
 + "' width='120' height='120' />"
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/e9790346-233b-1b2d-4704-1f807d715b19.png)
`OK`ボタンでクエリを保存、さらのWebレポートも`OK`ボタンで保存します。
### 検証 ###
##### プロパティ未設定（初期設定） #####
サイトセットアップのフォルダセキュリティに関するプロパティに何も設定していない状態（初期状態）で、この作成したWebレポートを閲覧してみます。パブリッシャーのWebレポート一覧から先ほど作成したレポートを選び、右クリックメニューから**レポートの表示**を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/2f5d4ffc-fe0c-faad-0c79-90c2e3b16601.png)
Sharperlightサービスが走っていれば、レポートは正常に表示されます。
プロンプトが表示されるので`送信`ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/fe66bdac-fd15-7ac5-381c-2c447f5a76c2.png)
結果はこのようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/cc1fc97b-b5d0-1d76-9b57-ecdd93657ec1.png)
##### "セキュリティで保護されたフォルダー"プロパティにフォルダを指定 #####
プロパティの設定変更を行った場合は、必ずSharperlightサービスを再起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/2b59d6dc-733d-cf47-88a8-452e4ebf6576.png)
レポートの出力結果は以下のとおりです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/5439b769-06d2-7c50-d6a8-19c2a36f33b2.png)
クエリの拡張表現を変更して、ファイルのパス列の値を使用するようにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/f3dd8ad3-c9cd-add5-43b6-35d7a40e756e.png)
レポートの出力結果はこのようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/2afe6a8a-ed5a-6f79-8313-94ff33973315.png)
RESTfulサービス経由でのアクセスURLを、ブラウザに直接貼り付け、更に許可を与えていないフォルダを指定すると、このようなメッセージが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/546e4099-a272-ef94-e35c-055d5032335e.png)
##### "スケジューラのフォルダー内のファイルを許可します"プロパティにフォルダを指定 #####
今度は**スケジューラのフォルダー内のファイルを許可します**プロパティに`C:\Bin\`を設定します。Sharperlightサービスの再起動を忘れないように。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/1b66b539-2b13-3a35-6877-f06e160ab693.png)
レポートの出力結果は以下のとおりです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/b9c29199-7901-3f89-9866-fd8ea6559cfb.png)
レポートのフィルターを**C:\Temp\QiitaSample\ResourcesB**としてみます。
結果は、両方のプロパティで指定されたフォルダ以外にアクセスされたので、アクセスが拒否されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/4f4515eb-71a3-63aa-729f-2f5511173fd6.png)

このようにサイトセットアップのプロパティを使用して、サーバーのファイルシステムへのセキュリティを構築することができます。
今回は説明のためURLにファイルパスを直接読める型で記入しましたが、暗号化したファイルパスを扱うオプション`/SecuredEnc/`もあるので大事な書類等にアクセスさせる場合は、そのオプションを使用してくださいね。
```
http://{サーバー名}/mdService1Rest/File/SecuredEnc/LzZ5ZnVFWM1c5L0p2WHdveVBxdQ==?usid=c3eb64b5038d419b903f86d9d9b110f0Z
```

では、失礼します。