시스템 사용자, sudo 권한 및 systemd
이 항목에서는 Tableau Server의 컨텍스트에서 시스템 사용자, systemd 사용자 서비스 및 sudo 권한에 대해 설명합니다.
권한 분리
표준적인 보안 모범 사례에 따라, Linux용 Tableau Server는 가능한 최소한의 권한으로 프로세스를 실행합니다. 설치 중에 권한이 없는 사용자(tableau)가 서버 권한 그룹(tableau)에 생성됩니다.
/etc/passwd 파일의 예제 사용자 항목은 다음과 같습니다.
tableau:x:993:991:Tableau Server:/var/opt/tableau/tableau_server:/bin/bash
모든 프로세스는 권한 없는 tableau 사용자로 실행됩니다. 즉, Tableau Server 프로세스 중 하나(예: 사용자에게 Viz를 표시하는 프로세스)가 특정 방식으로 손상된 경우 Tableau Server에만 영향을 줄 수 있으며 나머지 Linux 시스템은 영향을 받지 않습니다. 그러므로 tableau
라는 권한 없는 사용자를 tsmadmin
그룹에 추가해서는 안 됩니다. tsmadmin
그룹에는 OS 관련 Tableau 구성 액세스에 대한 권한 부여를 필요로 하는 계정만 포함되어야 합니다.
tableau
사용자와 tsmadmin
그룹은 Tableau Server 초기화 프로세스를 통해 만들어집니다. 설치 중에 다른 권한 없는 사용자 또는 TSM 권한 부여 그룹을 지정할 수 있습니다. 설치 및 LDAP 구성과 관련된 시스템 사용자 및 그룹에 대한 자세한 내용은 ID 저장소를 참조하십시오.
sudo 권한
Linux 기반 Tableau Server의 첫 번째 버전(10.5)은 sudoers 파일을 업데이트하는 방식으로 sudo 권한을 사용했습니다. sudoers 파일을 업데이트하면 일부 시스템 관리 구성 모범 사례 및 보안 정책과 충돌합니다. 따라서 Tableau Server 2018.1 버전(및 이후 버전)에서는 더 이상 권한이 있는 사용자(tsmagent
)를 생성하지 않습니다. 또한 최신 버전의 Tableau Server는 Tableau 관련 sudoers 파일을 업데이트하거나 포함하지 않습니다.
이제 모든 권한 작업은 패키지 및 소프트웨어 설치 중에 발생합니다.
systemd 사용자 서비스
Linux 기반 Tableau Server 10.5 버전에서는 systemctl 명령이 필요한 TSM 서비스를 수정하거나 재시작하기 위해 sudo 권한이 필요했습니다. 모든 TSM 서비스는 일반적인 시스템 전체 systemd 프로세스(process ID 1
, 운영 체제에서 모든 프로세스를 실행함)에서 실행되었습니다. 이 구조에서는 systemd 프로세스가 루트로 실행됩니다. 따라서 Tableau Server 10.5 버전에는 sudo 권한이 필요했습니다.
최신 2018.1(및 이후) 릴리스에서는 systemd 기능을 사용하여 사용자 서비스로 실행되도록 만들어 sudo 권한이 필요하지 않습니다. systemd 사용자 서비스는 일반 사용자로 실행되므로 사용하도록 설정된 후 특별한 권한이 필요하지 않습니다.
일반적인 사용 사례에서는 TSM이 자동으로 처리하므로 systemd 명령을 실행할 필요가 없습니다. 하지만 문제 해결 시나리오에서는 TSM 서비스와 상호 작용해야 할 수 있습니다. 이러한 시나리오에서는 이전 버전과 마찬가지로 systemctl 명령을 실행합니다. 하지만 이 경우 루트가 아닌 tableau
사용자로 명령을 실행해야 합니다. Tableau Server 설치 중에 다른 권한이 없는 시스템 사용자를 지정한 경우에는 해당 사용자로 명령을 실행하십시오.
systemctl 명령 실행
다음 구문 예를 사용하여 systemctl 명령으로 systemd에 요청을 제출합니다.
권한이 없는 사용자로 세션을 시작합니다. 환경 변수를 적절하게 설정하려면 -l
플래그가 중요합니다.
sudo su -l tableau
그런 다음 명령을 실행합니다. 예를 들면 다음과 같습니다.
systemctl --user status tabadmincontroller_0
systemctl --user restart tabadmincontroller_0