จัดการข้อมูลลับของเซิร์ฟเวอร์
Tableau Server จำเป็นต้องเก็บข้อมูลลับส่วนหนึ่งที่ใช้ในการดำเนินการฟังก์ชันต่างๆ ซึ่งโดยทั่วไปจะรักษาความปลอดภัยในการสื่อสารภายใน การสื่อสารกับแอปพลิเคชันอื่นหรือระบบปฏิบัติการ หรือให้การสื่อสารที่ปลอดภัยกับไคลเอ็นต์ ในบริบทนี้ คำว่า ข้อมูลลับ อาจหมายถึงรหัสผ่าน โทเค็น หรือสตริงอื่นๆ ที่ใช้ในการตรวจสอบสิทธิ์เอนทิตีหนึ่งกับอีกเอนทิตีหนึ่ง
ข้อมูลลับที่จำเป็นในการเรียกใช้ Tableau Server มีสองหมวดหมู่ โดยแต่ละหมวดหมู่จะต่างกันไปตามวิธีการสร้างข้อมูลลับ ดังนี้
- ข้อมูลลับที่สร้างขึ้นโดยผู้ดูแลระบบ ข้อมูลลับเหล่านี้รวมถึงข้อมูลเข้าสู่ระบบและข้อมูลลับที่เกี่ยวข้องสำหรับบัญชีเรียกใช้งานในฐานะผู้ใช้และข้อมูลเข้าสู่ระบบ SMTP ที่ Tableau Server ใช้งาน
- ข้อมูลลับที่สร้างขึ้นโดยอัตโนมัติโดยกระบวนการต่างๆ ในระบบ ตัวอย่างเช่น จำเป็นต้องมีข้อมูลลับเพื่อปกป้องการสื่อสารระหว่างตัวควบคุมคลัสเตอร์และกระบวนการ ZooKeeper และต้องใช้รหัสผ่านที่แตกต่างกันหลายรายการสำหรับแต่ละบริการและผู้ใช้โปรแกรมที่สื่อสารกับ Postgres
ระบบจะเข้ารหัสข้อมูลลับส่วนใหญ่ในขณะที่ไม่ได้ใช้งาน เมื่อต้องใช้ข้อมูลลับ ระบบจะถอดรหัสข้อมูลลับนั้นในขณะใช้งาน
หัวข้อนี้อธิบายวิธีการทำงานของพื้นที่เก็บข้อมูลลับและสิ่งที่คุณต้องทำเพื่อจัดการพื้นที่เก็บข้อมูลลับบน Tableau Server อย่างเหมาะสม
การทำความเข้าใจวิธีการทำงานของพื้นที่เก็บข้อมูลลับ
ในระหว่างการติดตั้ง Tableau Server จะสร้างและจัดเก็บคีย์หลักในคีย์สโตร์ของ Java ระบบจะใช้คีย์หลักเพื่อเข้ารหัสคีย์การเข้ารหัสการกำหนดค่าที่ใช้ทั่วทั้งระบบ
เมื่อใดก็ตามที่มีการสร้างข้อมูลลับใหม่หรืออัปเดตข้อมูลลับ ระบบจะเข้ารหัสข้อมูลลับด้วยคีย์การเข้ารหัสการกำหนดค่า จากนั้นระบบจะจัดเก็บค่าที่เข้ารหัสพร้อมกับพารามิเตอร์การกำหนดค่าที่เกี่ยวข้องในไฟล์ YAML บนเซิร์ฟเวอร์ พารามิเตอร์ที่มีค่าที่เข้ารหัสจะใช้รูปแบบ ENC(<encrypted string>)
โดยที่ <encrypted string>
เป็นสตริงที่เข้ารหัสแบบ Base64
ขณะใช้งาน เมื่อจำเป็นต้องเข้าถึงข้อมูลลับที่กำหนด ระบบจะอ่านค่าที่เข้ารหัสในหน่วยความจำและถอดรหัสด้วยคีย์การเข้ารหัสการกำหนดค่า
ในกรณีของการเปลี่ยนแปลงที่รอดำเนินการ ซึ่งมีการป้อนข้อมูลลับระหว่างการเปลี่ยนแปลงการกำหนดค่า ระบบจะเข้ารหัสธุรกรรมทั้งหมด ในกรณีนี้ หลังจากที่คุณป้อนข้อมูลลับแล้วบันทึกการเปลี่ยนแปลงที่รอดำเนินการ ระบบจะส่งข้อมูลลับไปยังบริการประสานงาน (ผ่าน SSL ที่เข้ารหัส) บริการประสานงานจะเข้ารหัสข้อมูลลับและจัดเก็บข้อมูลลับไว้จนกว่าจะมีการเปลี่ยนแปลงที่รอดำเนินการ เมื่อมีการเปลี่ยนแปลง ข้อมูลลับ (ยังเข้ารหัสอยู่) จะได้รับการเลื่อนระดับเป็นเวอร์ชันการกำหนดค่าปัจจุบัน
Tableau Server เข้ารหัสข้อมูลลับโดยใช้ AES 256 บิตในโหมด GCM คีย์ที่ใช้สำหรับพื้นที่เก็บข้อมูลที่ปลอดภัยจะแตกต่างจากคีย์เนื้อหาที่ใช้ในการเข้ารหัสข้อมูลเข้าสู่ระบบฐานข้อมูลที่ฝังอยู่ก่อนที่ระบบจะจัดเก็บไว้ในที่เก็บ
ใครสามารถเข้าถึงคีย์หลักได้บ้าง
ในการติดตั้งที่เป็นค่าเริ่มต้น ระบบจะติดตั้งคีย์สโตร์ของ Java สำหรับ Tableau Server ไว้ในโฟลเดอร์ \ProgramData\Tableau\Tableau Server\data\tabsvc\crypto\keystores\
หากคุณติดตั้ง Tableau บนไดรฟ์ที่ไม่ใช่ระบบ เส้นทางดังกล่าวจะเป็น <install drive>:\Tableau\Tableau Server\data\tabsvc\crypto\keystores\
ตามค่าเริ่มต้น บัญชีต่อไปนี้สามารถเข้าถึงไดเรกทอรีนี้ได้
- บัญชีเรียกใช้งานในฐานะผู้ใช้ (หากกำหนดค่าไว้)
- บัญชี NetworkService ที่กำหนดไว้ล่วงหน้าของ Windows ในระบบ
- บัญชี LocalSystem ที่กำหนดไว้ล่วงหน้าของ Windows ในระบบ
- สมาชิกของกลุ่มผู้ดูแลระบบคอมพิวเตอร์
นำเข้าและส่งออกข้อมูลการกำหนดค่า
Tableau Services Manager เพิ่มความสามารถในการนำเข้าและส่งออกข้อมูลการกำหนดค่าโดยใช้ส่งออกการตั้งค่า TSM
หมายเหตุ: Tableau Server เวอร์ชันนี้ไม่รองรับการกู้คืนข้อมูลการกำหนดค่าจากข้อมูลสำรอง แต่เราขอแนะนำให้ใช้คำสั่งส่งออกและนำเข้าการกำหนดค่าเพื่อสำรองข้อมูลและกู้คืนข้อมูลการกำหนดค่า
ขณะที่ระบบเข้ารหัสข้อมูลลับการกำหนดค่าเมื่อจัดเก็บบนดิสก์ภายในและเมื่อส่งออกการกำหนดค่าเหล่านี้ไปยังไฟล์ ระบบจะเขียนข้อมูลลับไปยังไฟล์เป็นข้อความธรรมดา จึงขึ้นอยู่กับผู้ดูแลระบบที่จะต้องมีมาตรการในการปกป้องไฟล์นี้ ตัวเลือกมีหลากหลายดังต่อไปนี้
- เขียนไฟล์ไปยังระบบไฟล์ที่เข้ารหัส
- เขียนไฟล์ไปยังไดเรกทอรีที่จำกัดเฉพาะผู้ใช้หรือกลุ่มตามสิทธิ์ของระบบไฟล์
- เข้ารหัสไฟล์เอาต์พุต
การรักษาความปลอดภัยของข้อมูลลับสำหรับการดำเนินการนำเข้าและส่งออก
ใช้ชุดเครื่องมือของบุคคลที่สาม เช่น OpenSSL เพื่อเข้ารหัสเอาต์พุตข้อมูลสำรอง
โหนดคลัสเตอร์
เมื่อเพิ่มโหนดใหม่ให้กับคลัสเตอร์ Tableau Server ของคุณ คุณจะต้องสร้างไฟล์การกำหนดค่าโหนดก่อน (tsm topology) ไฟล์การกำหนดค่าโหนดมีสำเนาของไฟล์คีย์สโตร์หลักที่ใช้สำหรับเข้ารหัสข้อมูลลับของการกำหนดค่า
สำคัญ: เราขอแนะนำเป็นอย่างยิ่งให้คุณใช้มาตรการเพิ่มเติมเพื่อรักษาความปลอดภัยไฟล์การกำหนดค่าโหนดเมื่อส่งออกไฟล์การกำหนดค่าที่มีข้อมูลลับ
เมื่อติดตั้งและกำหนดค่า Tableau Server บนโหนดใหม่ คุณจะต้องจัดเตรียมไฟล์การกำหนดค่าโหนดให้กับคำสั่ง initialize-tsm
การบันทึกเหตุการณ์ในพื้นที่เก็บข้อมูลลับ
ระบบจะบันทึกเหตุการณ์ต่อไปนี้ที่เกี่ยวข้องกับพื้นที่เก็บข้อมูลลับไว้
- การสร้างคีย์การเข้ารหัสใหม่
- คีย์การเข้ารหัสย้อนกลับหรือเปลี่ยนแปลง
- การเข้ารหัสค่าใหม่ในไฟล์การกำหนดค่า
หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับไฟล์บันทึกและตำแหน่งที่จัดเก็บไฟล์บันทึก โปรดดู ทำงานกับไฟล์บันทึก
การจัดการข้อมูลลับ
ในฐานะผู้ดูแลระบบ Tableau Server งานที่สำคัญที่สุดที่เกี่ยวข้องกับพื้นที่เก็บข้อมูลลับคือการอัปเดตข้อมูลลับเป็นระยะ ในบางกรณี (การแก้ไขปัญหาเซิร์ฟเวอร์หรือการตรวจสอบ) คุณอาจต้องดึงข้อมูลรหัสผ่าน
สำหรับการดำเนินการอื่นๆ เช่น การอัปเกรดเวอร์ชัน การสำรองข้อมูลและการกู้คืน หรือการเพิ่มโหนดใหม่ให้กับคลัสเตอร์ ตามที่กล่าวไว้ข้างต้น Tableau Server จะจัดการพื้นที่เก็บข้อมูลลับและกระบวนการที่เกี่ยวข้องโดยอัตโนมัติ
การอัปเดตข้อมูลลับ
คุณควรอัปเดตข้อมูลลับเป็นระยะๆ ตามนโยบายความปลอดภัยของบริษัทของคุณ
หากต้องการอัปเดตคีย์หลักและข้อมูลลับที่สร้างไว้โดยอัตโนมัติ ให้เรียกใช้ tsm security regenerate-internal-tokens
การดึงข้อมูลรหัสผ่าน
ในบางกรณี คุณอาจต้องดึงข้อมูลรหัสผ่านสำหรับการแก้ไขปัญหาหรือการดำเนินการอื่นๆ ตัวอย่างเช่น คุณอาจต้องใช้ข้อมูลเข้าสู่ระบบของผู้ใช้ Postgres แบบ readonly ที่สร้างขึ้นและเข้ารหัสโดย Tableau Server ในกรณีเหล่านี้ คุณสามารถเรียกใช้คำสั่ง tsm ที่จะดึงข้อมูลและถอดรหัสรหัสผ่านสำหรับคุณได้
ในการดึงข้อมูลรหัสผ่าน ให้เปิดข้อความแจ้งคำสั่งและออกคำสั่ง tsm configuration get
สำหรับพารามิเตอร์ใดพารามิเตอร์หนึ่งที่แสดงอยู่ในตารางด้านล่าง
ตัวอย่างเช่น ในการดึงข้อมูลรหัสผ่านสำหรับผู้ใช้ Postgres แบบ readonly ให้พิมพ์คำสั่งต่อไปนี้
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 | รหัสผ่านสำหรับผู้ใช้ Postgres แบบ tblwgadmin หมายเหตุ: แม้ว่าพารามิเตอร์การกำหนดค่าจะได้รับการเข้ารหัสในไฟล์การกำหนดค่าของ 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.conf ที่แอปพลิเคชัน Redis ใช้งาน 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 |