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

  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 ใหม่ในโฟลเดอร์ 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:

API ทั้งสองนี้จะส่งคืนโทเค็น IAM ที่มีพร็อพเพอร์ตี้ที่แตกต่างกันเล็กน้อย หากต้องการข้อมูลเพิ่มเติม โปรดดูเอกสาร AWS API ที่เชื่อมโยงด้านบน

หมายเหตุการใช้งาน

  • โดยทั่วไปฟีเจอร์นี้จะพร้อมใช้งานสำหรับทั้ง Tableau Server และ Tableau Cloud (รวมถึงการเขียนเว็บ) เริ่มตั้งแต่เวอร์ชัน 2025.1 เป็นต้นไป สำหรับเวอร์ชันเก่ากว่า สามารถกำหนดค่าได้ในกล่องโต้ตอบการเชื่อมต่อของ Tableau Desktop โดยใช้แท็บขั้นสูงของกล่องโต้ตอบการเชื่อมต่อ หรือโดยใช้ TDC หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับการใช้ TDC โปรดดูปรับแต่งและปรับตั้งการเชื่อมต่อ
  • หากต้องการใช้การรวมศูนย์กลุ่มกับ Tableau Server จะต้องเพิ่ม group_federation ลงในรายการอนุญาตพิเศษ ODBC หากต้องการข้อมูลเพิ่มเติม โปรดดูปรับแต่งสตริงการเชื่อมต่อสำหรับตัวเชื่อมต่อเนทีฟ

Okta

หากใช้ Okta ควรใช้ “เซิร์ฟเวอร์การให้สิทธิ์ที่กำหนดเอง” แทนที่จะเป็น “เซิร์ฟเวอร์การให้สิทธิ์ขององค์กร” เซิร์ฟเวอร์การให้สิทธิ์ที่กำหนดเองมีความยืดหยุ่นมากกว่า มีเซิร์ฟเวอร์การให้สิทธิ์ที่กำหนดเองที่สร้างขึ้นตามค่าเริ่มต้น ซึ่งเรียกว่า “ค่าเริ่มต้น” URL การให้สิทธิ์ควรมีลักษณะดังนี้

https://${yourOktaDomain}/oauth2/{authServerName}/v1/authorize

 

อัปเดตไดรเวอร์

สำหรับ Redshift OAuth ที่ใช้บริการ IAM ดั้งเดิม คุณสามารถใช้อย่างใดอย่างหนึ่งต่อไปนี้

การแก้ปัญหา

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

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

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

ด้านล่างนี้เป็นตัวอย่างการใช้ตัวจัดการไดรเวอร์ ODBC บน Windows

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