ภาคผนวก - ระดับเว็บที่มีการใช้งานตัวอย่าง Apache

หัวข้อนี้ประกอบด้วยกระบวนการตั้งแต่ต้นจนจบที่อธิบายวิธีการปรับใช้ระดับเว็บในสถาปัตยกรรมอ้างอิงตัวอย่าง AWS ตัวอย่างการกำหนดค่าประกอบด้วยองค์ประกอบต่อไปนี้

  • ตัวจัดสรรภาระงานแอปพลิเคชัน AWS
  • เซิร์ฟเวอร์พร็อกซีของ Apache
  • โมดูลการตรวจสอบสิทธิ์ Mellon
  • IdP ของ Okta
  • การตรวจสอบสิทธิ์ SAML

หมายเหตุ: ตัวอย่างการกำหนดค่าระดับของเว็บที่แสดงในส่วนนี้รวมกระบวนการโดยละเอียดสำหรับการปรับใช้ซอฟต์แวร์และบริการของบุคคลที่สาม เราได้พยายามอย่างสุดความสามารถที่จะตรวจสอบและบันทึกกระบวนการเพื่อเปิดใช้งานสถานการณ์ระดับของเว็บ อย่างไรก็ตาม ซอฟต์แวร์ของบุคคลที่สามอาจเปลี่ยนแปลงหรือสถานการณ์อาจแตกต่างไปจากสถาปัตยกรรมอ้างอิงที่อธิบายไว้ที่นี่ โปรดดูรายละเอียดและการสนับสนุนการกำหนดค่าที่เชื่อถือได้ในเอกสารประกอบของบุคคลที่สาม

ตัวอย่าง Linux ทั่วทั้งส่วนนี้แสดงคำสั่งสำหรับการกระจายที่คล้ายกับ RHEL โดยระบบได้พัฒนาคำสั่งตรงนี้โดยเฉพาะด้วยการกระจาย Amazon Linux 2 หากเรียกใช้การกระจาย Ubuntu ให้แก้ไขคำสั่งให้สอดคล้องกัน

การปรับใช้ระดับของเว็บในตัวอย่างนี้ปฏิบัติตามกระบวนการตรวจสอบและกำหนดค่าแบบทีละขั้น การกำหนดค่าระดับของเว็บที่สำคัญประกอบด้วยขั้นตอนต่อไปนี้ในการเปิดใช้งาน HTTP ระหว่าง Tableau และอินเทอร์เน็ต Apache ทำงานและกำหนดค่าสำหรับพร็อกซีย้อนกลับ/การจัดสรรภาระงานที่อยู่เบื้องหลังตัวจัดสรรภาระงานของแอปพลิเคชัน AWS:

  1. ติดตั้ง Apache
  2. กำหนดค่าพร็อกซีย้อนกลับเพื่อทดสอบการเชื่อมต่อกับ Tableau Server
  3. กำหนดค่าการจัดสรรภาระงานบนพร็อกซี
  4. กำหนดค่าตัวจัดสรรภาระงานแอปพลิเคชัน AWS

หลังจากที่ตั้งค่าระดับของเว็บและตรวจสอบการเชื่อมต่อกับ Tableau ให้กำหนดค่าการตรวจสอบสิทธิ์ด้วยผู้ให้บริการภายนอก

ติดตั้ง Apache

เรียกใช้กระบวนการต่อไปนี้บนโฮสต์ EC2 ทั้งสอง (พร็อกซี 1 และพร็อกซี 2) หากคุณปรับใช้งานใน AWS ตามตัวอย่างสถาปัตยกรรมอ้างอิง คุณควรจะมีโซนที่สามารถใช้งานได้สองโซนและเรียกใช้เซิร์ฟเวอร์พร็อกซีเดี่ยวในแต่ละโซนอยู่

  1. ติดตั้ง Apache:

    sudo yum update -y
    sudo yum install -y httpd
  2. กำหนดค่าเพื่อเริ่ม Apache ตอนรีบูต:

    sudo systemctl enable --now httpd

  3. ตรวจสอบว่า httpd เวอร์ชันที่คุณติดตั้งมี proxy_hcheck_module:

    sudo httpd -M

    จำเป็นต้องมี proxy_hcheck_module หากเวอร์ชัน httpd ของคุณไม่มีโมดูลนี้ ให้อัปเดตเป็น httpd เวอร์ชันที่มีโมดูลนี้

กำหนดค่าพร็อกซีเพื่อทดสอบการเชื่อมต่อกับ Tableau Server

เรียกใช้กระบวนการนี้บนโฮสต์พร็อกซีใดโฮสต์พร็อกซีหนึ่ง (พร็อกซี 1) จุดประสงค์ของขั้นตอนนี้คือตรวจสอบการเชื่อมต่อระหว่างอินเทอร์เน็ตและเซิร์ฟเวอร์พร็อกซีของคุณกับ Tableau Server ในกลุ่มความปลอดภัยส่วนตัว

  1. สร้างไฟล์ชื่อว่า tableau.conf แล้วเพิ่มไฟล์ไปยังไดเรกทอรี /etc/httpd/conf.d

    คัดลอกโค้ดต่อไปนี้และระบุคีย์ ProxyPass และ ProxyPassReverse พร้อมที่อยู่ IP ส่วนนตัวของ Tableau Server โหนด 1

    สำคัญ: การกำหนดค่าที่อยู่ด้านล่างไม่ใช่การกำหนดค่าที่ปลอดภัยและไม่ควรนำมาใช้งานจริง ควรใช้การกำหนดค่านี้ระหว่างกระบวนการติดตั้งเท่านั้นเพื่อตรวจสอบการเชื่อมต่อระหว่างอุปกรณ์

    ตัวอย่าง หากที่อยู่ IP ส่วนตัวของโหนด 1 คือ 10.0.30.32 ดังนั้น เนื้อหาของไฟล์ tableau.conf จะต้องเป็น:

    <VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass "/" "http://10.0.30.32:80/"
    ProxyPassReverse "/" "http://10.0.30.32:80/"
    </VirtualHost>
  2. รีสตาร์ท httpd

    sudo systemctl restart httpd

การตรวจสอบ: การกำหนดค่าโทโพโลยีฐาน

คุณควรเข้าถึงหน้าผู้ดูแลระบบ Tableau Server ได้โดยการเรียกดู http://<proxy-public-IP-address>

หากหน้าเข้าสู่ระบบ Tableau Server ไม่โหลดในเบราว์เซอร์ของคุณ ให้ทำตามขั้นตอนการแก้ปัญหาเหล่านี้บนโฮสต์พร็อกซี 1

  • หยุดแล้วเริ่มต้น httpd ในขั้นตอนการแก้ไขปัญหาขั้นตอนที่หนึ่ง
  • ดับเบิลคลิกไฟล์ tableau.conf ตรวจสอบว่า IP ส่วนตัวของโหนด 1 ถูกต้อง ตรวจสอบเครื่องหมายอัญประกาศและค่อยๆ ตรวจสอบวากยสัมพันธ์
  • เรียกใช้คำสั่ง curl บนเซิร์ฟเวอร์พร็อกซีย้อนกลับที่มีที่อยู่ IP ส่วนตัวของโหนด 1 เช่น curl 10.0.1.90 หากเชลล์ไม่ส่งกลับเป็น html หรือหากส่งกลับเป็น html สำหรับหน้าเว็บทดสอบ Apache ให้ตรวจสอบการกำหนดค่าโปรโตคอล/พอร์ตระหว่างกลุ่มความปลอดภัยสาธารณะและส่วนตัว
  • เรียกใช้คำสั่ง curl กับที่อยู่ IP ส่วนตัวของพร็อกซี 1 เช่น curl 10.0.0.163 หากเชลล์ส่งกลับโค้ด html สำหรับหน้าเว็บทดสอบ Apache หมายความว่าไฟล์พร็อกซีกำหนดค่าไม่ถูกต้อง
  • รีสตาร์ท httpd (sudo systemctl restart httpd) ทุกครั้งหลังจากการเปลี่ยนแปลงการกำหนดค่าที่ไฟล์พร็อกซีหรือกลุ่มความปลอดภัย
  • ตรวจสอบให้แน่ใจว่า TSM ทำงานบนโหนด 1

