서버 암호 관리

Tableau Server에는 내부 통신 보안, 다른 응용 프로그램 또는 운영 체제와의 통신 또는 클라이언트와의 보안 통신 제공과 같은 다양한 기능을 수행하는 데 필요한 다수의 암호가 저장됩니다. 이 맥락에서 암호는 엔터티의 인증에 사용되는 암호, 토큰 또는 기타 문자열을 나타낼 수 있습니다.

Tableau Server를 실행하려면 두 가지 범주의 암호가 필요합니다. 범주는 암호의 생성 방법에 따라 구분됩니다.

  • 관리자가 생성한 암호. 여기에는 Tableau Server에서 사용되는 '서비스 계정 사용자' 계정의 자격 증명 및 연결된 암호와 SMTP 자격 증명이 포함됩니다.
  • 시스템의 다양한 프로세스를 통해 자동으로 생성된 암호. 예를 들어 클러스터 컨트롤러와 ZooKeeper 프로세스 간의 통신을 보호하려면 암호가 필요합니다. 또한 Postgres와 통신하는 각 서비스 및 프로그래밍 방식 사용자를 위한 다수의 서로 다른 암호가 필요합니다.

대부분의 암호는 유휴 시간 중에 암호화됩니다. 암호가 필요하면 실행될 때 암호가 해독됩니다.

이 항목에서는 암호 저장소의 작동 원리와 Tableau Server의 암호 저장소를 올바르게 관리하는 데 필요한 작업에 대해 설명합니다.

암호 저장소의 작동 원리 이해

설치 중에 Tableau Server는 마스터 키를 생성하고 Java 키 저장소에 저장합니다. 마스터 키는 시스템 전역에서 사용되는 구성 암호화 키를 암호화하는 데 사용됩니다.

새로 생성되거나 업데이트되는 모든 암호는 구성 암호화 키로 암호화됩니다. 암호화된 값은 해당하는 구성 매개 변수와 함께 서버의 YAML 파일에 저장됩니다. 암호화된 값을 포함하는 매개 변수는 ENC(<encrypted string>)를 사용하며 여기서 <encrypted string>은 Base64로 인코딩된 암호화된 문자열입니다.

실행 시 지정된 암호에 대한 액세스가 필요하면 암호화된 값이 메모리로 들어오고 구성 암호화 키를 사용하여 해독됩니다.

구성 변경 중에 암호를 입력한 보류 중인 변경 내용이 있는 경우 전체 트랜잭션이 암호화됩니다. 이 시나리오에서 암호를 입력한 후 보류 중인 변경 내용을 저장하면 암호가 (암호화된 SSL을 통해) 조정 서비스로 전송됩니다. 조정 서비스는 암호를 암호화하고 보류 중인 변경 내용이 적용될 때까지 저장합니다. 변경 내용이 적용되면 암호(아직 암호화된 상태)가 현재 구성 버전으로 수준이 올라갑니다.

Tableau Server는 GCM 모드에서 256비트 AES를 사용하여 암호를 암호화합니다. 저장소 보안에 사용되는 키는 리포지토리에 저장하기 전에 내장된 데이터베이스 자격 증명을 암호화하는 데 사용되는 자산 키와 다릅니다.

마스터 키에 액세스할 수 있는 사용자

기본 설치에서 Tableau Server의 Java 키 저장소는 해당 노드의 /var/opt/tableau/tableau_server/data/tabsvc/config 아래에 각 서비스의 /tabsvc/keystores 폴더에 복제됩니다.

예를 들면 다음과 같습니다.

/var/opt/tableau/tableau_server/data/tabsvc/config/tabadminagent_<version_number>/tabsvc/keystores/tableauserver.jks.

사용자 지정 설치 디렉터리를 사용하는 경우 keystore 파일은 아래 위치에서 찾을 수 있습니다.

<install directory>/tableau_server/data/tabsvc/config/<service name_#.version_number>/tabsvc/keystores

기본적으로 이 디렉터리에 액세스할 수 있는 사용자 및 그룹은 다음과 같습니다.

  • root
  • tableau(사용자)
  • 'tableau' 그룹의 멤버

