ตั้งค่า Amazon RedShift IAM OAuth
ตั้งแต่ Tableau 2023.3.2 เป็นต้นไปสำหรับภายในองค์กร (Tableau Desktop, Tableau Server และ Tableau Prep) และเมษายน 2024 สำหรับ Tableau Cloud คุณสามารถใช้ OAuth 2.0/OIDC เพื่อรวมข้อมูลประจำตัวจากผู้ให้บริการข้อมูลประจำตัวภายนอกไปยัง Amazon Redshift ได้
คำแนะนำเหล่านี้มีไว้สำหรับบริการ AWS IAM รุ่นเก่า สำหรับการผสานรวม IAM IDC โปรดดูตั้งค่า OAuth ของ Amazon RedShift IAM Identity Center
มีขั้นตอนต่างๆ ที่จำเป็นในการกำหนดค่าการผสานรวม ทั้งนี้ขึ้นอยู่กับผู้ให้บริการข้อมูลประจำตัว นี่คือภาพรวมระดับสูง Tableau ไม่สามารถให้คำแนะนำโดยละเอียดเกี่ยวกับวิธีกำหนดค่า AWS หรือ IDP ได้ แต่วิธีการทั่วไปจะอธิบายไว้ด้านล่างนี้
กำหนดค่า 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_
”หาก IDP ของคุณรองรับพอร์ต localhost แบบไดนามิก ให้ปิดใช้งาน
OAUTH_CAP_FIXED_PORT_IN_CALLBACK_URL
หาก IDP ของคุณไม่รองรับสิ่งนี้ ตรวจสอบว่าได้เพิ่ม URL การเรียกกลับ localhost หลายรายการในรายการที่อนุญาตในไฟล์การกำหนดค่าและบน IDP
ติดตั้งไฟล์การกำหนดค่า Tableau OAuth บนเครื่องเดสก์ท็อปและไซต์ Tableau Server หรือ Tableau Cloud
กำหนดค่า 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(ลิงก์จะเปิดในหน้าต่างใหม่))
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
การแก้ปัญหา
หากคุณเห็นข้อความแสดงข้อผิดพลาดเกี่ยวกับโทเค็นที่ไม่ถูกต้อง/หมดอายุจากไดรเวอร์ในการเชื่อมต่อครั้งแรก (จะมีรหัสข้อผิดพลาด SQLState เช่น [28000] หรือ [08001] ในข้อความแสดงข้อผิดพลาด) แสดงว่าเราได้ดำเนินการโฟลว์ OAuth เสร็จสมบูรณ์แล้ว และล้มเหลวในไดรเวอร์ ซึ่งหมายความว่ามีการกำหนดค่าที่ไม่ถูกต้องทั้งในฝั่ง AWS หรือฝั่ง IDP อาจมีข้อผิดพลาดการอนุญาตหรือการให้สิทธิ์ที่แสดงจากไดรเวอร์ ซึ่งอยู่นอกเหนือการควบคุมของเราเช่นกัน
วิธีที่ดีที่สุดในการวินิจฉัยข้อผิดพลาดเหล่านี้คือการลบ Tableau ออกจากรูปภาพ ก่อนอื่นคุณต้องได้รับโทเค็น ID (ค่าเริ่มต้น) หรือโทเค็นการเข้าถึง (หากกำหนดเอง) เพื่อส่งไปยังไดรเวอร์ ต่อไปนี้คือตัวอย่างกับ 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 เพื่อทดสอบได้ ด้านล่างนี้เป็นตัวอย่างการใช้ตัวจัดการไดรเวอร์ ODBC บน Windows สำหรับ Mac คุณสามารถใช้ UI ตัวจัดการไดรเวอร์ iODBC ได้ สำหรับ Linux คุณสามารถใช้เครื่องมือบรรทัดคำสั่ง isql ที่มาพร้อมกับ Tableau Server ในโฟลเดอร์ customer-bin ได้