กำหนดค่าการจัดสรรภาระงานบนพร็อกซี

  1. บนโฮสต์พร็อกซีเดียวกัน (พร็อกซี 1) ที่คุณสร้างไฟล์ tableau.conf ให้ลบการกำหนดค่าโฮสต์เสมือนจริงออกและแก้ไขไฟล์เพื่อเพิ่มลอจิกการจัดสรรภาระงานไปด้วย

    ตัวอย่าง:

    <VirtualHost *:80>
    ServerAdmin admin@example.com
    #Load balancing logic.
    ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
    Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED 
    <Proxy balancer://tableau>
    #Replace IP addresses below with the IP addresses to the Tableau Servers running the Gateway service.
    BalancerMember http://10.0.3.40/ route=1 hcmethod=GET hcexpr=ok234 hcuri=/favicon.ico
    BalancerMember http://10.0.4.151/ route=2 hcmethod=GET hcexpr=ok234 hcuri=/favicon.ico
    ProxySet stickysession=ROUTEID
    </Proxy>
    ProxyPreserveHost On
    ProxyPass / balancer://tableau/
    ProxyPassReverse / balancer://tableau/ 
    </VirtualHost>
  2. หยุดแล้วเริ่มต้น httpd

    sudo systemctl stop httpd
    sudo systemctl start httpd
  3. ตรวจสอบการกำหนดค่าโดยการเรียกดูที่อยู่ IP แบบสาธารณะของพร็อกซี 1

คัดลอกการกำหนดค่าไปยังเซิร์ฟเวอร์พร็อกซีที่สอง

  1. คัดลอกไฟล์ tableau.conf จากพร็อกซี 1 และบันทึกไปยังไดเรกทอรี /etc/httpd/conf.d บนโฮสต์ของพร็อกซี 2
  2. หยุดแล้วเริ่มต้น httpd

    sudo systemctl stop httpd
    sudo systemctl start httpd
  3. ตรวจสอบการกำหนดค่าโดยการเรียกดูที่อยู่ IP แบบสาธารณะของพร็อกซี 2

กำหนดค่าตัวจัดสรรภาระงานแอปพลิเคชัน AWS

กำหนดค่าตัวจัดสรรภาระงานในฐานะ HTTP Listener ขั้นตอนตรงนี้อธิบายวิธีเพิ่มตัวจัดสรรภาระงานใน AWS

ขั้นตอนที่ 1: สร้างกลุ่มเป้าหมาย

กลุ่มเป้าหมายคือการกำหนดค่า AWS ที่กำหนดอินสแตนซ์ EC2 เพื่อเรียกใช้เซิร์ฟเวอร์พร็อกซีของคุณ สิ่งเหล่านี้เป็นเป้าหมายสำหรับการเข้าชมจาก LBS

  1. Ec2>กลุ่มเป้าหมาย > สร้างกลุ่มเป้าหมาย

  2. ในหน้าสร้าง ให้ทำสิ่งต่อไปนี้

    • ป้อนชื่อกลุ่มเป้าหมาย เช่น TG-internal-HTTP
    • ประเภทเป้าหมาย: อินสแตนซ์
    • โปรโตคอล: HTTP
    • พอร์ต: 80
    • VPC: เลือก VPC ของคุณ
    • ในส่วนการตรวจสอบประสิทธิภาพการทำงาน > การตั้งค่าการตรวจสอบประสิทธิภาพการทำงานขั้นสูง > โค้ดความสำเร็จ ให้ผนวกรายการโค้ดเพื่ออ่าน เช่น 200,303
    • คลิกสร้าง
  3. เลือกกลุ่มเป้าหมายที่เพิ่งสร้างขึ้น แล้วคลิกแท็บเป้าหมาย 

    • คลิกแก้ไข
    • เลือกอินสแตนซ์ EC2 (หรืออินสแตนซ์เดี่ยวหากคุณกำลังกำหนดค่าทีละรายการ) ที่กำลังเรียกใช้แอปพลิเคชันพร็อกซี จากนั้นคลิกเพิ่มในการลงทะเบียน
    • คลิกบันทึก

ขั้นตอนที่ 2: เรียกใช้ตัวช่วยตัวจัดสรรภาระงาน

  1. EC2> ตัวจัดสรรภาระงาน > สร้างตัวจัดสรรภาระงาน

  2. ในหน้า "เลือกประเภทตัวจัดสรรภาระงาน" ให้สร้าง Application Load Balancer

หมายเหตุ: UI ที่แสดงเพื่อกำหนดค่าตัวจัดสรรภาระงานไม่สอดคล้องกันในศูนย์ข้อมูล AWS ขั้นตอนด้านล่าง "การกำหนดค่าตัวช่วย" จะจับคู่กับตัวช่วยการกำหนดค่า AWS ที่เริ่มต้นด้วยขั้นตอนที่ 1 กำหนดค่าตัวจัดสรรภาระงาน 

หากศูนย์ข้อมูลของคุณแสดงการกำหนดค่าทั้งหมดในหน้าเดียวที่มีปุ่มสร้างตัวจัดสรรภาระงานที่ด้านล่างของหน้า ให้ทำตามขั้นตอน "การกำหนดค่าหน้าเดียว" ด้านล่าง

  1. กำหนดค่าหน้าการจัดสรรภาระงาน

    • ระบุชื่อ
    • สคีมา: internet-facing (ค่าเริ่มต้น)
    • ประเภทที่อยู่ IP: ipv4 (ค่าเริ่มต้น)
    • Listener (Listener และการกำหนดเส้นทาง):
      1. ปล่อยให้ HTTP Listener เป็นค่าเริ่มต้น
      2. คลิกเพิ่ม Listenerและเพิ่มHTTPS:443
    • VPC: เลือก VPC ที่คุณได้ติดตั้งทุกอย่างไว้
    • โซนความพร้อมใช้งาน:
      • เลือก a และ b สำหรับภูมิภาคศูนย์ข้อมูลของคุณ
      • ในตัวเลือกแบบเลื่อนลงแต่ละรายการที่เกี่ยวข้อง ให้เลือกซับเน็ตสาธารณะ (ที่เซิร์ฟเวอร์พร็อกซีของคุณอยู่)
    • คลิก: กำหนดการตั้งค่าความปลอดภัย
  2. หน้ากำหนดการตั้งค่าความปลอดภัย

    • อัปโหลดใบรับรอง SSL สาธารณะของคุณ
    • คลิกถัดไป: กำหนดค่ากลุ่มความปลอดภัย
  3. หน้ากำหนดค่ากลุ่มความปลอดภัย

    • เลือกกลุ่มการรักษาความปลอดภัยแบบสาธารณะ หากเลือกกลุ่มการรักษาความปลอดภัยที่เป็นค่าเริ่มต้นไว้ ให้ล้างการเลือกดังกล่าว
    • คลิกถัดไป: กำหนดค่าการกำหนดเส้นทาง
  4. หน้ากำหนดค่าการกำหนดเส้นทาง

    • กลุ่มเป้าหมาย: กลุ่มเป้าหมายที่มีอยู่
    • ชื่อ: เลือกกลุ่มเป้าหมายที่คุณสร้างไว้ก่อนหน้านี้
    • คลิกถัดไป: ลงทะเบียนเป้าหมาย
  5. หน้าลงทะเบียนเป้าหมาย

    • ควรแสดงอินสแตนซ์เซิร์ฟเวอร์พร็อกซีสองอินสแตนซ์ที่คุณกำหนดค่าไว้ก่อนหน้านี้
    • คลิกถัดไป: ตรวจสอบ
  6. หน้าตรวจสอบ

    คลิกสร้าง

การกำหนดค่าพื้นฐาน

  • ระบุชื่อ
  • สคีมา: internet-facing (ค่าเริ่มต้น)
  • ประเภทที่อยู่ IP: ipv4 (ค่าเริ่มต้น)