구성 정보 가져오기 및 내보내기

Tableau 서비스 관리자에는 tsm settings export를 사용하여 구성 정보를 가져오고 내보내는 기능이 도입되었습니다.

참고: 이 버전의 Tableau Server는 백업의 구성 정보 복원을 지원하지 않습니다. 대신 내보내기 및 가져오기 구성 명령을 사용하여 구성 정보를 백업 및 복원하는 것이 좋습니다.

구성 암호는 내부적으로 디스크에 저장될 때 암호화되지만 구성을 파일로 내보낼 때 암호가 일반 텍스트로 파일에 기록됩니다. 이 파일을 보호하기 위한 조치를 취하는 것은 관리자의 책임입니다. 다음과 같은 다양한 옵션을 사용할 수 있습니다.

  • 파일을 암호화된 파일 시스템에 기록합니다.
  • 파일 시스템 사용 권한을 통해 특정 사용자 또는 그룹으로 제한된 디렉터리에 파일을 기록합니다.
  • 출력 파일을 암호화합니다.

가져오기 및 내보내기 작업을 위한 암호 보호

이 섹션에서는 PGP를 통해 백업 출력을 암호화하는 방법에 대해 설명합니다. 이 방법을 사용하면 명명된 파이프를 생성하고 출력을 파일 인수로 지정한 다음 이를 gpg의 입력으로 사용하여 암호화합니다. 이 방법의 장점은 암호가 디스크에 일반 텍스트로 기록되지 않는다는 것입니다. gpg를 사용할 수 있어야 하고 개인 키가 있어야 합니다. 이 방법의 예가 다음 섹션에 나와 있습니다.

이 섹션의 예제에서는 암호를 전달하여 별도의 컴퓨터에 저장하는 방법 중 한 가지를 설명합니다.

자세한 내용은 다음 외부 참조 문서를 참조하십시오.

예제: 암호화 및 내보내기

다음은 구성을 내보낼 때 파일을 보호하는 방법에 대한 예입니다.

mkfifo -m 600 /tmp/secure1 && (gpg --symmetric --batch --yes --passphrase-file ~/.secrets/pgppassphrase.txt --cipher-algo AES256 --output encrypted.enc < /tmp/secure1 &) && tsm settings export -f /tmp/secure1 && rm /tmp/secure1

다음은 이 작업의 세부 정보입니다.

  • 현재 사용자에 대해 파일 사용 권한이 rw로 제한된 액세스로 명명된 파이프를 만듭니다.

    mkfifo -m 600 /tmp/secure1

  • gpg를 호출하여 명명된 파이프로 전송되는 데이터를 암호화하는 별도의 백그라운드 프로세스를 생성합니다. 또한 데이터 대기를 차단합니다. 결과는 암호화된 데이터가 포함된 파일입니다.

    gpg --symmetric --batch --yes --passphrase-file ~/.secrets/pgppassphrase.txt --cipher-algo AES256 --output encrypted.enc < /tmp/secure1 &

  • tsm을 호출하여 구성을 내보내고 명명된 파이프를 파일 인수로 제공합니다.

    tsm settings export -f /tmp/secure1

  • 명명된 파이프를 삭제합니다.

    rm /tmp/secure1

암호화된 데이터는 "encrypted.enc" 파일에 있습니다.

예: 암호 해독 및 가져오기

다음은 구성을 암호 해독하고 가져오는 방법에 대한 예입니다.

mkfifo -m 600 /tmp/secret2 && (gpg --decrypt --batch --yes --passphrase-file ~/.secrets/pgppassphrase.txt encrypted.enc > /tmp/secret2 &) && tsm settings import -f /tmp/secret2 && rm /tmp/secret2

