サーバー シークレットの管理
Tableau Server は一般的に、内部通信の保護、他のアプリケーションやオペレーティング システムとの通信、またはクライアントとの安全な通信の提供など、さまざまな機能の実行に使用する多数のシークレットを保存する必要があります。このコンテキストでは、シークレットという用語は、1 つのエンティティを別のエンティティに対して認証するために使用される、パスワード、トークン、またはその他の文字列を表します。
Tableau Server で実行する必要があるシークレットには 2 つのカテゴリーがあります。それらは、シークレットの生成方法によって異なります。
- 管理者によって生成されるシークレット。これらには、認証資格情報や、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 キー ストアは \ProgramData\Tableau\Tableau Server\data\tabsvc\crypto\keystores\
フォルダーにインストールされています。Tableau をシステム ドライブ以外にインストールしている場合は、パスが <install drive>:\Tableau\Tableau Server\data\tabsvc\crypto\keystores\
となります。既定では、次のアカウントはこのディレクトリへのアクセス権を持っています。
- 実行ユーザー アカウント (構成されている場合)
- ローカル Windows アカウントで事前に定義された NetworkService
- ローカル Windows アカウントで事前に定義された LocalSystem
- コンピューター管理者グループのメンバー
構成情報のインポートおよびエクスポート
Tableau Services Manager には、tsm settings export を使用して構成情報をインポートおよびエクスポートする機能が導入されています。
注:このバージョンの Tableau Server では、バックアップからの構成情報の復元はサポートされていません。代わりに、構成のエクスポートおよびインポート コマンドを使用して構成情報をバックアップおよび復元することをお勧めします。
構成シークレットはディスクに内部保存されるときに暗号化されますが、構成がファイルにエクスポートされるときには、シークレットがプレーン テキスト形式でファイルに書き込まれます。管理者はこのファイルを保護する責任があります。次のようなさまざまなオプションがあります。
- 暗号化されたファイル システムにファイルを書き込む。
- ファイル システム パーミッションによって特定のユーザーまたはグループのみに限定されるディレクトリにファイルを書き込む。
- 出力ファイルを暗号化する。
インポートおよびエクスポート操作におけるシークレットの保護
OpenSSL などのサードパーティ製ツールセットを使用して、バックアップ出力を暗号化します。
クラスター ノード
Tableau Server クラスタに新規ノードを追加するときは、まずノード構成ファイルを生成する必要があります (tsm topology)。ノード構成ファイルには、構成シークレットの暗号化に使用されるマスター キーストア ファイルのコピーが含まれています。
重要: シークレットが含まれた構成ファイルをエクスポートする場合は、ノード構成ファイルを保護するためにさらなる対策を講じること強くお勧めします。
新規ノードに Tableau Server をインストールして構成するときに、ノード構成ファイルを initialize-tsm
コマンドに指定する必要があります。
シークレット ストレージ イベントのログ作成
シークレット ストレージに関する次のイベントが記録されます。
- 新しい暗号化キーの生成
- 暗号化キーが登録または変更されている
- 構成ファイルの新しい値の暗号化
ログ ファイルおよびそれらの保存場所の詳細については、ログ ファイルの操作を参照してください。
シークレットの管理
Tableau Server 管理者にとって、シークレット ストレージに関する最も重要なタスクは、シークレットを定期的に更新することです。場合によっては (サーバーのトラブルシューティングや監査など) パスワードの取得が必要となることもあります。
バージョンのアップグレード、バックアップや復元、またはクラスターへの新規ノードの追加 (上記) などの他の操作の場合、Tableau Server はシークレット ストレージや関連プロセスを自動的に管理します。
シークレットの更新
会社のセキュリティ ポリシーに従って、シークレットを定期的に更新する必要があります。
マスター キーと自動生成されたシークレットを更新するには、tsm security regenerate-internal-tokens を実行します。
パスワードの取得
トラブルシューティングやその他の操作でパスワードの取得が必要となる場合があります。たとえば、Tableau Server によって生成および暗号化された Postgres readonly ユーザー認証資格情報が必要となる場合があります。この場合、パスワードを取得して復号化する tsm コマンドを実行します。
パスワードを取得するには、コマンド プロンプトを開き、以下の表に記載されているいずれかのパラメーターに tsm configuration get
コマンドを発行します。
たとえば、readonly Postgres ユーザーのパスワードを取得するには、次のコマンドを入力します。
tsm configuration get -k pgsql.readonly_password
コマンドは、パスワードをクリア テキストで返します。
$ tsm configuration get -k pgsql.readonly_password
password
Configuration Parameter | Description |
---|---|
clustercontroller.zookeeper.password | Password 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.password | Password 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.password | Password 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.password | Password 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_secret | Client secret of the Google Cloud Platform account. |
oauth.quickbooks.consumer_secret | Consumer secret of the Intuit developer account. |
oauth.salesforce.client_secret | Client secret of the Salesforce developer account. |
pgsql.adminpassword | tblwgadmin Postgres ユーザーのパスワード。 注: 構成パラメーターは Tableau の構成ファイル (tabsvc.yml、workgroup.yml) に暗号化されますが、このパスワードは、SAML で使用される他のファイルにプレーン テキストで保存されます。 |
pgsql.readonly_password | Password for the readonly Postgres user. |
pgsql.remote_password | Password for the tableau Postgres user. |
redis.password | Redis のパスワード 注: 構成パラメーターは Tableau の構成ファイル (tabsvc.yml、workgroup.yml) に暗号化されますが、構成は Redis アプリケーションが使用する redis.conf ファイルにプレーン テキストで引き続き保存されます。Redis は暗号化/セキュア パスワードをサポートしていません。 |
servercrashupload.proxy_server_password | Password for custom proxy server used to upload crash reports. |
service.runas.password | Password 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_bytes | Key file(s) for the certificates uploaded by the administrator for external SSL. |
ssl.key.passphrase | Optional passphrase used to protect the external SSL key. |
svcmonitor.notification.smtp.password | SMTP Server password supplied by the administrator through TabConfig.exe. |
tabadminservice.password | Password for the service that allows server admins to download log files through the web interface. |
vizportal.openid.client_secret | This 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.password | Password used to bind to Active Directory. |
wgserver.saml.key.passphrase | Passphrase used to access the PKCS#8 SAML key file. |
zookeeper.tsm.password | Password that TSM uses to connect to Zookeeper coordination service |