ตั้งค่า 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

  1. สร้างไคลเอ็นต์ OAuth บน IDP สำหรับ Tableau Desktop และ Tableau Server หรือ Tableau Cloud ไคลเอ็นต์ Desktop ควรเปิดใช้งาน PKCE และใช้การเปลี่ยนเส้นทาง http://localhost

  2. เพิ่มการอ้างสิทธิ์ที่กำหนดเองเพื่อใช้การให้สิทธิ์บทบาท โดยเฉพาะอย่างยิ่ง หากคุณใช้ IAM ดั้งเดิม คุณอาจต้องเพิ่มการอ้างสิทธิ์สำหรับ DbUser และ DbGroups สิ่งเหล่านี้สามารถนำมาใช้ในนโยบาย IAM ของคุณในภายหลังได้

  3. สร้างไฟล์การกำหนดค่า Tableau OAuth ดูเอกสารประกอบได้ที่ GitHub(ลิงก์จะเปิดในหน้าต่างใหม่) และตัวอย่างที่นี่(ลิงก์จะเปิดในหน้าต่างใหม่) เรายินดีรับตัวอย่างสำหรับ IDP อื่นๆ

    1. อย่าลืมใส่ ID การกำหนดค่า Tableau OAuth นำหน้าด้วย “custom_

    2. หาก IDP ของคุณรองรับพอร์ต localhost แบบไดนามิก ให้ปิดใช้งาน OAUTH_CAP_FIXED_PORT_IN_CALLBACK_URL หาก IDP ของคุณไม่รองรับสิ่งนี้ ตรวจสอบว่าได้เพิ่ม URL การเรียกกลับ localhost หลายรายการในรายการที่อนุญาตในไฟล์การกำหนดค่าและบน IDP

  4. ติดตั้งไฟล์การกำหนดค่า 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 ดั้งเดิม คุณสามารถใช้อย่างใดอย่างหนึ่งต่อไปนี้

การแก้ปัญหา

หากคุณเห็นข้อความแสดงข้อผิดพลาดเกี่ยวกับโทเค็นที่ไม่ถูกต้อง/หมดอายุจากไดรเวอร์ในการเชื่อมต่อครั้งแรก (จะมีรหัสข้อผิดพลาด 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 ได้

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