ตั้งค่า Amazon RedShift IAM OAuth
เริ่มตั้งแต่ Tableau 2023.3.2 เป็นต้นไป คุณสามารถใช้ OAuth 2.0/OIDC เพื่อรวบรวมข้อมูลประจำตัวจากผู้ให้บริการข้อมูลประจำตัวภายนอกไปยัง Amazon Redshift
คำแนะนำเหล่านี้มีไว้สำหรับบริการ AWS IAM รุ่นเก่า สำหรับการผสานรวม IAM IDC โปรดดูตั้งค่า OAuth ของ Amazon RedShift IAM Identity Center
มีขั้นตอนต่างๆ ที่จำเป็นในการกำหนดค่าการผสานรวม ทั้งนี้ขึ้นอยู่กับผู้ให้บริการข้อมูลประจำตัว นี่คือภาพรวมระดับสูง Tableau ไม่สามารถให้คำแนะนำโดยละเอียดเกี่ยวกับวิธีกำหนดค่า AWS หรือ IDP ได้ แต่วิธีการทั่วไปจะอธิบายไว้ด้านล่างนี้
หมายเหตุ: ไม่รองรับโทเค็นการรีเฟรชแบบใช้ครั้งเดียว (บางครั้งเรียกว่าโทเค็นการรีเฟรชแบบหมุนเวียนหรือการหมุนเวียนโทเค็นการรีเฟรช) สำหรับการเชื่อมต่อ OAuth กับ Tableau ในขณะนี้ มีการวางแผนที่จะรองรับโทเค็นเหล่านี้สำหรับการเปิดตัวในอนาคต
ขั้นตอนที่ 1: กำหนดค่า IDP
สร้างไคลเอ็นต์ OAuth บน IDP สำหรับ Tableau Desktop และ Tableau Server หรือ Tableau Cloud ไคลเอ็นต์ Desktop ควรเปิดใช้งาน
PKCEและใช้การเปลี่ยนเส้นทางhttp://localhostเพิ่มการอ้างสิทธิ์ที่กำหนดเองเพื่อใช้การให้สิทธิ์บทบาท โดยเฉพาะอย่างยิ่ง หากคุณใช้ IAM ดั้งเดิม คุณอาจต้องเพิ่มการอ้างสิทธิ์สำหรับ
DbUserและDbGroupsสิ่งเหล่านี้สามารถนำมาใช้ในนโยบาย IAM ของคุณในภายหลังได้สร้างไฟล์การกำหนดค่า Tableau OAuth ดูเอกสารประกอบได้ที่ GitHub(ลิงก์จะเปิดในหน้าต่างใหม่) และตัวอย่างที่นี่(ลิงก์จะเปิดในหน้าต่างใหม่) เรายินดีรับตัวอย่างสำหรับ IDP อื่นๆ
อย่าลืมใส่ ID การกำหนดค่า Tableau OAuth นำหน้าด้วย “
custom_”หมายเหตุ: ID การกำหนดค่า OAuth มีขีดจำกัดอักขระสูงสุด 36 ตัว ID ที่ยาวกว่านี้อาจไม่สร้างข้อผิดพลาด แต่จะใช้งานไม่ได้
หาก IDP ของคุณรองรับพอร์ต localhost แบบไดนามิก ให้ปิดใช้งาน
OAUTH_CAP_FIXED_PORT_IN_CALLBACK_URLหาก IDP ของคุณไม่รองรับสิ่งนี้ ตรวจสอบว่าได้เพิ่ม URL การเรียกกลับ localhost หลายรายการในรายการที่อนุญาตในไฟล์การกำหนดค่าและบน IDP
ติดตั้งไฟล์การกำหนดค่า Tableau OAuth ใหม่ในโฟลเดอร์
OAuthConfigsที่เชื่อมโยงกับแต่ละแอปพลิเคชันบนโฮสต์เดสก์ท็อป (Tableau Desktop, Tableau Prep Builder, Tableau Bridge) และบน Tableau Server และไซต์ Tableau Cloud แต่ละไซต์ที่จะใช้ OAuth
กำหนดค่า IDP บน AWS
1. สร้างโมเดล IDP บน AWS ดูเอกสารของ Amazon หัวข้อการรวมศูนย์ข้อมูลประจำตัวของเว็บ(ลิงก์จะเปิดในหน้าต่างใหม่)และสร้างผู้ให้บริการข้อมูลประจำตัว OIDC(ลิงก์จะเปิดในหน้าต่างใหม่)
2. สร้างบทบาทและนโยบายสำหรับ IDP โดยเฉพาะ ดูสร้างบทบาทสำหรับ OIDC(ลิงก์จะเปิดในหน้าต่างใหม่) บนเอกสาร AWS
กำหนดค่าบทบาทสำหรับผู้ใช้ RedShift
แนบนโยบายที่จำเป็นสำหรับ Redshift คุณสามารถใช้การอ้างสิทธิ์ที่กำหนดเองจากโทเค็นเพื่อให้สิทธิ์บทบาทได้ มีตัวอย่าง SAML อยู่หลายตัวอย่างในเอกสารประกอบของ AWS(ลิงก์จะเปิดในหน้าต่างใหม่) โดยสามารถปรับให้เข้ากับ OAuth ได้อย่างง่ายดาย ในกรณีของ OAuth การอ้างสิทธิ์เป็นเพียง “DbUser”, “DbGroups” เป็นต้น
ต่อไปนี้คือตัวอย่างนโยบายจากเอกสาร AWS:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "redshift:GetClusterCredentials",
"Resource": [
"arn:aws:redshift:us-west-1:123456789012:dbname:cluster-identifier/dev",
"arn:aws:redshift:us-west-1:123456789012:dbuser:cluster-identifier/${redshift:DbUser}",
"arn:aws:redshift:us-west-1:123456789012:cluster:cluster-identifier"
],
"Condition": {
"StringEquals": {
"aws:userid": "AROAJ2UCCR6DPCEXAMPLE:${redshift:DbUser}@example.com"
}
}
},
{
"Effect": "Allow"
"Action": "redshift:CreateClusterUser",
"Resource": "arn:aws:redshift:us-west-1:12345:dbuser:cluster-identifier/${redshift:DbUser}"
},
{
"Effect": "Allow",
"Action": "redshift:JoinGroup",
"Resource": "arn:aws:redshift:us-west-1:12345:dbgroup:cluster-identifier/my_dbgroup"
},
{
"Effect": "Allow",
"Action": [
"redshift:DescribeClusters",
"iam:ListRoles"
],
"Resource": "*"
}
]
}เชื่อมต่อกับ Redshift
ผู้ใช้ต้องระบุบทบาท ARN ที่จะรับและเลือกการกำหนดค่า OAuth ที่ติดตั้งไว้ก่อนหน้านี้

