จัดการข้อมูลลับของเซิร์ฟเวอร์
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 ไว้ในโฟลเดอร์ /tabsvc/keystores
สำหรับแต่ละบริการในโหนดนั้นภายใต้ /var/opt/tableau/tableau_server/data/tabsvc/config
ตัวอย่าง
/var/opt/tableau/tableau_server/data/tabsvc/config/tabadminagent_<version_number>/tabsvc/keystores/tableauserver.jks
หากคุณใช้ไดเรกทอรีการติดตั้งแบบกำหนดเอง ไฟล์คีย์สโตร์จะอยู่ภายใต้
<install directory>/tableau_server/data/tabsvc/config/<service name_#.version_number>/tabsvc/keystores
ตามค่าเริ่มต้น ผู้ใช้และกลุ่มต่อไปนี้สามารถเข้าถึงไดเรกทอรีนี้ได้
- root
- tableau (ผู้ใช้)
- สมาชิกของกลุ่ม 'tableau'
นำเข้าและส่งออกข้อมูลการกำหนดค่า
Tableau Services Manager เพิ่มความสามารถในการนำเข้าและส่งออกข้อมูลการกำหนดค่าโดยใช้ส่งออกการตั้งค่า TSM
หมายเหตุ: Tableau Server เวอร์ชันนี้ไม่รองรับการกู้คืนข้อมูลการกำหนดค่าจากข้อมูลสำรอง แต่เราขอแนะนำให้ใช้คำสั่งส่งออกและนำเข้าการกำหนดค่าเพื่อสำรองข้อมูลและกู้คืนข้อมูลการกำหนดค่า
ขณะที่ระบบเข้ารหัสข้อมูลลับการกำหนดค่าเมื่อจัดเก็บบนดิสก์ภายในและเมื่อส่งออกการกำหนดค่าเหล่านี้ไปยังไฟล์ ระบบจะเขียนข้อมูลลับไปยังไฟล์เป็นข้อความธรรมดา จึงขึ้นอยู่กับผู้ดูแลระบบที่จะต้องมีมาตรการในการปกป้องไฟล์นี้ ตัวเลือกมีหลากหลายดังต่อไปนี้
- เขียนไฟล์ไปยังระบบไฟล์ที่เข้ารหัส
- เขียนไฟล์ไปยังไดเรกทอรีที่จำกัดเฉพาะผู้ใช้หรือกลุ่มตามสิทธิ์ของระบบไฟล์
- เข้ารหัสไฟล์เอาต์พุต
การรักษาความปลอดภัยของข้อมูลลับสำหรับการดำเนินการนำเข้าและส่งออก
ส่วนนี้อธิบายวิธีที่ PGP เข้ารหัสเอาต์พุตข้อมูลสำรอง ด้วยวิธีนี้ คุณจะสร้าง Named pipe และกำหนดให้เป็นอาร์กิวเมนต์ของไฟล์ จากนั้นใช้เป็นอินพุตเพื่อเข้ารหัส 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
รายละเอียดของการดำเนินการนี้มีดังต่อไปนี้
สร้าง Named pipe พร้อมการเข้าถึงที่จำกัดโดยสิทธิ์ไฟล์ไปยัง rw สำหรับผู้ใช้ปัจจุบัน
mkfifo -m 600 /tmp/secure1
เรียกใช้ gpg เพื่อเข้ารหัสข้อมูลที่ส่งไปยัง Named pipe โดยทำงานในเบื้องหลังในรูปแบบกระบวนการที่แยกกัน ซึ่งการทำงานนี้จะบล็อกการรอข้อมูลดังกล่าว ผลลัพธ์ที่ได้จะเป็นไฟล์ที่มีข้อมูลที่เข้ารหัส
gpg --symmetric --batch --yes --passphrase-file ~/.secrets/pgppassphrase.txt --cipher-algo AES256 --output encrypted.enc < /tmp/secure1 &
เรียกใช้ tsm เพื่อส่งออกการกำหนดค่าโดยระบุ Named pipe เป็นอาร์กิวเมนต์ของไฟล์
tsm settings export -f /tmp/secure1
ลบ Named pipe
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
รายละเอียดของการดำเนินการนี้มีดังต่อไปนี้
สร้าง Named pipe พร้อมการเข้าถึงที่จำกัดโดยสิทธิ์ไฟล์ไปยัง rw สำหรับผู้ใช้ปัจจุบัน
mkfifo -m 600 /tmp/secure2
ถอดรหัสการกำหนดค่าและส่งไปยัง Named pipe เรียกใช้การทำงานนี้ในเบื้องหลังในรูปแบบกระบวนการที่แยกกัน ซึ่งการทำงานนี้จะบล็อกการรออ่านข้อมูล
gpg --decrypt --batch --yes --passphrase-file ~/.secrets/pgppassphrase.txt encrypted.enc > /tmp/secret2 &
ดำเนินการคำสั่ง tsm configuration import โดยเข้าสู่ระบบได้ตามต้องการ
tsm settings import -f /tmp/secret2
ลบ Named pipe
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 งานที่สำคัญที่สุดที่เกี่ยวข้องกับพื้นที่เก็บข้อมูลลับคือการอัปเดตข้อมูลลับเป็นระยะ ในบางกรณี (การแก้ไขปัญหาเซิร์ฟเวอร์หรือการตรวจสอบ) คุณอาจต้องดึงข้อมูลรหัสผ่าน
สำหรับการดำเนินการอื่นๆ เช่น การอัปเกรดเวอร์ชัน การสำรองข้อมูลและการกู้คืน หรือการเพิ่มโหนดใหม่ให้กับคลัสเตอร์ ตามที่กล่าวไว้ข้างต้น 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 |