ใช้ผู้ให้บริการข้อมูลประจำตัวของคุณเองกับ Amazon Athena
คุณสามารถใช้ผู้ให้บริการข้อมูลประจำตัว (IDP) ของคุณเองกับตัวเชื่อมต่อ Amazon Athena
หมายเหตุ: ผู้ให้บริการข้อมูลประจำตัวต้องรองรับ OAuth 2.0/OIDC
ภาพรวม
มีขั้นตอนต่างๆ ที่คุณต้องปฏิบัติตามเพื่อตั้งค่าผู้ให้บริการข้อมูลประจำตัว (IDP) ของคุณเอง ทั้งนี้ขึ้นอยู่กับผู้ให้บริการข้อมูลประจำตัวที่คุณใช้ ต่อไปนี้เป็นภาพรวมระดับสูงของกระบวนการ
- ตั้งค่าความสัมพันธ์ที่เชื่อถือได้ระหว่างผู้ให้บริการข้อมูลประจำตัว, Tableau และแหล่งข้อมูล
- สร้างข้อมูลเข้าสู่ระบบไคลเอ็นต์ OAuth สำหรับ Tableau
- ใช้รายละเอียดไคลเอ็นต์ OAuth ใน Tableau
- สร้างนโยบายสำหรับข้อมูลประจำตัวแบบรวมศูนย์
- เชื่อมต่อกับ Amazon Athena
ตัวอย่าง Amazon Athena และ Okta
ตัวอย่างต่อไปนี้แสดงกระบวนการหลายขั้นตอนในการสร้างความน่าเชื่อถือแบบ 3 ทางและโซลูชัน OAuth แบบรวมศูนย์ระหว่าง Tableau, Okta และ AWS เอกสารนี้ถือว่าผู้อ่านมีบัญชี Okta และ AWS อยู่แล้ว
Tableau โต้ตอบกับ OAuth อย่างไร
ตัวอย่างนี้ใช้ OAuth เพื่อเชื่อมต่อ Tableau กับ Data เมื่อกำหนดค่าอย่างเหมาะสม เมื่อผู้ใช้พยายามเชื่อมต่อกับข้อมูล Tableau จะส่งผู้ใช้ไปยังผู้ให้บริการข้อมูลประจำตัวโดยอัตโนมัติเพื่อตรวจสอบสิทธิ์ของตนเอง และยินยอมที่จะมอบสิทธิ์การอนุญาตข้อมูลของตน Tableau จะได้รับและใช้โทเค็น “สิทธิ์เข้าถึง OAuth” และ “รีเฟรช” เพื่อเชื่อมต่อกับแหล่งข้อมูล
หมายเหตุ: คำแนะนำเชิงลึกมีให้เฉพาะขั้นตอนใน Tableau เท่านั้น
ขั้นตอนที่ 1: ตั้งค่า Okta เป็นผู้ให้บริการข้อมูลประจำตัวใน AWS IAM Identity Center
ขั้นตอนนี้กำหนดให้มีการตั้งค่าทั้งใน Okta และ AWS หากต้องการดูคำแนะนำโดยละเอียด ไปที่เอกสารของ Amazon
ขั้นตอนที่ 2: สร้างแอปพลิเคชันไคลเอ็นต์ OAuth สำหรับ Tableau ใน Okta
หากต้องการเริ่มต้น โปรดดูแอปพลิเคชันและการเชื่อมต่อในเอกสารของ Okta
ขั้นตอนที่ 3: ใช้ไคลเอ็นต์ OAuth ใน Tableau
OAuth เป็นโปรโตคอลสิทธิ์เข้าถึงที่ได้รับมอบสิทธิ์ หลังจากตรวจสอบสิทธิ์ของผู้ใช้แล้ว ผู้ใช้กำลังมอบสิทธิ์ให้ Tableau ดำเนินการในนามของผู้ใช้ ทำตามขั้นตอนต่อไปนี้เพื่อตั้งค่าไคลเอ็นต์ OAuth
หมายเหตุ: ขั้นตอนนี้กำหนดให้ใช้ไฟล์การกำหนดค่า OAuth หากคุณไม่มีไฟล์การกำหนดค่า OAuth คุณสามารถดูตัวอย่างได้ที่ด้านล่างของหน้านี้หรือบนหน้า Github ของเราภายใต้ไฟล์การกำหนดค่า OAuth
Tableau Server หรือ Tableau Cloud
- ไปที่การตั้งค่าไซต์ Tableau Server หรือ Tableau Cloud
- เพิ่ม ID ไคลเอ็นต์ OAuth และข้อมูลลับไคลเอ็นต์จากแอป Okta
- อัปโหลดไฟล์การกำหนดค่า OAuth
- เลือก “เพิ่มไคลเอ็นต์ Oauth” เพื่อดำเนินการให้เสร็จสิ้น
ไคลเอ็นต์ Tableau Desktop และ Tableau Bridge
- เปิดไฟล์การกำหนดค่า OAuth จากไดเรกทอรีที่คุณบันทึกไว้
- ปรับ ClientID, ข้อมูลลับไคลเอ็นต์, authUri และ tokenUri ในไฟล์ XML ด้วยข้อมูลจากแอป Okta ของคุณสำหรับ Tableau Desktop
- บันทึกไฟล์การกำหนดค่า OAuth ลงในโฟลเดอร์ “OAuthConfigs” ในโฟลเดอร์ “ที่เก็บใน Tableau ของฉัน”
- หากคุณกำลังเรียกใช้ไคลเอ็นต์ Bridge ให้รีสตาร์ตไคลเอ็นต์ Bridge เพื่อให้แน่ใจว่าได้โหลดการกำหนดค่า OAuth ใหม่
ขั้นตอนที่ 4 สร้างนโยบายสำหรับข้อมูลประจำตัวแบบรวมศูนย์ใน AWS
สร้างความสัมพันธ์ที่เชื่อถือได้ของ AWS ที่ช่วยให้แอปพลิเคชันข้อมูลประจำตัวแบบรวมศูนย์ของ Tableau (clientID) มีความน่าเชื่อถือเพื่อ “รับบทบาท” ด้วยข้อมูลประจำตัวของเว็บ ขั้นตอนนี้ดำเนินการใน AWS หากต้องการคำแนะนำโดยละเอียด โปรดดูให้สิทธิ์ผู้ใช้และสิทธิ์เข้าถึงระดับกลุ่มสำหรับทรัพยากร AWS ในเอกสารของ Amazon
ขั้นตอนที่ 4 อนุญาตให้ Tableau จัดเตรียมโทเค็นข้อมูลประจำตัว OIDC ที่ได้รับจาก Okta (หลังจากที่ผู้ใช้ตรวจสอบสิทธิ์) พร้อมด้วยบทบาท IAM ที่ผู้ใช้มอบให้กับ AWS AWS สามารถตรวจสอบโทเค็นและลายเซ็นจาก Okta, แยกข้อมูล ID ผู้ใช้ออกจากโทเค็น, ค้นหาการแมปผู้ใช้กับบทบาท IAM และอนุญาตหรือบล็อก Tableau จากการรับบทบาทในนามของผู้ใช้ (เช่น AssumeRoleWithWebIdentity)
ขั้นตอนที่ 5 - เชื่อมต่อ Athena
ทำตามขั้นตอนต่อไปนี้ใน Tableau Server หรือ Tableau Cloud หรือ Tableau Desktop
- เข้าสู่ระบบ Tableau
- ภายใต้เชื่อมต่อ ให้เลือกไปยังเซิร์ฟเวอร์
- เลือก Amazon Athena
- ในกล่องโต้ตอบการเชื่อมต่อ ให้ป้อนพารามิเตอร์การเชื่อมต่อที่เหมาะสมและ ARN สำหรับบทบาทที่คุณต้องการให้ Tableau รับ
- เลือกผู้ให้บริการ OAuth ที่กำหนดค่าไว้ในขั้นตอนที่ 3 (หากมีเพียงไคลเอ็นต์ Oauth รายการเดียว ไคลเอ็นต์ดังกล่าวจะเป็นค่าเริ่มต้น หากมีไคลเอ็นต์ OAuth มากกว่าหนึ่งรายการ Creator สามารถเลือกได้ตามต้องการ)
- เลือกเข้าสู่ระบบเพื่อเชื่อมต่อกับ Amazon Athena
ตัวอย่างไฟล์การกำหนดค่า OAuth
คุณสามารถใช้ไฟล์ต่อไปนี้เป็นเทมเพลตเพื่อสร้างไฟล์ OAuth ของคุณเองได้ แต่ต้องตรวจสอบว่าได้อัปเดตไฟล์ด้วยข้อมูลเฉพาะของคุณ เช่น ID ไคลเอ็นต์
ตัวอย่างไฟล์การกำหนดค่า OAuth
<pluginOAuthConfig>
<dbclass>athena</dbclass>
<oauthConfigId>custom_NAME</oauthConfigId>
<!-- MUST INCLUDE "custom_" -->
<clientIdDesktop>CLIENT_ID</clientIdDesktop>
<clientSecretDesktop>CLIENT_SECRET</clientSecretDesktop>
<redirectUrisDesktop>http://localhost:56666/Callback</redirectUrisDesktop>
<redirectUrisDesktop>http://localhost:56667/Callback</redirectUrisDesktop>
<!--
<redirectUrisDesktop>http://localhost:56668/Callback</redirectUrisDesktop>
-->
<authUri>AUTH_URI</authUri>
<tokenUri>TOKEN_URI</tokenUri>
<!-- EXAMPLEs
<authUri>https://EXAMPLE.okta.com/oauth2/v1/authorize</authUri>
<tokenUri>https://EXAMPLE.okta.com/oauth2/v1/token</tokenUri>
-->
<!--
<scopes>openid</scopes>
<scopes>email</scopes>
<scopes>profile</scopes>
<scopes>offline_access</scopes>
-->
<scopes>openid email profile offline_access</scopes>
<capabilities>
<entry>
<key>OAUTH_CAP_SUPPORTS_HTTP_SCHEME_LOOPBACK_REDIRECT_URLS</key>
<value>false</value>
</entry>
<entry>
<key>OAUTH_CAP_FIXED_PORT_IN_CALLBACK_URL</key>
<value>true</value>
</entry>
<entry>
<key>OAUTH_CAP_PKCE_REQUIRES_CODE_CHALLENGE_METHOD</key>
<value>false</value>
</entry>
<entry>
<key>OAUTH_CAP_REQUIRE_PKCE</key>
<value>false</value>
</entry>
<entry>
<key>OAUTH_CAP_SUPPORTS_STATE</key>
<value>true</value>
</entry>
<entry>
<key>OAUTH_CAP_SUPPORTS_CUSTOM_DOMAIN</key>
<value>false</value>
</entry>
<entry>
<key>OAUTH_CAP_CLIENT_SECRET_IN_URL_QUERY_PARAM</key>
<value>true</value>
</entry>
<entry>
<key>OAUTH_CAP_SUPPORTS_GET_USERINFO_FROM_ID_TOKEN</key>
<value>true</value>
</entry>
<entry>
<key>OAUTH_CAP_USE_SCOPE_IN_REFRESH_REQUEST</key>
<value>true</value>
</entry>
</capabilities>
<accessTokenResponseMaps>
<entry>
<key>ACCESSTOKEN</key>
<value>access_token</value>
</entry>
<entry>
<key>REFRESHTOKEN</key>
<value>refresh_token</value>
</entry>
<entry>
<key>id-token</key>
<value>id_token</value>
</entry>
<entry>
<key>access-token-issue-time</key>
<value>issued_at</value>
</entry>
<entry>
<key>access-token-expires-in</key>
<value>expires_in</value>
</entry>
<entry>
<key>username</key>
<value>preferred_username</value>
</entry>
</accessTokenResponseMaps>
<refreshTokenResponseMaps>
<entry>
<key>ACCESSTOKEN</key>
<value>access_token</value>
</entry>
<entry>
<key>REFRESHTOKEN</key>
<value>refresh_token</value>
</entry>
<entry>
<key>id-token</key>
<value>id_token</value>
</entry>
<entry>
<key>access-token-issue-time</key>
<value>issued_at</value>
</entry>
<entry>
<key>access-token-expires-in</key>
<value>expires_in</value>
</entry>
</refreshTokenResponseMaps>
</pluginOAuthConfig>