เมื่อกำหนดค่าไว้อย่างถูกต้อง ระบบจะเปลี่ยนเส้นทางผู้ใช้ไปยัง IDP เพื่อตรวจสอบสิทธิ์และให้สิทธิ์โทเค็นสำหรับ Tableau Tableau จะได้รับโทเค็น openid และการรีเฟรช AWS สามารถตรวจสอบโทเค็นและลายเซ็นจาก IDP, แยกข้อมูลการอ้างสิทธิ์จากโทเค็น, ค้นหาการแมปของการอ้างสิทธิ์กับบทบาท IAM และอนุญาตหรือบล็อก Tableau จากการรับบทบาทในนามของผู้ใช้ (กล่าวอีกนัยหนึ่งคือAssumeRoleWithWebIdentity(ลิงก์จะเปิดในหน้าต่างใหม่))
โทเค็น
ตามค่าเริ่มต้น Redshift OAuth IAM จะส่งโทเค็น ID ไปยังไดรเวอร์ สำหรับลูกค้าในองค์กร รวมถึงลูกค้าที่ใช้ Tableau Bridge คุณสามารถใช้ไฟล์ TDC เพื่อส่งโทเค็นการเข้าถึงแทนได้
<connection-customization class='redshift' enabled='true' version='10.0'> <vendor name='redshift' /> <driver name='redshift' /> <customizations> <customization name='CAP_OAUTH_FEDERATE_ACCESS_TOKEN' value='yes'/> </customizations> </connection-customization>
หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าและการติดตั้งไฟล์ .tdc โปรดดูปรับแต่งและปรับตั้งการเชื่อมต่อ(ลิงก์จะเปิดในหน้าต่างใหม่)และการใช้ไฟล์ .tdc กับ Tableau Server(ลิงก์จะเปิดในหน้าต่างใหม่)
เกี่ยวกับการรวมศูนย์กลุ่ม
เมื่อใช้การตรวจสอบสิทธิ์ OAuth กับบทบาท IAM คุณสามารถเลือกได้ว่าจะใช้การรวมศูนย์กลุ่มหรือไม่ การเปลี่ยนแปลงนี้จะทำให้ตัวเชื่อมต่อโต้ตอบกับ API การตรวจสอบสิทธิ์เพื่อเชื่อมต่อกับ Redshift:
- เมื่อเลือกช่อง “การรวมศูนย์กลุ่ม” (พร้อมใช้งานในเวอร์ชัน 2025.1 ขึ้นไป) ขณะเชื่อมต่อ ไดรเวอร์ Redshift จะใช้ API สำหรับ
getClusterCredentialsWithIAM(ลิงก์จะเปิดในหน้าต่างใหม่) เพื่อรับข้อมูลเข้าสู่ระบบในคลัสเตอร์ที่จัดสรรไว้ - เมื่อไม่ได้เลือกช่อง “การรวมศูนย์กลุ่ม” จะใช้ API สำหรับ
getClusterCredentials(ลิงก์จะเปิดในหน้าต่างใหม่) แทน
API ทั้งสองนี้จะส่งคืนโทเค็น IAM ที่มีพร็อพเพอร์ตี้ที่แตกต่างกันเล็กน้อย หากต้องการข้อมูลเพิ่มเติม โปรดดูเอกสาร AWS API ที่เชื่อมโยงด้านบนและตัวเลือกไดรเวอร์ ODBC(ลิงก์จะเปิดในหน้าต่างใหม่)
หมายเหตุการใช้งาน
- สำหรับ Tableau Desktop และ Tableau Prep Builder ก่อนเวอร์ชัน 2024.3 สามารถตั้งค่าได้ในฟิลด์การกำหนดค่าไดรเวอร์ขั้นสูงโดยใช้ 'group_federation=1' นอกจากนี้ยังสามารถกำหนดค่าได้โดยใช้ไฟล์ TDC เพื่อกำหนดพร็อพเพอร์ตี้การเชื่อมต่อที่กำหนดเอง หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับการใช้ TDC โปรดดูปรับแต่งและปรับตั้งการเชื่อมต่อ
- ตั้งแต่เวอร์ชัน 2024.3 เป็นต้นไป จะมีฟิลด์ group_federation ในกล่องโต้ตอบการเชื่อมต่อสำหรับภายในองค์กร (Tableau Desktop, Tableau Prep Builder และ Tableau Server) ฟีเจอร์นี้จะพร้อมใช้งานใน Tableau Cloud ตั้งแต่ 2025.1 เป็นต้นไป (พร้อมใช้งานในเดือนกุมภาพันธ์ 2025)
- หากต้องการใช้การรวมศูนย์กลุ่มกับ Tableau Server จะต้องเพิ่ม group_federation ลงในรายการอนุญาตพิเศษ ODBC หากต้องการข้อมูลเพิ่มเติม โปรดดูปรับแต่งสตริงการเชื่อมต่อสำหรับตัวเชื่อมต่อเนทีฟ
Okta
หากใช้ Okta ควรใช้ “เซิร์ฟเวอร์การให้สิทธิ์ที่กำหนดเอง” แทนที่จะเป็น “เซิร์ฟเวอร์การให้สิทธิ์ขององค์กร” เซิร์ฟเวอร์การให้สิทธิ์ที่กำหนดเองมีความยืดหยุ่นมากกว่า มีเซิร์ฟเวอร์การให้สิทธิ์ที่กำหนดเองที่สร้างขึ้นตามค่าเริ่มต้น ซึ่งเรียกว่า “ค่าเริ่มต้น” URL การให้สิทธิ์ควรมีลักษณะดังนี้
https://${yourOktaDomain}/oauth2/{authServerName}/v1/authorize

