จัดการข้อมูลลับของเซิร์ฟเวอร์

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 คุณสามารถใช้เทคนิคที่คล้ายคลึงกันดังที่อธิบายไว้ข้างต้นเพื่อถอดรหัสเนื้อหาของไฟล์ที่เข้ารหัสไว้ก่อนหน้านี้ แล้วส่งผ่าน Named pipe ไปยังคำสั่ง 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 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

รหัสผ่านสำหรับผู้ใช้ Postgres แบบ tblwgadmin

หมายเหตุ: แม้ว่าพารามิเตอร์การกำหนดค่าจะได้รับการเข้ารหัสในไฟล์การกำหนดค่าของ 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.conf ที่แอปพลิเคชัน Redis ใช้งาน 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
ขอบคุณสำหรับข้อเสนอแนะของคุณส่งข้อเสนอแนะของคุณเรียบร้อยแล้ว ขอขอบคุณ