다음은 이 작업의 세부 정보입니다.

  • 현재 사용자에 대해 파일 사용 권한이 rw로 제한된 액세스로 명명된 파이프를 만듭니다.

    mkfifo -m 600 /tmp/secure2

  • 구성을 암호 해독하고 명명된 파이프로 보냅니다. 이 작업을 별도의 백그라운드 프로세스로 생성하여 읽기 대기를 차단합니다.

    gpg --decrypt --batch --yes --passphrase-file ~/.secrets/pgppassphrase.txt encrypted.enc > /tmp/secret2 &

  • tsm 구성 가져오기 명령을 실행합니다. 필요한 경우 로그인하십시오.

    tsm settings import -f /tmp/secret2

  • 명명된 파이프를 삭제합니다.

    rm /tmp/secure1

보류 중인 구성에는 가져온 구성이 포함됩니다.

tsm pending-changes apply를 실행하여 변경 내용을 커밋합니다. 보류 중인 변경 내용을 적용하려면 서버를 다시 시작해야 하는 경우 pending-changes apply 명령은 서버가 다시 시작됨을 알리는 메시지를 표시합니다. 서버가 중지된 경우에도 이 메시지가 표시되지만 이 경우 다시 시작은 없습니다. --ignore-prompt 옵션을 사용하여 이 메시지를 표시하지 않을 수 있지만 다시 시작 동작은 변경되지 않습니다. 변경 내용을 적용해도 다시 시작할 필요가 없는 경우 메시지 없이 변경 내용이 적용됩니다. 자세한 내용은 tsm pending-changes apply를 참조하십시오.

클러스터 노드

Tableau Server 클러스터에 새 노드를 추가하려면 먼저 노드 구성 파일을 생성해야 합니다(tsm topology). 노드 구성 파일에는 구성 암호를 암호화하는 데 사용되는 마스터 키 저장소 파일의 복사본이 포함되어 있습니다.

중요: 암호가 포함된 구성 파일을 내보낼 때는 노드 구성 파일을 보호하는 추가적인 조치를 취하는 것이 좋습니다.

새 노드에 Tableau Server를 설치 및 구성할 때 initialize-tsm 명령에 노드 구성 파일을 지정해야 합니다. 위에서 설명한 것과 유사한 기법을 사용하여 이전에 암호화된 파일의 콘텐츠를 해독하고 명명된 파이프를 통해 initialize-tsm 명령으로 보낼 수 있습니다.

암호 저장소 이벤트 로깅

암호 저장소와 관련된 다음 이벤트가 로그에 기록됩니다.

  • 새 암호화 키 생성
  • 암호화 키가 롤백되거나 변경됨
  • 구성 파일의 새 값 암호화

로그 파일 및 저장 위치에 대한 자세한 내용은 로그 파일 작업을 참조하십시오.

암호 관리

Tableau Server 관리자에게 있어서 암호 저장소와 관련하여 가장 중요한 작업은 암호를 주기적으로 업데이트하는 것입니다. 필요한 경우(서버 문제 해결 또는 감사) 암호를 검색해야 할 수 있습니다.

위에서 설명한 버전 업그레이드, 백업 및 복원 또는 클러스터에 새 노드 추가와 같은 다른 작업을 위한 암호 저장소 및 관련 프로세스는 자동으로 관리됩니다.

암호 업데이트

암호는 회사의 보안 정책에 따라 주기적으로 업데이트해야 합니다.

마스터 키와 자동으로 생성된 암호를 업데이트하려면 tsm security regenerate-internal-tokens를 실행합니다.

암호 검색

일부 경우 문제 해결 또는 다른 작업을 위해 암호를 검색해야 할 수 있습니다. 예를 들어 Tableau Server에 의해 생성되고 암호화된 Postgres readonly 사용자 자격 증명이 필요할 수 있습니다. 이러한 경우 tsm 명령을 실행하여 필요한 암호를 검색하고 해독할 수 있습니다.

암호를 검색하려면 명령 프롬프트를 열고 아래 표에 나열된 매개 변수 중 하나에 대해 tsm configuration get 명령을 실행합니다.

예를 들어 읽기 전용 Postgres 사용자에 대한 암호를 검색하려면 다음 명령을 입력합니다.

tsm configuration get -k pgsql.readonly_password

명령을 실행하면 암호가 일반 텍스트로 반환됩니다.