อัปเดตไดรเวอร์
สำหรับ Redshift OAuth ที่ใช้บริการ IAM ดั้งเดิม คุณสามารถใช้อย่างใดอย่างหนึ่งต่อไปนี้
ไดรเวอร์ Redshift ODBC v1 ตั้งแต่เวอร์ชัน 1.59 เป็นต้นไป ซึ่งสามารถดาวน์โหลดได้จาก https://docs.aws.amazon.com/redshift/latest/mgmt/configure-odbc-connection.html(ลิงก์จะเปิดในหน้าต่างใหม่)
ไดรเวอร์ Redshift ODBC v2 ตั้งแต่เวอร์ชัน 2.0.1.0 เป็นต้นไป ซึ่งสามารถดาวน์โหลดได้จาก https://github.com/aws/amazon-redshift-odbc-driver/tags(ลิงก์จะเปิดในหน้าต่างใหม่) โปรดทราบว่าไม่มีไดรเวอร์ v2 สำหรับ OSX
การแก้ปัญหา
วิธีที่ดีที่สุดในการวินิจฉัยข้อผิดพลาดเหล่านี้คือการลบ Tableau ออกจากรูปภาพ คุณสามารถทดสอบโดยใช้ตัวจัดการไดรเวอร์หรือเครื่องมือที่คล้ายกันแทนได้ นี่เป็นเพียงเพื่อการแก้ปัญหา - คุณไม่ควรใช้ DSN หรือตัวเชื่อมต่อ “ODBC อื่น” สำหรับการใช้งานฟีเจอร์นี้ปกติ เพื่อช่วยให้แน่ใจว่าการทดสอบถูกต้อง พารามิเตอร์ควรจะเหมือนกับที่แสดงด้านล่าง ยกเว้นข้อมูลคลัสเตอร์ ฐานข้อมูล โทเค็น และเนมสเปซ
หมายเหตุ: อย่าระบุ DbUser หรือ DbGroups ในสตริงการเชื่อมต่อของ DSN ขณะทําการทดสอบ เนื่องจาก Tableau ไม่มีสิทธิ์เข้าถึงสตริงเหล่านี้และไม่สามารถรวมไว้ในสตริงการเชื่อมต่อได้ คุณสามารถรวมไว้ในการอ้างสิทธิ์โทเค็นได้
หากคุณเห็นข้อความแสดงข้อผิดพลาดเกี่ยวกับโทเค็นที่ไม่ถูกต้อง/หมดอายุจากไดรเวอร์ในการเชื่อมต่อครั้งแรก (จะมีรหัสข้อผิดพลาด SQLState เช่น [28000] หรือ [08001] ในข้อความแสดงข้อผิดพลาด) แสดงว่า Tableau ได้ดำเนินการโฟลว์ OAuth เสร็จสมบูรณ์แล้ว และล้มเหลวในไดรเวอร์ ซึ่งหมายความว่ามีการกำหนดค่าที่ไม่ถูกต้องทั้งในฝั่ง AWS หรือฝั่ง IDP อาจมีข้อผิดพลาดการอนุญาตหรือการให้สิทธิ์ที่แสดงจากไดรเวอร์ ซึ่งอยู่นอกเหนือการควบคุมของ Tableau เช่นกัน
ก่อนที่จะเริ่มทดสอบ คุณต้องได้รับโทเค็นการเข้าถึง (ค่าเริ่มต้นสำหรับ IAM IDC) หรือโทเค็นรีเฟรช (หากกำหนดเอง) เพื่อส่งไปยังไดรเวอร์
ต่อไปนี้คือตัวอย่างกับ Okta IDP เกือบทั้งหมดมีวิธีดำเนินการเช่นนี้ซึ่งค่อนข้างคล้ายกัน โปรดทราบว่าในการใช้โฟลว์นี้ คุณต้องเปิดใช้งานประเภทการให้สิทธิ์รหัสผ่านสำหรับเจ้าของแหล่งข้อมูล แทนที่ IDP URL, ข้อมูลลับไคลเอ็นต์, ID ไคลเอ็นต์, ชื่อผู้ใช้ และรหัสผ่าน
curl -X POST "https://OKTA_URL/v1/token" \
-H 'accept: application/json' \
-H "Authorization: Basic $(echo -n 'CLIENTID:CLIENTSECRET' | base64)" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=password&username=USER&password=PASSWORD&scope=openid"
เมื่อคุณมีโทเค็นแล้ว คุณสามารถใช้ DSN เพื่อทดสอบได้ สำหรับ Windows คุณสามารถใช้ UI ตัวจัดการไดรเวอร์ iODBC ได้ สำหรับ Mac คุณสามารถใช้ UI ตัวจัดการไดรเวอร์ iODBC ได้ สำหรับ Linux คุณสามารถใช้เครื่องมือบรรทัดคำสั่ง isql ที่มาพร้อมกับ Tableau Server ในโฟลเดอร์ customer-bin ได้
ปลั๊กอินที่ใช้โปรไฟล์ AWS แบบคงที่จะไม่ทํางานเว้นแต่คุณต้องการใช้โปรไฟล์เดียวกันสําหรับผู้ใช้ทั้งหมดสําหรับการเชื่อมต่อนั้น ปลั๊กอิน OAuth อื่นๆ กำหนดให้มีสิทธิ์เข้าถึงโดยตรงไปยังเบราว์เซอร์ระบบ ซึ่งไม่ทํางานบนฝั่งเซิร์ฟเวอร์
ด้านล่างนี้เป็นตัวอย่างการใช้ตัวจัดการไดรเวอร์ ODBC บน Windows

