Azureにて検証用Tableau Server（Windows Server）の構築手順（SSL設定あり）

## 概要
Azure IaaS（Windows Server）にて、検証用Tableau Serverを構築する手順を紹介します。
本手順はあくまで14日間の検証目的であることから、下記に示すような最低限のセキュリティ要件のみ満たすことを想定しております。

- パブリックネットワーク経由で、自分のIPアドレスのみの制限を行います
- 自分で証明書を作成するため、ブラウザで警告がでます
- インバウンドのPortをすべて解放します


## バージョン
- Tablaeu Server 2020.02
- Widnows Server 2019

## Azure Marketplace VMを利用しない理由について
2020年7月10日時点において、Azure Marketplace VMにインストールされているTableauが、10バージョンであるため、自己展開により構成することとしました。
また、Azure においては下記図に示されている通り、自己展開開するしかない状況です。

> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/7584653b-bd47-b36a-49ab-262e567d2084.png)

引用元：[Tableau Server on Microsoft Azure 展開オプション](https://help.tableau.com/current/server/ja-jp/ts_azure_deployment_options.htm)

## 手順
### 1. AzureにてＶＭ作成とTableau Serverのインストール
1-1. Azureポータルにて、VMの新規リソース作成を選択し、下記の設定をします。

| 番号 | 項目       | 設定値                        |
| ---- | ---------- | ----------------------------- |
| 1    | イメージ   | Widnwos Server 2019 Datacenter          |
| 2    | サイズ     | DS13_v2                       |
| 3    | 受信ポート | http(80),https(443),RDP(3389) |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/9ffe938b-7ab6-579e-26ff-83ee79702af3.png)

1-2. "ネットワーク"→"パブリックIP"→"新規作成"を選択し、"割り当て"を"静的"に設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/cce20f86-f566-2208-6397-1ea3044a07d8.png)

1-3. 必要に応じて、ブート診断をオフ、自動シャットダウンを設定の上、VMを作成してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/fca16ff3-0ed7-dd73-105f-639d2e087fcb.png)

1-4. "接続"→"RDPファイルのダウンロード"を選択し、RDPファイルをダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/bd50f42d-3cf5-321c-e971-bc53ecbcb63b.png)

1-5. RDPファイルを実行し、VMにリモートデスクトップ接続します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/c0b7ca6b-7ce1-2bef-978c-67ade12d3162.png)

1-6. "Server Manager"にて、"IE Enhanced Security Configuration"→"ON"をクリックし、"Administors"の設定を"off"にし、"OK"を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/84f37c3e-aaeb-1cc8-a447-9326084f93ed.png)

1-7. "Windows Defender Firewall"を起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/8025c57f-9f89-d255-ac99-ed94ed48f5e3.png)

1-8. "Advanced settings"を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/a7068104-444b-b1a3-7f54-b5ce946098aa.png)

1-9. "Inbound Rules"→"New Rule"を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/7a52bf69-a8c2-4b17-e9a5-cb874cc27f6b.png)

1-10. "Rule Type"タブにて、"Port"を選択し、設定を進めます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/96e96e67-39dc-e842-5565-90390517e75d.png)

1-11. "Protocol and Ports"タブにて、"ALL local ports"をチェックし、設定を進めます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/311de495-8e12-d015-9170-9c2daf5c7bc5.png)

1-12. "Name"タブにて、"ALL local ports"とう名称を入力したうえで、"Finish"を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/5f9dca7f-4151-a523-8760-63bb40c2408d.png)

### 2. Tableau Serverのインストールと構成
2-1. ブラウザを起動し、Tableauのサイトに接続し、Tableau Serverのインストールメディアをダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/cb18ed6e-ef84-3287-f0a1-a0c45e0de5c7.png)

2-2. ダウンロードしたファイルを実行し、Tableau Serveをインストールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/bfcdb51a-8c47-a797-d97c-e47f506fb8f9.png)

2-3. 起動したTableau Services Managerにて、サーバーのユーザーでログイン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/0c11a655-36df-009c-2289-6f80f1ddf6c3.png)

2-4. "Start tableau Server Trial"を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/8e1b9dce-b9da-38e1-0dad-1f8ce8d0d6b2.png)

2-5. 適切な項目を入力後、"Register"を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/920b53b2-cff9-2129-d3a9-97621985d4ea.png)

2-6. "Identity Store"を"Local"に設定して、"Initialize"を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/4af2b502-5f3d-9d6b-6f17-691ca74766fb.png)

2-7. 処理が完了するまで待ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/43cc6d62-8386-6089-0ae6-9b28cf708e25.png)

2-8. Tableau Serverが起動後、ユーザーを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/e8e83fbc-0f2c-20f4-e866-8a7cb98e5c8a.png)