$ tsm configuration get -k pgsql.readonly_password

password

Configuration ParameterDescription
clustercontroller.zookeeper.passwordPassword for cluster controller to connect to zookeeper.
indexandsearchserver.client.password Password for logging into Index and Search Server.
indexandsearchserver.ssl.admin.cert.bytes Admin certificate that is used for administrative access to the Index and Search Server. The admin certificate is used to generate the node certificate.
indexandsearchserver.ssl.admin.key.file_bytes Certificate key for administrative access to the Index and Search Server.
indexandsearchserver.ssl.node.cert.bytes Certificate that is used for Index and Search Server node-to-node communication.
indexandsearchserver.ssl.node.key.file_bytes Certificate key that is used for Index and Search Server node-to-node communication.
indexandsearchserver.ssl.root.cert.bytes Certificate that is used to sign the admin and node certificates . This certificate is used by TSM for health check and by NLP to connect to Index and Search Server.
indexandsearchserver.ssl.root.key.file_bytes Certificate key for root certificate.
filestore.zookeeper.passwordPassword for filestore to connect to zookeeper.
hyper.connection.init_password Password used to initialize the Hyper database for user tableau_internal_user and is then used for connecting to Hyper.
jdbc.passwordPassword for the rails Postgres user.
kms.persistent_store A collection of master encryption keys (MEKs) used by the Key Management System.
maestro.rserve.password Password for connecting to an external Rserve instance used by Tableau Prep Conductor for running flows that have nodes with R scripts.
maestro.tabpy.passwordPassword for connecting to an external TabPy (Python server) instance used by Tableau Prep Conductor for running flows that have nodes with Python scripts.
oauth.google.client_secretClient secret of the Google Cloud Platform account.
oauth.quickbooks.consumer_secretConsumer secret of the Intuit developer account.
oauth.salesforce.client_secretClient secret of the Salesforce developer account.
pgsql.adminpassword

tblwgadmin Postgres 사용자의 암호입니다.

참고: 구성 매개 변수는 Tableau 구성 파일(tabsvc.yml, workgroup.yml)에서 암호화되지만 이 암호가 SAML에 사용되는 파일에 일반 텍스트로 저장됩니다.

pgsql.readonly_passwordPassword for the readonly Postgres user.
pgsql.remote_passwordPassword for the tableau Postgres user.
redis.password

Redis의 암호입니다.

참고: 구성 매개 변수는 Tableau 구성 파일(tabsvc.yml, workgroup.yml)에서 암호화되지만 구성은 Redis 응용 프로그램에서 사용하는 redis.conf 파일에 일반 텍스트로 유지됩니다. Redis는 암호화/보안이 적용된 암호를 지원하지 않습니다.

servercrashupload.proxy_server_passwordPassword for custom proxy server used to upload crash reports.
service.runas.passwordPassword of the Run As users. Stored temporarily.
ssl.cert.file_bytes The content of one of the three SSL certificate files uploaded by the administrator. The certificate files are required to enable secure external connections to Tableau Server.
ssl.chain.file_bytes The chain file(s) for the certificates uploaded by the administrator for external SSL.
ssl.key.file_bytesKey file(s) for the certificates uploaded by the administrator for external SSL.
ssl.key.passphraseOptional passphrase used to protect the external SSL key.
svcmonitor.notification.smtp.passwordSMTP Server password supplied by the administrator through TabConfig.exe.
tabadminservice.passwordPassword for the service that allows server admins to download log files through the web interface.
vizportal.openid.client_secretThis is the password ("provider client secret") used for OpenID Connect SSO.
vizqlserver.external_proxy_password Password used to authenticate to an external proxy.
wgserver.domain.passwordPassword used to bind to Active Directory.
wgserver.saml.key.passphrasePassphrase used to access the PKCS#8 SAML key file.
zookeeper.tsm.passwordPassword that TSM uses to connect to Zookeeper coordination service
피드백을 제공해 주셔서 감사합니다!귀하의 피드백이 제출되었습니다. 감사합니다!