การแมปเครือข่าย

  • VPC: เลือก VPC ที่คุณได้ติดตั้งทุกอย่างไว้
  • การแมป:
    • เลือกโซนความพร้อมใช้งาน a และ b (หรือเทียบเท่า) สำหรับภูมิภาคศูนย์ข้อมูลของคุณ
    • ในตัวเลือกแบบเลื่อนลงแต่ละรายการที่เกี่ยวข้อง ให้เลือกซับเน็ตสาธารณะ (ที่เซิร์ฟเวอร์พร็อกซีของคุณอยู่)

กลุ่มความปลอดภัย

  • เลือกกลุ่มการรักษาความปลอดภัยแบบสาธารณะ หากเลือกกลุ่มการรักษาความปลอดภัยที่เป็นค่าเริ่มต้นไว้ ให้ล้างการเลือกดังกล่าว
  • Listener และการกำหนดเส้นทาง

    • ปล่อยให้ HTTP Listener เป็นค่าเริ่มต้น สำหรับ Default action (การดำเนินการที่เป็นค่าเริ่มต้น) ให้ระบุกลุ่มเป้าหมายที่คุณเคยตั้งค่าไว้ก่อนหน้านี้
    • คลิกเพิ่ม Listener และเพิ่มHTTPS:443 สำหรับ Default action (การดำเนินการที่เป็นค่าเริ่มต้น) ให้ระบุกลุ่มเป้าหมายที่คุณเคยตั้งค่าไว้ก่อนหน้านี้

    การตั้งค่า Listener ที่ปลอดภัย

    • อัปโหลดใบรับรอง SSL สาธารณะของคุณ

    คลิกสร้างตัวจัดสรรภาระงาน

    ขั้นตอนที่ 3: เปิดใช้งานความสามารถในการดึงดูด

    1. หลังจากสร้างตัวจัดสรรภาระงานแล้ว คุณต้องเปิดใช้งานความสามารถในการดึงดูดกับกลุ่มเป้าหมาย

      • เปิดหน้ากลุ่มเป้าหมาย AWS (EC2> การจัดสรรภาระงาน> กลุ่มเป้าหมาย) เลือกอินสแตนซ์กลุ่มเป้าหมายที่เพิ่งตั้งค่า ในเมนูการดำเนินการ ให้เลือกแก้ไขแอตทริบิวต์
      • ในหน้าแก้ไขแอตทริบิวต์ ให้เลือกความสามารถในการดึงดูด ระบุระยะเวลา 1 day แล้วบันทึกการเปลี่ยนแปลง
    2. ในตัวจัดสรรภาระงาน ให้เปิดใช้ความสามารถในการดึงดูดบน HTTP Listener เลือกตัวจัดสรรภาระงานที่คุณเพิ่งกำหนดค่าไว้ แล้วคลิกแท็บ Listener

      • สำหรับ HTTP:80 ให้คลิกดู/แก้ไขกฎ ในหน้ากฎที่เป็นผลลัพธ์ ให้คลิกไอคอนแก้ไข (เคยอยู่ที่ด้านบนของหน้า แล้วกลับมาอยู่ข้างกฎอีกครั้ง) เพื่อแก้ไขกฎ ลบกฎ THEN ที่มีอยู่และแทนที่กฎดังกล่าวโดยการคลิกเพิ่มการดำเนินการ > ส่งต่อไปยัง... ในการกำหนดค่า THEN ให้เป็นผลลัพธ์ ให้ระบุกลุ่มเป้าหมายเดียวกันกับที่คุณสร้างขึ้น เปิดใช้ความสามารถในการดึงดูดและกำหนดระยะเวลาเป็น 1 วันในส่วนความสามารถในการดึงดูดระดับกลุ่ม บันทึกการตั้งค่าแล้วคลิกอัปเดต

    ขั้นตอนที่ 4: ตั้งค่าการหมดเวลาที่ไม่มีการใช้งานบนตัวกระจายโหลด

    ในตัวกระจายโหลด ให้อัปเดตการหมดเวลาที่ไม่มีการใช้งานเป็น 400 วินาที

    เลือกตัวจัดสรรภาระงานที่กำหนดค่าไว้สำหรับการปรับใช้ แล้วคลิกการดำเนินการ > แก้ไขแอตทริบิวต์ กำหนดการหมดเวลาที่ไม่มีการใช้งานเป็น 400 วินาที จากนั้นคลิกบันทึก

    ขั้นตอนที่ 5: ตรวจสอบการเชื่อมต่อ LBS

    เปิดหน้าตัวจัดสรรภาระงาน AWS (EC2> ตัวจัดสรรภาระงาน) เลือกอินสแตนซ์ตัวจัดสรรภาระงานที่เพิ่งตั้งค่า

    ภายใต้คำอธิบาย ให้คัดลอกชื่อ DNS และวางลงในเบราว์เซอร์เพื่อเข้าถึงหน้าเข้าสู่ระบบ Tableau Server

    หากคุณพบกับข้อผิดพลาดรหัส 500 คุณอาจต้องรีสตาร์ทเซิร์ฟเวอร์พร็อกซี

    อัปเดต DNS ด้วย URL สาธารณะของ Tableau

    ใช้ชื่อโซน DNS ของโดเมนจากคำอธิบายตัวจัดสรรภาระงาน AWS เพื่อสร้างค่า CNAME ใน DNS ระบบควรส่งการเข้าชมไปยัง URL (tableau.example.com) ไปที่ชื่อ DNS สาธารณะของ AWS

    ตรวจสอบการเชื่อมต่อ

    หลังจากที่อัปเดต DNS เสร็จสิ้น คุณควรไปที่หน้าเข้าสู่ระบบ Tableau Server ได้โดยการป้อน URL สาธารณะ เช่น https://tableau.example.com

    ตัวอย่างการกำหนดค่าการตรวจสอบสิทธิ์: SAML ที่มี IdP ภายนอก

    ตัวอย่างต่อไปนี้อธิบายวิธีตั้งค่าและกำหนดค่า SAML ด้วย IdP ของ Okta และโมดูลการตรวจสอบสิทธิ์ Mellon สำหรับการปรับใช้ Tableau ที่ทำงานในสถาปัตยกรรมอ้างอิง AWS ตัวอย่างฮธิบายวิธีกำหนดค่าให้ Tableau Server และเซิร์ฟเวอร์พร็อกซีของ Apache ใช้งาน HTTP Okta จะส่งคำขอไปยังตัวจัดสรรภาระงาน AWS ผ่าน HTTPS แต่การเข้าชมภายในทั้งหมดจะเคลื่อนผ่าน HTTP เมื่อคุณกำหนดค่าสำหรับสถานการณ์นี้ อย่าลืมคำนึงถึงโปรโตคอล HTTP กับ HTTPS เมื่อตั้งค่าสตริง URL

    ตัวอย่างนี้ใช้ Mellon เป็นโมดูลผู้ให้บริการการตรวจสอบสิทธิ์ล่วงหน้าบนเซิร์ฟเวอร์พร็อกซีแบบย้อนกลับ การกำหนดค่านี้จะช่วยให้มั่นใจว่ามีเพียงการเข้าชมที่ตรวจสอบสิทธิ์เท่านั้นที่เชื่อมต่อกับ Tableau Server ซึ่งยังทำหน้าที่เป็นผู้ให้บริการร่วมกับ IdP ของ Okta อีกด้วย ดังนั้น คุณต้องกำหนดค่าแอปพลิเคชัน IdP 2 แบบ ได้แก่ แอปพลิเคชันสำหรับผู้ให้บริการของ Mellon และแอปพลิเคชันสำหรับผู้ให้บริการของ Tableau

    สร้างบัญชีผู้ดูแลระบบ Tableau

    ข้อผิดพลาดทั่วไปเมื่อกำหนดค่า SAML คือการลืมสร้างบัญชีผู้ดูแลระบบบน Tableau Server ก่อนเปิดใช้ SSO

    ขั้นตอนแรกคือการสร้างบัญชีบน Tableau Server โดยมีบทบาทผู้ดูแลเซิร์ฟเวอร์ ตัวอย่างเช่น สถานการณ์ของ Okta ชื่อผู้ใช้ต้องอยู่ในรูปแบบที่อยู่อีเมลที่ถูกต้อง เช่น user@example.com คุณต้องตั้งรหัสผ่านสำหรับผู้ใช้รายนี้ แต่ไม่จำเป็นต้องใช้รหัสผ่านหลังจากกำหนดค่า SAML แล้ว

    กำหนดค่าแอปพลิเคชันตรวจสอบสิทธิ์ล่วงหน้า Okta

    สถานการณ์ตั้งแต่ต้นทางถึงปลายทางที่อธิบายไว้ในส่วนนี้ต้องใช้แอปพลิเคชัน Okta สองแอปดังนี้:

    • แอปพลิเคชันตรวจสอบสิทธิ์ล่วงหน้า Okta
    • แอปพลิเคชัน Okta Tableau Server

    แต่ละแอปพลิเคชันเหล่านี้เชื่อมโยงกับข้อมูลเมตาต่างๆ ซึ่งคุณจะต้องกำหนดค่าบนพร็อกซีแบบย้อนกลับและ Tableau Server ตามลำดับ

    ขั้นตอนนี้อธิบายวิธีสร้างและกำหนดค่าแอปพลิเคชันตรวจสอบสิทธิ์ล่วงหน้า Okta ต่อมาในหัวข้อนี้ คุณจะสร้างแอปพลิเคชัน Okta Tableau Server สำหรับบัญชีทดสอบฟรีของ Okta ที่มีผู้ใช้จำกัด โปรดดูที่หน้าเว็บ Okta Developer(ลิงก์จะเปิดในหน้าต่างใหม่)

    สร้างการผสานรวมแอป SAML สำหรับผู้ให้บริการตรวจสอบสิทธิ์ล่วงหน้า Mellon

    1. เปิดแดชบอร์ดดูแลระบบ Okta > แอปพลิเคชันสร้างการผสานรวมแอป

    2. บนหน้าสร้างการผสานรวมแอป ให้เลือก SAML 2.0 จากนั้นคลิกถัดไป

    3. บนแท็บการตั้งค่าทั่วไป ให้ป้อนชื่อแอป เช่น Tableau Pre-Auth จากนั้นคลิกถัดไป

    4. บนแท็บกำหนดค่า SAML ดังนี้:

      • URL การลงชื่อเพียงครั้งเดียว (SSO) องค์ประกอบสุดท้ายของเส้นทางใน URL การลงชื่อเพียงครั้งเดียวเรียกว่า MellonEndpointPath ในไฟล์การกำหนดค่า mellon.conf ที่ตามมาภายหลังในกระบวนการนี้ คุณสามารถระบุปลายทางที่คุณต้องการได้ ในตัวอย่างนี้ sso คือปลายทาง จำเป็นต้องมีองค์ประกอบสุดท้าย postResponse: https://tableau.example.com/sso/postResponse.
      • ล้างช่องทำเครื่องหมายดังนี้: ใช้สำหรับ URL ผู้รับและ URL ปลายทาง
      • URL ผู้รับ: เหมือนกับ URL SSO แต่มี HTTP ตัวอย่างเช่น http://tableau.example.com/sso/postResponse
      • URL ปลายทาง: เหมือนกับ URL SSO แต่มี HTTP ตัวอย่างเช่น http://tableau.example.com/sso/postResponse
      • URI กลุ่มเป้าหมาย (ID เอนทิตี SP) ตัวอย่างเช่น https://tableau.example.com
      • รูปแบบ ID ชื่อ: EmailAddress
      • ชื่อผู้ใช้แอปพลิเคชัน: Email
      • คำสั่งแอตทริบิวต์: ชื่อ = mail รูปแบบชื่อ = Unspecified ค่า = user.email

      คลิกถัดไป

    5. บนแท็บ ข้อเสนอแนะ ให้เลือกดังนี้:

      • ฉันเป็นลูกค้าของ Okta ที่เพิ่มแอปภายใน
      • นี่คือแอปภายในที่เราสร้างขึ้น
      • คลิกเสร็จสิ้น
    6. สร้างไฟล์ข้อมูลเมตา IdP การตรวจสอบสิทธิ์ล่วงหน้าดังนี้:

      • ใน Okta: แอปพลิเคชัน > แอปพลิเคชัน > แอปพลิเคชันใหม่ของคุณ (เช่น Tableau Pre-Auth) > การลงชื่อเข้าใช้
      • ถัดจากใบรับรองการลงชื่อ SAML ให้คลิกดูคำแนะนำการตั้งค่า SAML
      • บนหน้าวิธีกำหนดค่า SAML 2.0 สำหรับแอปพลิเคชัน <pre-auth> ให้เลื่อนลงไปที่ส่วน ไม่บังคับ ระบุข้อมูลเมตา IDP ต่อไปนี้ให้กับผู้ให้บริการ SP ของคุณ
      • คัดลอกเนื้อหาของฟิลด์ XML และบันทึกลงในไฟล์ชื่อ pre-auth_idp_metadata.xml
    7. (ไม่บังคับ) กำหนดค่าการตรวจสอบสิทธิ์หลายปัจจัยดังนี้:

      • ใน Okta: แอปพลิเคชัน > แอปพลิเคชัน > แอปพลิเคชันใหม่ของคุณ (เช่น Tableau Pre-Auth) > การลงชื่อเข้าใช้
      • ภายใต้นโยบายการลงชื่อเข้าใช้ ให้คลิกเพิ่มกฎ
      • ในกฎการลงชื่อเข้าใช้แอป ให้ระบุชื่อและตัวเลือก MFA ต่างๆ หากต้องการทดสอบฟังก์ชันการทำงาน คุณสามารถกำหนดตัวเลือกทั้งหมดเป็นค่าเริ่มต้น อย่างไรก็ตาม ในส่วนการดำเนินการ คุณต้องเลือกข้อความแจ้งสำหรับปัจจัย จากนั้นระบุความถี่ที่ผู้ใช้ต้องเข้าสู่ระบบ และคลิกบันทึก

    สร้างและกำหนดผู้ใช้ Okta

    1. ใน Okta สร้างผู้ใช้ด้วยชื่อผู้ใช้เดียวกับที่คุณสร้างใน Tableau (user@example.com): ไดเรกทอรี > บุคคล > เพิ่มบุคคล
    2. หลังจากที่สร้างผู้ใช้แล้ว ให้กำหนดแอป Okta ใหม่ให้กับบุคคลนั้นๆ ดังนี้: คลิกชื่อผู้ใช้ จากนั้นกำหนดแอปพลิเคชันในกำหนดแอปพลิเคชัน

    ติดตั้ง Mellon สำหรับการตรวจสอบสิทธิ์ล่วงหน้า

    1. บนอินสแตนซ์ EC2 ที่เรียกใช้เซิร์ฟเวอร์พร็อกซี Apache ให้เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้งโมดูล PHP และ Mellon:

      sudo yum install httpd php mod_auth_mellon

    2. สร้างไดเรกทอรี /etc/httpd/mellon

    กำหนดค่า Mellon เป็นโมดูลการตรวจสอบสิทธิ์ล่วงหน้า

    เรียกใช้กระบวนการนี้ในเซิร์ฟเวอร์พร็อกซีทั้งสองเครื่อง

    คุณต้องมีสำเนาของไฟล์ pre-auth_idp_metadata.xml ที่สร้างไว้จากการกำหนดค่า Okta

    1. เปลี่ยนไดเรกทอรี

      cd /etc/httpd/mellon

    2. สร้างเมตาดาต้าของผู้ให้บริการ เรียกใช้สคริปต์ mellon_create_metadata.sh คุณต้องรวม ID เอนทิตีและ URL การส่งคืนสำหรับองค์กรของคุณในคำสั่ง

      URL การส่งคืนจะเรียกว่า URL สำหรับการลงชื่อเพียงครั้งเดียวใน Okta องค์ประกอบสุดท้ายของเส้นทางใน URL การส่งคืนจะเรียกว่า MellonEndpointPath ในไฟล์การกำหนดค่า mellon.conf ที่จะตามมาภายหลังในกระบวนการนี้ ในตัวอย่างนี้ เราระบุ sso เป็นเส้นทางปลายทาง

      ตัวอย่าง:

      sudo /usr/libexec/mod_auth_mellon/mellon_create_metadata.sh https://tableau.example.com "https://tableau.example.com/sso"

      สคริปต์ส่งคืนใบรับรอง คีย์ และไฟล์เมตาดาต้าของผู้ให้บริการ

    3. เปลี่ยนชื่อไฟล์ของผู้ให้บริการในไดเรกทอรี mellon เพื่อให้อ่านง่ายขึ้น เราจะดูไฟล์เหล่านี้ตามชื่อต่อไปนี้ในเอกสารประกอบ

      sudo mv *.key mellon.key
      sudo mv *.cert mellon.cert
      sudo mv *.xml sp_metadata.xml

    4. คัดลอกไฟล์ pre-auth_idp_metadata.xml ไปยังไดเรกทอรีเดียวกัน

    5. สร้างไฟล์ mellon.conf ในไดเรกทอรี /etc/httpd/conf.d:

      sudo nano /etc/httpd/conf.d/mellon.conf

    6. คัดลอกเนื้อหาต่อไปนี้ลงใน mellon.conf

      <Location />
      MellonSPPrivateKeyFile /etc/httpd/mellon/mellon.key
      MellonSPCertFile /etc/httpd/mellon/mellon.cert
      MellonSPMetadataFile /etc/httpd/mellon/sp_metadata.xml
      MellonIdPMetadataFile /etc/httpd/mellon/pre-auth_idp_metadata.xml
      MellonEndpointPath /sso
      MellonEnable "info"
      </Location>
    7. เพิ่มเนื้อหาต่อไปนี้ไปยังไฟล์ tableau.conf ที่มี:

      ในบล็อก <VirtualHost *:80> ให้เพิ่มเนื้อหาต่อไปนี้ อัปเดต ServerName ด้วยชื่อโฮสต์สาธารณะใน ID เอนทิตีของคุณ:

      DocumentRoot /var/www/html
      ServerName tableau.example.com
      ServerSignature Off
      ErrorLog logs/error_sp.log
      CustomLog logs/access_sp.log combined
      LogLevel info 

      เพิ่มบล็อกตำแหน่งนอกบล็อก <VirtualHost *:80> อัปเดต MellonCookieDomain ด้วยโดเมนระดับสูงเพื่อจัดเก็บข้อมูลคุกกี้ตามรายละเอียดด้านล่าง:

      <Location />
      AuthType Mellon
      MellonEnable auth
      Require valid-user
      MellonCookieDomain example.com					
      </Location>

      ไฟล์ tableau.conf ที่สมบูรณ์จะต้องมีลักษณะคล้ายตัวอย่างต่อไปนี้:

      <VirtualHost *:80>
      ServerAdmin admin@example.com
      ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
      Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
      <Proxy balancer://tableau>
      BalancerMember http://10.0.3.36/ route=1 hcmethod=GET hcexpr=ok234 hcuri=/favicon.ico
      BalancerMember http://10.0.4.15/ route=2 hcmethod=GET hcexpr=ok234 hcuri=/favicon.ico
      ProxySet stickysession=ROUTEID
      </Proxy>
      ProxyPreserveHost On
      ProxyPass / balancer://tableau/
      ProxyPassReverse / balancer://tableau/
      DocumentRoot /var/www/html
      ServerName tableau.example.com
      ServerSignature Off
      ErrorLog logs/error_sp.log
      CustomLog logs/access_sp.log combined
      LogLevel info 
      </VirtualHost>
      <Location />
      AuthType Mellon
      MellonEnable auth
      Require valid-user
      MellonCookieDomain example.com
      </Location>
    8. ตรวจสอบการกำหนดค่า เรียกใช้คำสั่งต่อไปนี้:

      sudo apachectl configtest

      หากการทดสอบการกำหนดค่าเกิดข้อผิดพลาด ให้แก้ไขข้อผิดพลาด แล้วเรียกใช้การทดสอบการกำหนดค่าอีกครั้ง การกำหนดค่าที่ถูกต้องจพแสดงผลเป็น Syntax OK

    9. รีสตาร์ท httpd

      sudo systemctl restart httpd

    สร้างแอปพลิเคชัน Tableau Server ใน Okta

    1. ในแดชบอร์ด Okta: แอปพลิเคชัน > แอปพลิเคชัน > ดูแคตตาล็อกแอป
    2. ในดูแคตตาล็อกการผสานรวมแอป ให้ค้นหา Tableau เลือกชิ้นส่วน Tableau Server แล้วคลิกเพิ่ม
    3. ในส่วนเพิ่ม Tableau Server > การตั้งค่าทั่วไป ให้ป้อนป้ายกำกับแล้วคลิกถัดไป
    4. ในตัวเลือกการลงชื่อ ให้เลือก SAML 2.0 แล้วเลื่อนลงไปที่การตั้งค่าการลงชื่อขั้นสูง ดังนี้
      • ID เอนทิตี SAML: ป้อน URL สาธารณะ เช่น https://tableau.example.com
      • รูปแบบชื่อผู้ใช้แอปพลิเคชัน: อีเมล
    5. คลิกลิงก์ข้อมูลเมตาของผู้ให้บริการข้อมูลระบุตัวตนเพื่อเปิดเบราว์เซอร์ คัดลอกลิงก์เบราว์เซอร์ คุณจะใช้ลิงก์นี้เมื่อกำหนดค่า Tableau ในขั้นตอนถัดไป
    6. คลิกเสร็จสิ้น
    7. มอบหมายแอป Okta ใหม่สำหรับ Tableau Server ให้กับผู้ใช้ (user@example.com): คลิกชื่อผู้ใช้จากนั้นมอบหมายแอปพลิเคชันในมอบหมายแอปพลิเคชัน

    เปิดใช้งาน SAML บน Tableau Server สำหรับ IdP

    เรียกใช้โพรซีเยอร์นี้บน Tableau Server โหนด 1

    1. ดาวน์โหลดข้อมูลเมตาของแอปพลิเคชัน Tableau Server จาก Okta ใช้ลิงก์ที่คุณบันทึกไว้จากขั้นตอนก่อนหน้านี้:

      wget https://dev-66144217.okta.com/app/exk1egxgt1fhjkSeS5d7/sso/saml/metadata -O idp_metadata.xml

    2. คัดลอกใบรับรอง TLS และไฟล์สำคัญที่เกี่ยวข้องไปยัง Tableau Server ไฟล์สำคัญต้องเป็นคีย์ RSA หากต้องการหากต้องการข้อมูลเพิ่มเติมเกี่ยวกับใบรับรองและข้อกำหนดของ IdP โปรดดู ข้อกำหนดของ SAML Requirement (Linux(ลิงก์จะเปิดในหน้าต่างใหม่))

      หากต้องการทำให้การปรับใช้และการจัดการใบรับรองง่ายขึ้น พร้อมทั้งเป็นแนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัย เราขอแนะนำให้ใช้ใบรับรองที่สร้างโดยผู้ออกใบรับรอง (CA) บุคคลที่สามรายใหญ่ที่เชื่อถือได้ หรือคุณอาจสร้างใบรับรองที่ลงนามด้วยตนเองหรือใช้ใบรับรองจาก PKI สำหรับ TLS ก็ได้เช่นกัน

      หากไม่มีใบรับรอง TLS คุณสามารถสร้างใบรับรองที่ลงนามเองได้โดยใช้โพรซีเยอร์ที่ฝังไว้ด้านล่าง

      สร้างใบรับรองที่ลงนามเอง

      เรียกใช้โพรซีเยอร์นี้บน Tableau Server โหนด 1

      1. สร้างคีย์ผู้ออกใบรับรอง (CA) ระดับรูทที่ลงนาม

        openssl genrsa -out rootCAKey-saml.pem 2048

      2. สร้างใบรับรอง CA ระดับรูท

        openssl req -x509 -sha256 -new -nodes -key rootCAKey-saml.pem -days 3650 -out rootCACert-saml.pem

        ระบบจะแจ้งให้คุณป้อนค่าสำหรับฟิลด์ใบรับรอง ตัวอย่าง:

        Country Name (2 letter code) [XX]:US
        State or Province Name (full name) []:Washington
        Locality Name (eg, city) [Default City]:Seattle
        Organization Name (eg, company) [Default Company Ltd]:Tableau
        Organizational Unit Name (eg, section) []:Operations
        Common Name (eg, your name or your server's hostname) []:tableau.example.com
        Email Address []:example@tableau.com
      3. สร้างใบรับรองและคีย์ที่เกี่ยวข้อง (server-saml.csr และ server-saml.key ในตัวอย่างด้านล่าง) ชื่อเรื่องของใบรับรองต้องตรงกับชื่อโฮสต์สาธารณะของโฮสต์ Tableau ระบบกำหนดชื่อเรื่องด้วยตัวเลือก -subj ที่มีรูปแบบ "/CN=<host-name>" เช่น

        openssl req -new -nodes -text -out server-saml.csr -keyout server-saml.key -subj "/CN=tableau.example.com"

      4. ลงนามใบรับรองใหม่ด้วยใบรับรอง CA ที่สร้างไว้ด้านบน คำสั่งต่อไปนี้ยังส่งออกใบรับรองในรูปแบบ crt อีกด้วย

        openssl x509 -req -in server-saml.csr -days 3650 -CA rootCACert-saml.pem -CAkey rootCAKey-saml.pem -CAcreateserial -out server-saml.crt

      5. แปลงไฟล์สำคัญเป็น RSA Tableau ต้องใช้ไฟล์สำคัญ RSA สำหรับ SAML หากต้องการแปลงคีย์ ให้เรียกใช้คำสั่งต่อไปนี้:

        openssl rsa -in server-saml.key -out server-saml-rsa.key

    3. กำหนดค่า SAML เรียกใช้คำสั่งต่อไปนี้ โดยระบุ ID เอนทิตีและ URL การส่งคืน และเส้นทางไปยังไฟล์ข้อมูลเมตา ไฟล์ใบรับรอง และไฟล์สำคัญ:

      tsm authentication saml configure --idp-entity-id "https://tableau.example.com" --idp-return-url "https://tableau.example.com" --idp-metadata idp_metadata.xml --cert-file "server-saml.crt" --key-file "server-saml-rsa.key"

      tsm authentication saml enable

    4. หากองค์กรของคุณใช้ Tableau Desktop 2021.4 หรือใหม่กว่า คุณจะต้องเรียกใช้คำสั่งต่อไปนี้เพื่อเปิดใช้งานการตรวจสอบสิทธิ์ผ่านเซิร์ฟเวอร์พร็อกซีแบบย้อนกลับ

      เวอร์ชันของ Tableau Desktop 2021.2.1 - 2021.3 จะทำงานโดยไม่ต้องมีการเรียกใช้คำสั่งนี้ โดยที่โมดูลการตรวจสอบสิทธิ์ล่วงหน้าของคุณ (เช่น Mellon) จะได้รับการกำหนดค่าให้อนุญาตการเก็บรักษาคุกกี้ของโดเมนระดับบนสุดเอาไว้

      tsm configuration set -k features.ExternalBrowserOAuth -v false

    5. ปรับใช้การเปลี่ยนแปลงการกำหนดค่า:

      tsm pending-changes apply

    ตรวจสอบฟังก์ชันการทำงานของ SAML

    หากต้องการตรวจสอบฟังก์ชันการทำงานของ SAML ตั้งแต่ต้นทางถึงปลายทาง ให้เข้าสู่ระบบ Tableau Server ผ่าน URL สาธารณะ (เช่น https://tableau.example.com) ด้วยบัญชีผู้ดูแลระบบ Tableau ที่สร้างไว้ตอนเริ่มต้นกระบวนการนี้

    การแก้ไขปัญหาการตรวจสอบ

    คำขอไม่ถูกต้อง: ข้อผิดพลาดทั่วไปสำหรับสถานการณ์นี้คือข้อผิดพลาด “คำขอไม่ถูกต้อง” จาก Okta ปัญหานี้มักจะเกิดขึ้นเมื่อเบราว์เซอร์แคชข้อมูลจากเซสชัน Okta ก่อนหน้า ตัวอย่างเช่น หากคุณจัดการแอปพลิเคชัน Okta ในฐานะผู้ดูแลระบบ Okta และพยายามเข้าถึง Tableau โดยใช้บัญชีอื่นที่เปิดใช้งาน Okta ข้อมูลเซสชันจากข้อมูลผู้ดูแลระบบอาจทำให้เกิดข้อผิดพลาด “คำขอไม่ถูกต้อง” หากข้อผิดพลาดนี้ยังคงอยู่แม้ภายหลังจากที่ล้างแคชของเบราว์เซอร์ในเครื่องไปแล้ว ลองตรวจสอบสถานการณ์ของ Tableau โดยการเชื่อมต่อกับเบราว์เซอร์อื่น

    สาเหตุอื่นของข้อผิดพลาด “คำขอไม่ถูกต้อง” คือการพิมพ์ผิดใน URL รายการใดรายการหนึ่งที่ป้อนระหว่างกระบวนการกำหนดค่า Okta, Mellon และ SAML ตรวจสอบรายละเอียดต่อไปนี้โดยละเอียด

    ไฟล์ httpd error.log บนเซิร์ฟเวอร์ Apache มักจะระบุว่า URL ใดที่ทำให้เกิดข้อผิดพลาด

    ไม่พบ - ไม่พบ URL ที่ขอในเซิร์ฟเวอร์นี้: ข้อผิดพลาดนี้แสดงถึงหนึ่งในข้อผิดพลาดในการกำหนดค่า

    หากผู้ใช้ได้รับการตรวจสอบสิทธิ์กับ Okta แล้วได้รับข้อผิดพลาดนี้ เป็นไปได้ว่าคุณได้อัปโหลดแอปพลิเคชันการตรวจสอบสิทธิ์ล่วงหน้าของ Okta ไปยัง Tableau Server เมื่อกำหนดค่า SAML ตรวจสอบว่าคุณมีเมตาดาต้าของแอปพลิเคชัน Tableau Server ใน Okta ที่กำหนดค่าบน Tableau Server ไม่ใช่เมตาดาต้าของแอปพลิเคชันการตรวจสอบสิทธิ์ล่วงหน้าของ Okta

    ขั้นตอนการแก้ปัญหาอื่นๆ มีดังนี้

    • ตรวจสอบ tableau.conf โดยละเอียดว่ามีการสะกดคำผิดหรือข้อผิดพลาดการกำหนดค่าหรือไม่
    • ตรวจสอบการตั้งค่าแอปพลิเคชันการตรวจสอบสิทธิ์ล่วงหน้าของ Okta ตรวจสอบว่าได้ตั้งค่าโปรโตคอล HTTP กับ HTTPS ตามที่ระบุไว้ในหัวข้อนี้
    • รีสตาร์ท httpd บนเซิร์ฟเวอร์พร็อกซีทั้งสอง
    • ตรวจสอบว่า sudo apachectl configtest ส่งข้อความว่า “Syntax OK” บนเซิร์ฟเวอร์พร็อกซีทั้งสองหรือไม่
    • ตรวจสอบว่าได้กำหนดผู้ใช้ทดสอบให้กับทั้งสองแอปพลิเคชันใน Okta
    • ตรวจสอบว่าได้ตั้งค่าความสามารถในการดึงดูดบนตัวจัดสรรภาระงานและกลุ่มเป้าหมายที่เกี่ยวข้อง

    กำหนดค่า SSL/TLS จากตัวจัดสรรภาระงานไปยัง Tableau Server

    บางองค์กรต้องมีช่องทางการเข้ารหัสตั้งแต่ต้นทางถึงปลายทางจากไคลเอ็นต์ไปยังบริการแบ็กเอนด์ สถาปัตยกรรมอ้างอิงเริ่มต้นตามที่อธิบายไว้ในส่วนนี้ระบุ SSL จากไคลเอ็นต์ไปยังตัวจัดสรรภาระงานที่ทำงานในระดับเว็บขององค์กร

    หากต้องการกำหนดค่า SSL จากตัวจัดสรรภาระงานไปยัง Tableau Server คุณต้อง:

    • ติดตั้งใบรับรอง SSL ที่ใช้งานได้ที่ Tableau Server และพร็อกซี
    • กำหนดค่า SSL จากตัวจัดสรรภาระงานไปยังเซิร์ฟเวอร์พร็อกซีย้อนกลับ
    • กำหนดค่า SSL จากเซิร์ฟเวอร์พร็อกซีไปยัง Tableau Server
    • นอกจากนี้ คุณยังสามารถกำหนดค่า SSL จาก Tableau Server ไปยังอินสแตนซ์ PostgreSQL ได้อีกด้วย

    ส่วนที่เหลือในหัวข้อนี้อธิบายการนำไปใช้งานในบริบทของสถาปัตยกรรมอ้างอิงตัวอย่าง AWS

    ตัวอย่าง: กำหนดค่า SSL/TLS ในสถาปัตยกรรมอ้างอิง AWS

    ส่วนนี้อธิบายวิธีกำหนดค่า SSL บน Tableau และกำหนดค่า SSL บนเซิร์ฟเวอร์ Apache โดยทั้งหมดนี้ทำงานบนสถาปัตยกรรมอ้างอิงตัวอย่าง AWS

    กระบวนการ Linux ทั่วทั้งตัวอย่างนี้แสดงคำสั่งสำหรับการกระจายที่คล้ายกับ RHEL โดยระบบได้พัฒนาคำสั่งตรงนี้โดยเฉพาะด้วยการกระจาย Amazon Linux 2 หากเรียกใช้การกระจาย Ubuntu ให้แก้ไขคำสั่งให้สอดคล้องกัน

    ขั้นตอนที่ 1: รวบรวมใบรับรองและคีย์ที่เกี่ยวข้อง

    หากต้องการทำให้การปรับใช้และการจัดการใบรับรองง่ายขึ้น พร้อมทั้งเป็นแนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัย เราขอแนะนำให้ใช้ใบรับรองที่สร้างโดยผู้ออกใบรับรอง (CA) บุคคลที่สามรายใหญ่ที่เชื่อถือได้

    หรือคุณอาจสร้างใบรับรองที่ลงนามด้วยตนเองหรือใช้ใบรับรองจาก PKI สำหรับ TLS ก็ได้เช่นกัน

    กระบวนการต่อไปนี้คือกระบวนการสร้างใบรับรองที่ลงลายเซ็นเอง หากคุณใช้ใบรับรองของบุคคลที่สามตามที่เราแนะนำ คุณสามารถข้ามขั้นตอนนี้ได้

    เรียกใช้กระบวนการนี้บนโฮสต์พร็อกซีใดโฮสต์พร็อกซีหนึ่ง หลังจากสร้างใบรับรองและคีย์ที่เกี่ยวข้องแล้ว คุณจะต้องแชร์ไปยังโฮสต์พร็อกซีอื่นและไปยัง Tableau Server โหนด 1

    1. สร้างคีย์ผู้ออกใบรับรอง (CA) ระดับรูทที่ลงนาม

      openssl genrsa -out rootCAKey.pem 2048

    2. สร้างใบรับรอง CA ระดับรูท

      openssl req -x509 -sha256 -new -nodes -key rootCAKey.pem -days 3650 -out rootCACert.pem

      ระบบจะแจ้งให้คุณป้อนค่าสำหรับฟิลด์ใบรับรอง ตัวอย่าง:

      Country Name (2 letter code) [XX]:US
      State or Province Name (full name) []:Washington
      Locality Name (eg, city) [Default City]:Seattle
      Organization Name (eg, company) [Default Company Ltd]:Tableau
      Organizational Unit Name (eg, section) []:Operations
      Common Name (eg, your name or your server's hostname) []:tableau.example.com
      Email Address []:example@tableau.com
    3. สร้างใบรับรองและคีย์ที่เกี่ยวข้อง (serverssl.csr และ serverssl.key ในตัวอย่างด้านล่าง) ชื่อเรื่องของใบรับรองต้องตรงกับชื่อโฮสต์สาธารณะของโฮสต์ Tableau ระบบกำหนดชื่อเรื่องด้วยตัวเลือก -subj ที่มีรูปแบบ "/CN=<host-name>" เช่น

      openssl req -new -nodes -text -out serverssl.csr -keyout serverssl.key -subj "/CN=tableau.example.com"

    4. ลงนามใบรับรองใหม่ด้วยใบรับรอง CA ที่สร้างไว้ในขั้นตอนที่ 2 คำสั่งต่อไปนี้ยังส่งออกใบรับรองในรูปแบบ crt อีกด้วย

      openssl x509 -req -in serverssl.csr -days 3650 -CA rootCACert.pem -CAkey rootCAKey.pem -CAcreateserial -out serverssl.crt

    ขั้นตอนที่ 2: กำหนดค่าเซิร์ฟเวอร์พร็อกซีสำหรับ SSL

    เรียกใช้กระบวนการนี้ในเซิร์ฟเวอร์พร็อกซีทั้งสองเครื่อง

    1. ติดตั้งโมดูล SSL ของ Apache:

      sudo yum install mod_ssl

    2. สร้างไดเรกทอรี /etc/ssl/private:

      sudo mkdir -p /etc/ssl/private

    3. คัดลอกไฟล์ crt และคีย์ไปยังพาธ /etc/ssl/ ต่อไปนี้:

      sudo cp serverssl.crt /etc/ssl/certs/

      sudo cp serverssl.key /etc/ssl/private/

    4. อัปเดต tableau.conf ที่มีด้วยรายการอัปเดตต่อไปนี้:

      • เพิ่มบล็อกเขียนทับ SSL:
        RewriteEngine on
        RewriteCond %{SERVER_NAME} =tableau.example.com
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
      • ในบล็อกเขียนทับ SSL ให้อัปเดตชื่อเซิร์ฟเวอร์ RewriteCond: เพิ่มชื่อโฮสต์สาธารณะของคุณ เช่น tableau.example.com
      • เปลี่ยน <VirtualHost *:80> เป็น <VirtualHost *:443>
      • ครอบบล็อก <VirtualHost *:443> และ <Location /> ด้วย <IfModule mod_ssl.c> ... </IfModule>
      • BalancerMember: เปลี่ยนโปรโตคอลจาก http เป็น https
      • เพิ่มส่วนประกอบ SSL* ในบล็อก <VirtualHost *:443>:
        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/serverssl.crt
        SSLCertificateKeyFile /etc/ssl/private/serverssl.key
        SSLProxyEngine on
        SSLProxyVerify none
        SSLProxyCheckPeerName off
        SSLProxyCheckPeerExpire off
      • ในส่วนประกอบ LogLevel: เพิ่ม ssl:warn
      • ไม่บังคับ: หากคุณติดตั้งและกำหนดค่าโมดูลยืนยันตัวตนแล้ว คุณสามารถเพิ่มส่วนประกอบเพิ่มเติมในไฟล์ tableau.conf ได้ เช่น บล็อก <Location /> </Location> จะประกอบไปด้วยส่วนประกอบ

      ดูตัวอย่างไฟล์ tableau.conf ที่กำหนดค่าสำหรับ SSL ได้ที่นี่:

      RewriteEngine on
      RewriteCond %{SERVER_NAME} =tableau.example.com
      RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
      
      <IfModule mod_ssl.c>
      <VirtualHost *:443>
      ServerAdmin admin@example.com
      ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
      Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
      <Proxy balancer://tableau>
      BalancerMember https://10.0.3.36/ route=1 hcmethod=GET hcexpr=ok234 hcuri=/favicon.ico
      BalancerMember https://10.0.4.15/ route=2 hcmethod=GET hcexpr=ok234 hcuri=/favicon.ico
      ProxySet stickysession=ROUTEID
      </Proxy>
      ProxyPreserveHost On
      ProxyPass / balancer://tableau/
      ProxyPassReverse / balancer://tableau/
      DocumentRoot /var/www/html
      ServerName tableau.example.com
      ServerSignature Off
      ErrorLog logs/error_sp.log
      CustomLog logs/access_sp.log combined
      LogLevel info ssl:warn
      SSLEngine on
      SSLCertificateFile /etc/ssl/certs/serverssl.crt
      SSLCertificateKeyFile /etc/ssl/private/serverssl.key
      SSLProxyEngine on
      SSLProxyVerify none
      SSLProxyCheckPeerName off
      SSLProxyCheckPeerExpire off
      </VirtualHost>
      <Location />
      #If you have configured a pre-auth module (e.g. Mellon) include those elements here.
      </Location>
      </IfModule>
    5. เพิ่มไฟล์ index.html เพื่อแก้ไขข้อผิดพลาด 403:

      sudo touch /var/www/html/index.html
    6. รีสตาร์ท httpd

      sudo systemctl restart httpd

    ขั้นตอนที่ 3: กำหนดค่า Tableau Server สำหรับ SSL ภายนอก

    คัดลอกไฟล์ serverssl.crt และ serverssl.key จากโฮสต์พร็อกซี 1 ไปยัง Tableau Server (โหนด 1) เริ่มต้น

    เรียกใช้คำสั่งต่อไปนี้บนโหนด 1

    tsm security external-ssl enable --cert-file serverssl.crt --key-file serverssl.key
    tsm pending-changes apply

    ขั้นตอนที่ 4: การกำหนดค่าการยืนยันตัวตนแบบไม่บังคับ

    หากกำหนดค่าผู้ให้บริการข้อมูลประจำตัวภายนอกสำหรับ Tableau แล้ว คุณอาจต้องอัปเดต URL การส่งคืนในแดชบอร์ดการดูแลระบบสำหรับ IdP

    ตัวอย่างเช่น หากใช้แอปพลิเคชันการตรวจสอบสิทธิ์ล่วงหน้าของ Okta คุณจะต้องอัปเดตแอปพลิเคชันดังกล่าวเพื่อใช้โปรโตคอล HTTPS สำหรับ URL ผู้รับและ URL ปลายทาง

    ขั้นตอนที่ 5: กำหนดค่าตัวจัดสรรภาระงาน AWS สำหรับ HTTPS

    หากคุณปรับใช้ด้วยตัวจัดสรรภาระงาน AWS ตามที่ระบุในคู่มือนี้ คุณสามารถกำหนดค่าตัวจัดสรรภาระงาน AWS อีกครั้งเพื่อส่งการเข้าชม HTTPS ไปยังเซิร์ฟเวอร์พร็อกซี:

    1. ยกเลิกการลงทะเบียนกลุ่มเป้าหมาย HTTP ที่มี:

      ในกลุ่มเป้าหมาย ให้เลือกกลุ่มเป้าหมาย HTTP ที่ได้กำหนดค่าสำหรับตัวจัดสรรภาระไปแล้ว คลิกการดำเนินการ จากนั้นคลิกลงทะเบียนและยกเลิกการลงทะเบียนอินสแตนซ์

      ที่หน้าลงทะเบียนและยกเลิกการลงทะเบียนเป้าหมาย ให้เลือกอินสแตนซ์ที่กำลังกำหนดค่าอยู่ คลิกยกเลิกการลงทะเบียน จากนั้นคลิกบันทึก

    2. สร้างกลุ่มเป้าหมาย HTTPS

      กลุ่มเป้าหมาย > สร้างกลุ่มเป้าหมาย

      • เลือก “อินสแตนซ์”
      • ป้อนชื่อกลุ่มเป้าหมาย เช่น TG-internal-HTTPS
      • เลือก VPC
      • โปรโตคอล: HTTPS 443
      • ในส่วนการตรวจสอบประสิทธิภาพการทำงาน > การตั้งค่าการตรวจสอบประสิทธิภาพการทำงานขั้นสูง > โค้ดความสำเร็จ ให้ผนวกรายการโค้ดเพื่ออ่าน เช่น 200,303
      • คลิกสร้าง
    3. เลือกกลุ่มเป้าหมายที่เพิ่งสร้างขึ้น แล้วคลิกแท็บเป้าหมาย 

      • คลิกแก้ไข
      • เลือกอินสแตนซ์ EC2 ที่เรียกใช้แอปพลิเคชันพร็อกซี จากนั้นคลิกเพิ่มไปยังที่ลงทะเบียนแล้ว
      • คลิกบันทึก
    4. หลังจากที่สร้างกลุ่มเป้าหมายแล้ว คุณต้องเปิดใช้งานความสามารถในการดึงดูด

      • เปิดหน้ากลุ่มเป้าหมาย AWS (EC2> การจัดสรรภาระงาน> กลุ่มเป้าหมาย) เลือกอินสแตนซ์กลุ่มเป้าหมายที่เพิ่งตั้งค่า ในเมนูการดำเนินการ ให้เลือกแก้ไขแอตทริบิวต์
      • ในหน้าแก้ไขแอตทริบิวต์ ให้เลือกความสามารถในการดึงดูด ระบุระยะเวลา 1 day แล้วบันทึกการเปลี่ยนแปลง
    5. อัปเดตกฎลิสเทนเนอร์ในตัวจัดสรรภาระงาน เลือกตัวจัดสรรภาระงานที่กำหนดค่าไว้สำหรับการปรับใช้ แล้วคลิกแท็บลิสเทนเนอร์

      • สำหรับ HTTP:80 ให้คลิกดู/แก้ไขกฎ ในหน้ากฎที่เป็นผลลัพธ์ ให้คลิกไอคอนแก้ไข (เคยอยู่ที่ด้านบนของหน้า แล้วกลับมาอยู่ข้างกฎอีกครั้ง) เพื่อแก้ไขกฎ ลบกฎ THEN ที่มีอยู่แล้วแทนที่กฎดังกล่าวโดยการคลิกเพิ่มการดำเนินการ > เปลี่ยนเส้นทางไปยัง... ในการกำหนดค่า THEN ที่เป็นผลลัพธ์ ให้ระบุ HTTPS และพอร์ต 443 แล้วคงตัวเลือกอื่นๆ ตามการตั้งค่าเริ่มต้น บันทึกการตั้งค่าแล้วคลิกอัปเดต
      • สำหรับ HTTP:443 ให้คลิกดู/แก้ไขกฎ ในหน้ากฎที่เป็นผลลัพธ์ ให้คลิกไอคอนแก้ไข (เคยอยู่ที่ด้านบนของหน้า แล้วกลับมาอยู่ข้างกฎอีกครั้ง) เพื่อแก้ไขกฎ ในการกำหนดค่า THEN ใต้ส่งไปยัง... ให้เปลี่ยนกลุ่มเป้าหมายเป็นกลุ่ม HTTPS ที่คุณเพิ่งสร้างขึ้น เปิดใช้ความสามารถในการดึงดูดและกำหนดระยะเวลาเป็น 1 วันในส่วนความสามารถในการดึงดูดระดับกลุ่ม บันทึกการตั้งค่าแล้วคลิกอัปเดต

    ขั้นตอนที่ 6: ตรวจสอบ SSL

    ตรวจสอบการกำหนดค่าโดยเรียกดูไปยัง https://tableau.example.com

    ขอบคุณสำหรับข้อเสนอแนะของคุณส่งข้อเสนอแนะของคุณเรียบร้อยแล้ว ขอขอบคุณ