2-9. Azureポータルにて、VMのパブリックIPアドレスを手元に控えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/af7bec8d-e64b-0239-098b-626167198070.png)

2-10. クライアントのブラウザから、パブリックIPアドレスに接続し、Tablau Serverに接続できることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/48c8be47-f000-8f77-5b37-8553f68a36c5.png)

### 3. Tableau Serverへのクライアントからの接続をhttps接続に変更
3-1. VMにて、エクスプローラーを起動後、下記のパスに移動し、"Apache."ではじまるフォルダ名を手元に控えます。

```text
C:\Program Files\Tableau\Tableau Server\packages
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/1f536122-41ff-8ee9-5c7e-c1ef590d8609.png)

3-2. 下記のコマンドの一部（Apatchのバージョン）を書き換え、Windowsコマンドで実行します。

```text
set OPENSSL_CONF=c:\Program Files\Tableau\Tableau Server\packages\apache.<version_code>\conf\openssl.cnf
```
＜実際の例＞

```text
set OPENSSL_CONF=C:\Program Files\Tableau\Tableau Server\packages\apache.20202.20.0626.1424\conf\openssl.cnf
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/7515de5f-075f-7d5c-cd68-4f4da052c61c.png)

3-3. 下記のコマンドの一部（Apatchのバージョン）を書き換え、Windowsコマンドで実行します。

```text
cd C:\Program Files\Tableau\Tableau Server\packages\apache.<version_code>\bin
openssl.exe genrsa -out tableauserverssl.key 4096
```
＜実際の例＞

```text
cd C:\Program Files\Tableau\Tableau Server\packages\apache.20202.20.0626.1424\bin
openssl.exe genrsa -out tableauserverssl.key 4096
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/08ec3166-933b-4360-69b8-844e4fd3d9f4.png)

3-4. 下記のコマンドを、Windowsコマンドで実行します。Country NameにJP、Common NameにIPアドレスを設定して、それ以外の項目に適当な値を入力します。また、"A challenge password"は未入力とします。

```text
openssl.exe req -new -key tableauserverssl.key -out tableauserverssl.csr
```
![image-20200714162543324.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/cb0c4497-b114-882b-5461-43f32662bfe8.png)


3.5 下記のコマンドを、Windowsコマンドで実行します。

```text
openssl.exe x509 -days 30 -req -signkey tableauserverssl.key < tableauserverssl.csr > tableauserverssl.crt
```
![image-20200714162607235.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/5efe1345-55c0-0b39-c8bc-3ac4df001748.png)

3-6. エクスプローラーにて、"Apache."ではじまるフォルダにある"bin"に移動し、"tableauserverssl"、および、”tableauserverssl.key”があることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/b33f4fb5-2895-d422-c8c8-5baed29947e8.png)


3-7. エクスプローラーにて、下記フォルダに"SSL"というフォルダを作成し、"tableauserverssl"、および、”tableauserverssl.key”をコピーします。"tableauserverssl.csr"ではないことに注意が必要です。

```text
C:\Program Files\Tableau\Tableau Server
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/e11425bd-c286-c29c-4343-7c8a22cdc36b.png)

3-8. Tableau Server Managerにて、"CONFIGURATION"→"Security"→"Extrenal SSL"に移動し、"Enable SSL for server communication"にチェックを入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/cc201104-f934-f3f8-5399-6ed6d26a6aa5.png)

3-9. "SSL certificate file (Required)"の横にある"Select FIle"を選択し、 "tableauserverssl"が保存されているパスに移動し、"tableauserverssl"を選択し"Open"を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/47df2ac1-8741-aa0e-0b77-e162a976c103.png)

3-10. "SSL certificate key file (Required)"の横にある"Select FIle"を選択し、 "tableauserverssl.key"が保存されているパスに移動し、"tableauserverssl.key"を選択し"Open"を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/c942daaf-4f1d-1cf2-d4dc-b7d12d42fa5b.png)

3-11. "Save Pending Changes"を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/38d24be7-11fd-94b7-9d56-e5a0f7a65a86.png)

3-12. 右上に表示された"Pending Changes"を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/39f96884-8e19-fa07-771b-8e87a025bdf0.png)

3-13. "Apply Changes and Restart"を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/a540adc9-88d0-7951-9b17-eb5b03db8ba6.png)

3-14. 処理が完了することを待ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/3fa49cec-5ce9-bace-c3db-91db9f88ca0d.png)

3-15. クライアントのブラウザから、パブリックIPアドレスに接続し、"{IPアドレス}に進む（安全ではありません）"を選択します。この表示については、利用しているブラウザにより異なります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/fb59a3c4-4656-43a2-d6cb-fc7ccc3c3681.png)

3-16. Tableau Serverに接続できることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/a773c108-5773-aac8-3ffa-50fbc00c359c.png)

