システム ユーザー、sudo 権限、systemd
このトピックは Tableau Server のコンテキストでシステム ユーザー、systemd ユーザー サービスおよび sudo 権限について説明します。
権限の分離
標準的なセキュリティのベストプラクティスに従い、Tableau Server for Linux はできる限り権限が少ない状態でプロセスを実行します。インストールの際、権限なしのユーザーである tableau がサーバー認証グループ (tableau) に作成されます。
/etc/passwd ファイルでのユーザー入力の例を次に示します。
tableau:x:993:991:Tableau Server:/var/opt/tableau/tableau_server:/bin/bash
すべてのプロセスは権限なしの tableau ユーザーとして実行されます。これは、Tableau Server プロセスの 1 つ (viz (ビジュアライゼーション) をユーザーに表示するプロセスなど) が何らかの形で損なわれた場合、影響があるのは Tableau Server だけになり、残りの Linux システムには影響がないことを意味します。このため、tableau
権限なしユーザーを tsmadmin
グループに追加することはできません。tsmadmin
グループには、OS 関連の Tableau 構成にアクセスするために許可を必要とするアカウントのみを含める必要があります。
tableau
ユーザーおよび tsmadmin
グループが Tableau Server 初期化プロセスで作成されます。インストール時に、権限のない別のユーザーまたは TSM 承認グループを指定できます。インストールと LDAP 構成のコンテキストでのシステム ユーザーとグループの詳細については、アイデンティティ ストアを参照してください。
sudo 権限
Tableau Server on Linux の最初のバージョン (10.5) は、sudoers ファイルを更新することにより sudo 権限に依存しています。sudoers ファイルの更新は、システム管理構成のベスト プラクティスやセキュリティ ポリシーの一部と競合します。このため、2018.1 バージョン (以降) の Tableau Server では、権限のあるユーザー (tsmagent
) の作成や使用が行われなくなりました。現在のバージョンの Tableau Server でも Tableau に固有の sudoers ファイルを更新したり、それが含まれることはなくなります。
現在、すべての権限操作はパッケージとソフトウェアのインストールの際に行われます。
systemd ユーザー サービス
10.5 バージョンの Tableau Server on Linux では、sudo 権限が TSM サービスの変更や再起動に求められ、systemctl コマンドを必要としました。すべての TSM サービスは通常のシステム全体の systemd プロセス (process ID 1
、オペレーティング システムですべてのプロセスを実行する) から実行されました。このスキームでは systemd プロセスを root として実行します。このため、10.5 バージョンの Tableau Server は sudo 権限を必要としました。
現行の 2018.1 (以降) のリリースに伴い、systemd 権限を活用してユーザー サービスとして実行することで、sudo 権限の必要性をなくしました。systemd ユーザー サービスは通常ユーザーとして実行するため、一度有効にすると特別な権限は必要ありません。
通常の使用事例では、TSM により systemd へのコマンド発行が処理されるため、ユーザーがこれを行う必要はありません。ただし、トラブルシューティング シナリオの場合には TSM サービスを操作する必要がある場合があります。これまでのバージョンと同様、ユーザーはこれらのシナリオで同様の systemctl コマンドを発行します。とはいえ、コマンドは root としてではなく、tableau
ユーザーとして実行する必要があります。Tableau Server のセットアップ中に権限のない別のシステム ユーザーを指定した場合、そのユーザーとしてコマンドを実行します。
systemctl コマンドの実行
systemctl コマンドを使用して systemd にリクエストを発行するには、以下の構文例を使用します。
権限なしのユーザーとしてセッションを開始します。環境変数を適切に設定するには -l
フラグが重要です。
sudo su -l tableau
その後、コマンドを発行します。例は次のとおりです。
systemctl --user status tabadmincontroller_0
systemctl --user restart tabadmincontroller_0