ใช้ผู้ให้บริการข้อมูลประจำตัวของคุณเองกับ Amazon Athena

คุณสามารถใช้ผู้ให้บริการข้อมูลประจำตัว (IDP) ของคุณเองกับตัวเชื่อมต่อ Amazon Athena

หมายเหตุ: ผู้ให้บริการข้อมูลประจำตัวต้องรองรับ OAuth 2.0/OIDC

ภาพรวม

มีขั้นตอนต่างๆ ที่คุณต้องปฏิบัติตามเพื่อตั้งค่าผู้ให้บริการข้อมูลประจำตัว (IDP) ของคุณเอง ทั้งนี้ขึ้นอยู่กับผู้ให้บริการข้อมูลประจำตัวที่คุณใช้ ต่อไปนี้เป็นภาพรวมระดับสูงของกระบวนการ

  1. ตั้งค่าความสัมพันธ์ที่เชื่อถือได้ระหว่างผู้ให้บริการข้อมูลประจำตัว, Tableau และแหล่งข้อมูล
  2. สร้างข้อมูลเข้าสู่ระบบไคลเอ็นต์ OAuth สำหรับ Tableau
  3. ใช้รายละเอียดไคลเอ็นต์ OAuth ใน Tableau
  4. สร้างนโยบายสำหรับข้อมูลประจำตัวแบบรวมศูนย์
  5. เชื่อมต่อกับ 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

  1. ไปที่การตั้งค่าไซต์ Tableau Server หรือ Tableau Cloud
  2. เพิ่ม ID ไคลเอ็นต์ OAuth และข้อมูลลับไคลเอ็นต์จากแอป Okta
  3. อัปโหลดไฟล์การกำหนดค่า OAuth
  4. เลือก “เพิ่มไคลเอ็นต์ Oauth” เพื่อดำเนินการให้เสร็จสิ้น

ไคลเอ็นต์ Tableau Desktop และ Tableau Bridge

  1. เปิดไฟล์การกำหนดค่า OAuth จากไดเรกทอรีที่คุณบันทึกไว้
  2. ปรับ ClientID, ข้อมูลลับไคลเอ็นต์, authUri และ tokenUri ในไฟล์ XML ด้วยข้อมูลจากแอป Okta ของคุณสำหรับ Tableau Desktop
  3. บันทึกไฟล์การกำหนดค่า OAuth ลงในโฟลเดอร์ “OAuthConfigs” ในโฟลเดอร์ “ที่เก็บใน Tableau ของฉัน”
  4. หากคุณกำลังเรียกใช้ไคลเอ็นต์ 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

  1. เข้าสู่ระบบ Tableau
  2. ภายใต้เชื่อมต่อ ให้เลือกไปยังเซิร์ฟเวอร์
  3. เลือก Amazon Athena
  4. ในกล่องโต้ตอบการเชื่อมต่อ ให้ป้อนพารามิเตอร์การเชื่อมต่อที่เหมาะสมและ ARN สำหรับบทบาทที่คุณต้องการให้ Tableau รับ
  5. เลือกผู้ให้บริการ OAuth ที่กำหนดค่าไว้ในขั้นตอนที่ 3 (หากมีเพียงไคลเอ็นต์ Oauth รายการเดียว ไคลเอ็นต์ดังกล่าวจะเป็นค่าเริ่มต้น หากมีไคลเอ็นต์ OAuth มากกว่าหนึ่งรายการ Creator สามารถเลือกได้ตามต้องการ)
  6. เลือกเข้าสู่ระบบเพื่อเชื่อมต่อกับ 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>

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