### 4. パブリックネットワーク経由の接続を自分のIPアドレスのみに制限
4-1. 自分のIPアドレスを調べ、手元に控えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/1cc7e681-388a-7b7b-3254-189faf1f9bab.png)
引用元：[アクセス情報【使用中のIPアドレス確認】 - cman.jp](https://www.cman.jp/network/support/go_access.cgi)

4-2. Azureポータルにて、VMの"ネットワーク"タブを選択後、"RDP"、"HTTP"、および、"HTTPS"の設定を下記に変更します。この変更については一括で実施できないため、個別に設定をお願いします。

| 番号 | 項目                         | 設定値           |
| ---- | ---------------------------- | ---------------- |
| 1    | ソース                       | IPアドレス       |
| 2    | ソース IP アドレス/CIDR 範囲 | 自分のIPアドレス |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/2eb682c3-c291-876f-6163-b5fbfc0809fd.png)

4-3. クライアントのブラウザから、パブリックIPアドレスに接続し、Tableau Serverに接続できることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/7dbf2e50-b3ae-d247-9fd0-9e70829a37d1.png)

### 5. Tableau Desktopからの接続を許可するためにクライアントPCに自己証明書を登録
5-1. サーバーから証明書をコピーして、証明書をダブルクリックして、"証明書のインストール"を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/1758eef3-9861-84cc-c9c6-c6b1c5ed10ba.png)

5-2. "ローカル コンピューター(L)"をチェックし、選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/e087fe4b-9bf2-b305-a96c-f013312aa3d8.png)

5-3. "証明書をすべて次のストアに配置する(P)"をチェックし、”参照”を選択し"信頼されたルート証明機関"を選択後、"次へ"を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/3cfd097b-d854-e184-32d7-de5453b1ebe6.png)

5-4. "完了"を選択します。その後、Tableau Desktopから接続できることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/d5eae72a-de1e-2cd6-867c-7e6f3e8cce1f.png)


## よくあるエラー
### 問題１. "3-9"の手順にて、"tableauserverssl.csr"をアップロードしてしまい、Tableasu Serverに接続できなくなること
解決策）SSL設定のリセットを行い、"tableauserverssl(tableauserverssl.crt)"を登録してください。このミスに気づけず、1日つぶしました。

### 問題2. Tableau Serverインストール時の検証にて、"Your system meets the system requirements for a trial of Tableau Server."という最小要件を満たしていないというエラーが
解決策）VMのサイズを変更してください。

**エラーメッセージ**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/32f60e02-79d5-ca9e-fb2f-6ddae399488e.png)

なお、vCPUの数が物理コア数と同一数ではないVMサイズもあることに注意してください。
Tableau Serverでは物理コア数が要件となっているようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/73588569-6fdc-c5dc-c88f-ead4625b6fcb.png)

> コア数は "物理" コアに基づいています。物理コアは実際のサーバー ハードウェアまたは仮想マシン (VM) 上のコアを表す場合があります。コア数のカウントの目的で、ハイパー スレッドは無視されます。

引用元：[Tableau Server の最小ハードウェア要件と推奨事項](https://help.tableau.com/current/server/ja-jp/server_hardware_min.htm)

### 問題3. Tableau Desktopから接続する際に、SSL証明書がないとエラーが表示されてします。
解決策）本手順では、証明書をインストールする手順で対応しております。
本番環境インストール時には、Tableau社ドキュメントを参照し、適切な証明書等の利用を検討してください。

```text
Unable to complete action
Cannot connect to Tableau Server.  Please check the server name and port and try again.
Error Code: 9F4C5638
Internet communication error: SSL peer certificate or SSH remote key was not OK
 (tableauvmtest).
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/825766e0-398b-ce83-e254-d14166200d85.png)
引用元：[Tableau Server にワークブックをパブリッシュするときのエラー "Internet Communication Error: SSL Connect Error (<ServerName>)"](https://kb.tableau.com/articles/issue/error-internet-communication-error-ssl-connect-error-servername-publishing-workbook-to-tableau-server?lang=ja-jp)

### 問題4. サーバーを日本語に設定できない。
解決策）下記記事記載の手順を実施してください。

- [［画像解説］日本語版Windows Server 2019をAzureに構築](https://www.hitoriit.com/entry/2019/02/18/080200)

## 参考リンク
- [Tableau Server との双方向の外部 HTTP トラフィック用に SSL を構成する](https://help.tableau.com/current/server/ja-jp/ssl_config.htm)
- [例: SSL 証明書 - キーと CSR の生成](https://help.tableau.com/current/server/ja-jp/ssl_cert_create.htm)
- [【Tableau Server】SSL化してみました](https://dev.classmethod.jp/articles/tableau-server-ssl/)