กำหนดค่า OAuth ภายนอกสำหรับ Snowflake: โฟลว์ข้อมูลเข้าสู่ระบบไคลเอ็นต์
การตรวจสอบสิทธิ์ของข้อมูลเข้าสู่ระบบไคลเอ็นต์ OAuth จะเปิดใช้งานการเชื่อมต่อระหว่างเครื่องกับ Snowflake
โดยไม่มีการโต้ตอบกับผู้ใช้ วิธีนี้เหมาะสำหรับ:
บัญชีบริการสำหรับการรีเฟรชข้อมูลอัตโนมัติ
งานการแยกข้อมูลที่มีการกำหนดเวลา
ไปป์ไลน์ CI/CD
แหล่งข้อมูลที่เผยแพร่ซึ่งต้องใช้ข้อมูลเข้าสู่ระบบแบบฝัง
โฟลว์นี้ต่างจาก OAuth มาตรฐาน (ซึ่งใช้โฟลว์รหัสการให้สิทธิ์) โฟลว์ข้อมูลเข้าสู่ระบบไคลเอ็นต์จะไม่
แจ้งให้ผู้ใช้เข้าสู่ระบบ แต่ Tableau จะตรวจสอบสิทธิ์โดยตรงกับผู้ให้บริการข้อมูลประจำตัวของคุณโดยใช้
ID ไคลเอ็นต์และข้อมูลลับ
หมายเหตุ: โฟลว์ข้อมูลเข้าสู่ระบบไคลเอ็นต์ต้องใช้ฟีเจอร์ OAuth ภายนอกของ Snowflake กับผู้ให้บริการข้อมูลประจำตัวที่รองรับ ซึ่งแตกต่างจาก OAuth แบบเนทีฟของ Snowflake
ก่อนที่คุณจะเริ่มต้น
หากต้องการใช้ข้อมูลเข้าสู่ระบบไคลเอ็นต์ OAuth กับ Snowflake คุณต้องมี:
| ข้อกำหนด | คำอธิบาย |
|---|---|
| ผู้ให้บริการข้อมูลประจำตัว | Okta, Azure AD หรือ Ping Federate ที่กำหนดค่าไว้สำหรับการให้สิทธิ์ข้อมูลเข้าสู่ระบบไคลเอ็นต์ |
| บัญชี Snowflake | รุ่น Enterprise หรือสูงกว่าที่มีสิทธิ์เข้าถึง ACCOUNTADMIN |
| แอปพลิเคชัน OAuth | บริการ API (Okta), การลงทะเบียนแอป (Azure AD) หรือเทียบเท่า |
| ขอบเขตที่กำหนดเอง | ขอบเขตสำหรับการกำหนดบทบาท Snowflake (เช่น “session:role:SYSADMIN”) |
กำหนดค่าผู้ให้บริการข้อมูลประจำตัวของคุณ
ขั้นตอนต่อไปนี้ใช้ Okta เป็นตัวอย่าง สำหรับผู้ให้บริการรายอื่น โปรดดูเอกสารประกอบสำหรับการกำหนดค่าข้อมูลเข้าสู่ระบบไคลเอ็นต์
ขั้นตอนที่ 1: สร้างแอปพลิเคชันบริการ API
เข้าสู่ระบบคอนโซลผู้ดูแล Okta ของคุณ
ไปที่ **แอปพลิเคชัน > แอปพลิเคชัน
เลือก **สร้างการผสานรวมแอป
เลือก **บริการ API** และเลือก **ถัดไป
ป้อนชื่อแอปพลิเคชัน (เช่น
snowflake-tableau-service)เลือกบันทึก
คัดลอก ID ไคลเอ็นต์ และข้อมูลลับของไคลเอ็นต์ คุณจะต้องใช้ค่าเหล่านี้ในภายหลัง
ขั้นตอนที่ 2: ปิดใช้งาน DPoP (หากเปิดใช้งาน)
ต้องปิดใช้งานการแสดงหลักฐานการครอบครอง (DPoP) สำหรับโฟลว์ข้อมูลเข้าสู่ระบบไคลเอ็นต์
ในการตั้งค่าแอปพลิเคชันของคุณ ให้ไปที่ทั่วไป > ข้อมูลเข้าสู่ระบบของไคลเอ็นต์
ล้างช่องทำเครื่องหมายต้องมีส่วนหัวการแสดงหลักฐานการครอบครอง (DPoP) ในคำขอโทเค็น
เลือกบันทึก
ขั้นตอนที่ 3 เพิ่มขอบเขตที่กำหนดเอง
Snowflake ต้องใช้ขอบเขตที่กำหนดเองเพื่อกำหนดบทบาทให้กับเซสชันที่ตรวจสอบสิทธิ์แล้ว
ไปที่ความปลอดภัย > API > เซิร์ฟเวอร์การให้สิทธิ์
เลือกเซิร์ฟเวอร์การให้สิทธิ์เริ่มต้น (หรือเซิร์ฟเวอร์ที่กำหนดเองของคุณ)
เลือกแท็บขอบเขต ตามด้วยเพิ่มขอบเขต
เพิ่มขอบเขตเหล่านี้:
ชื่อขอบเขต คำอธิบาย snowflake ขอบเขตการเข้าถึงทั่วไปสำหรับ Snowflake session:role:SYSADMIN กำหนดบทบาท SYSADMIN (ปรับสำหรับบทบาทของคุณ) หมายเหตุ: สร้างขอบเขตเพิ่มเติมสำหรับบทบาทอื่นๆ ที่บัญชีบริการของคุณต้องใช้
ขั้นตอนที่ 4: กำหนดค่านโยบายการเข้าถึง
เลือกแท็บนโยบายการเข้าถึง
เลือกนโยบายที่มีอยู่หรือสร้างนโยบายใหม่
เพิ่มกฎที่มีการตั้งค่าเหล่านี้
ประเภทการให้สิทธิ์: ข้อมูลเข้าสู่ระบบไคลเอ็นต์
ขอบเขต: ขอบเขตใดๆ (หรือเลือกขอบเขตเฉพาะ)
เลือกสร้างกฎหรือบันทึก
กำหนดค่า Snowflake
เรียกใช้คำสั่ง SQL ต่อไปนี้ใน Snowflake ในฐานะ ACCOUNTADMIN แทนที่ค่าตัวยึดตำแหน่งด้วยการกำหนดค่าของคุณ
ขั้นตอนที่ 1: สร้างการผสานรวม OAuth ภายนอก
USE ROLE ACCOUNTADMIN;
CREATE OR REPLACE SECURITY INTEGRATION okta_oauth_integration
TYPE = EXTERNAL_OAUTH
ENABLED = TRUE
EXTERNAL_OAUTH_TYPE = OKTA
EXTERNAL_OAUTH_ISSUER = 'https://<your-okta-domain>.okta.com/oauth2/default'
EXTERNAL_OAUTH_JWS_KEYS_URL = 'https://<your-okta-domain>.okta.com/oauth2/
default/v1/keys'
EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM = 'sub'
EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE = 'login_name'
EXTERNAL_OAUTH_AUDIENCE_LIST = ('api://default', 'snowflake')
EXTERNAL_OAUTH_ANY_ROLE_MODE = 'ENABLE';| พารามิเตอร์ | คำอธิบาย |
|---|---|
EXTERNAL_OAUTH_TYPE | ผู้ให้บริการข้อมูลประจำตัวของคุณ: OKTA , AZURE หรือ PING_FEDERATE |
EXTERNAL_OAUTH_ISSUER | URL ผู้ออกจากเซิร์ฟเวอร์การให้สิทธิ์ของคุณ |
EXTERNAL_OAUTH_JWS_KEYS_URL | ปลายทาง JWKS สำหรับการตรวจสอบโทเค็น |
EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLA
IM | การอ้างสิทธิ์ JWT ที่ระบุผู้ใช้ ใช้ sub สำหรับ Okta |
EXTERNAL_OAUTH_ANY_ROLE_MODE | ตั้งค่าเป็น ENABLE เพื่ออนุญาตการกำหนดบทบาทผ่านขอบเขต |
ขั้นตอนที่ 2: สร้างผู้ใช้บริการ
สร้างผู้ใช้ Snowflake ด้วย LOGIN_NAME ที่ตรงกับ ID ไคลเอ็นต์ OAuth
CREATE USER IF NOT EXISTS service_account_user
LOGIN_NAME = '<your-okta-client-id>'
DISPLAY_NAME = 'OAuth Service Account'
MUST_CHANGE_PASSWORD = FALSE
DISABLED = FALSE;
-- Grant role to the service user
GRANT ROLE SYSADMIN TO USER service_account_user;
-- Set the default role
ALTER USER service_account_user SET DEFAULT_ROLE = 'SYSADMIN';
-- Grant warehouse access
GRANT USAGE ON WAREHOUSE <your-warehouse> TO USER service_account_user;
-- Grant database and schema access
GRANT USAGE ON DATABASE <your-database> TO USER service_account_user;
GRANT USAGE ON SCHEMA <your-database>.<your-schema> TO USER
service_account_user;
GRANT SELECT ON ALL TABLES IN SCHEMA <your-database>.<your-schema> TO USER
service_account_user;
สำคัญ: LOGIN_NAME ต้องตรงกับทุกประการกับการอ้างสิทธิ์ sub ในโทเค็น OAuth สำหรับแอปพลิเคชันบริการ Okta API นี่คือ ID ไคลเอ็นต์
เชื่อมต่อจาก Tableau Desktop
ใน Tableau Desktop เลือกเชื่อมต่อ > Snowflake
ป้อนรายละเอียดการเชื่อมต่อของคุณ:
ฟิลด์ ค่า เซิร์ฟเวอร์ URL บัญชี Snowflake ของคุณ (เช่น account.snowflakecomputing.com)บทบาท บทบาทที่จะใช้ (เช่น SYSADMIN)คลัง คลัง Snowflake ของคุณ การตรวจสอบสิทธิ์ ข้อมูลเข้าสู่ระบบไคลเอ็นต์ OAuth ป้อนการกำหนดค่า OAuth:
ฟิลด์ ค่า URL คำขอโทเค็น OAuth https://<your-okta-domain>.okta.com/oauth2/default/ v1/tokenชื่อผู้ใช้ ID ไคลเอ็นต์ Oauth ของคุณ รหัสผ่าน ข้อมูลลับไคลเอ็นต์ OAuth ของคุณ ขอบเขต OAuth snowflake session:role:SYSADMINหมายเหตุ: ขอบเขต OAuth ต้องมีขอบเขตที่กำหนดเองที่คุณกำหนดค่าไว้สำหรับการกำหนดบทบาท
เลือกเข้าสู่ระบบ
เผยแพร่ไปยัง Tableau Cloud หรือ Tableau Server
เมื่อเผยแพร่เวิร์กบุ๊กหรือแหล่งข้อมูลที่ใช้ข้อมูลเข้าสู่ระบบไคลเอ็นต์ OAuth:
ในกล่องโต้ตอบเผยแพร่ ให้เลือกแก้ไขถัดจากแหล่งข้อมูล
สำหรับการตรวจสอบสิทธิ์ ให้เลือกรหัสผ่านแบบฝัง
ข้อมูลเข้าสู่ระบบไคลเอ็นต์จะฝังอยู่ในเนื้อหาที่เผยแพร่
สำคัญ: ข้อมูลเข้าสู่ระบบไคลเอ็นต์ถือเป็นรหัสผ่านแบบฝัง ซึ่งต่างจาก OAuth มาตรฐาน ผู้ใช้ที่เข้าถึงเนื้อหาที่เผยแพร่จะใช้ข้อมูลเข้าสู่ระบบของบัญชีบริการ ไม่ใช่ข้อมูลประจำตัว
การหมุนเวียนข้อมูลเข้าสู่ระบบ
เมื่อข้อมูลลับของไคลเอ็นต์ OAuth มีการหมุนเวียน ให้อัปเดตข้อมูลเข้าสู่ระบบแบบฝังบน Tableau Cloud:
เข้าสู่ระบบ Tableau Cloud
ไปยังแหล่งข้อมูลที่เผยแพร่
เลือกการเชื่อมต่อ
อัปเดตการเชื่อมต่อด้วยข้อมูลลับของไคลเอ็นต์ใหม่
สำหรับการหมุนเวียนอัตโนมัติ ให้ใช้ Tableau REST API เพื่ออัปเดตข้อมูลเข้าสู่ระบบการเชื่อมต่อในโปรแกรม
คำถามที่พบบ่อย
ฉันควรใช้ข้อมูลเข้าสู่ระบบไคลเอ็นต์ OAuth แทน OAuth มาตรฐานเมื่อใด
ใช้ข้อมูลเข้าสู่ระบบไคลเอ็นต์เมื่อคุณต้องการการตรวจสอบสิทธิ์ระหว่างเครื่องโดยไม่ต้องควบคุม มาตรฐาน
OAuth กำหนดให้มีการโต้ตอบของผู้ใช้สำหรับการเข้าสู่ระบบครั้งแรกและการตรวจสอบสิทธิ์ซ้ำเป็นระยะ ข้อมูลเข้าสู่ระบบไคลเอ็นต์
ใช้ข้อมูลประจำตัวของบัญชีบริการและไม่ต้องมีการโต้ตอบกับผู้ใช้
ฉันสามารถใช้ข้อมูลเข้าสู่ระบบไคลเอ็นต์กับ OAuth แบบเนทีฟของ Snowflake ได้หรือไม่
ไม่ได้ OAuth แบบเนทีฟของ Snowflake รองรับเฉพาะโฟลว์รหัสการให้สิทธิ์เท่านั้น ข้อมูลเข้าสู่ระบบไคลเอ็นต์ต้องใช้ OAuth ภายนอกกับผู้ให้บริการข้อมูลประจำตัวที่รองรับ (Okta, Azure AD หรือ Ping Federate)
ฉันจะจัดการกับการหมุนเวียนข้อมูลลับสำหรับเนื้อหาที่เผยแพร่ได้อย่างไร
เมื่อข้อมูลลับของไคลเอ็นต์ OAuth มีการหมุนเวียน คุณต้องอัปเดตข้อมูลเข้าสู่ระบบแบบฝังใน Tableau Cloud คุณสามารถดำเนินการนี้ได้ด้วยตนเองผ่าน Tableau Cloud UI หรือในโปรแกรมโดยใช้ Tableau REST API พิจารณาทำให้กระบวนการนี้เป็นอัตโนมัติในเวิร์กโฟลว์การหมุนเวียนข้อมูลลับของคุณ
เหตุใดการเชื่อมต่อของฉันจึงล้มเหลวโดยมีข้อผิดพลาดของบทบาท แม้ว่าจะเปิดใช้งาน EXTERNAL_OAUTH_ANY_ROLE_MODE แล้ว
Snowflake ต้องใช้ข้อมูลบทบาทในโทเค็น OAuth เพิ่มขอบเขตที่กำหนดเอง (เช่น session:role:SYSADMIN) ไปยังเซิร์ฟเวอร์การให้สิทธิ์ของคุณและรวมไว้ในฟิลด์ขอบเขต OAuth เมื่อเชื่อมต่อจาก Tableau
การแก้ปัญหา
| ข้อความแสดงข้อผิดพลาด | สาเหตุ | โซลูชัน |
|---|---|---|
| “ผู้ใช้ไม่มีอยู่หรือไม่ได้รับอนุญาต” | ผู้ใช้ Snowflake LOGIN_NAME ไม่ตรงกับ ID ไคลเอ็นต์ OAuth | ตั้งค่า LOGIN_NAME ของผู้ใช้ให้ตรงกับการอ้างสิทธิ์ sub (ID ไคลเอ็นต์สำหรับ Okta) |
| “บทบาทที่ร้องขอไม่อยู่ในโทเค็นการเข้าถึง” | ไม่มีขอบเขตบทบาทในโทเค็น | เพิ่มขอบเขต session:role:<ROLE> ไปยังเซิร์ฟเวอร์การให้สิทธิ์ของคุณและรวมไว้ในขอบเขต OAuth |
| “หลักฐาน DPoP ไม่ถูกต้อง” | DPoP เปิดใช้งานใน Okta | ปิดใช้งาน “ต้องมีการแสดงหลักฐานการครอบครอง (DPoP)” ในแอป Okta ของคุณ |
| “ขอบเขตไม่ถูกต้อง” | ไม่ได้กำหนดค่าขอบเขตที่กำหนดเอง | เพิ่มขอบเขตที่จำเป็นไปยังเซิร์ฟเวอร์การให้สิทธิ์ของคุณ โดยไม่รวม openid |
| การตรวจสอบโทเค็นล้มเหลว | URL หรือผู้ออก JWKS ไม่ถูกต้อง | ยืนยันว่า EXTERNAL_OAUTH_JWS_KEYS
_URL และ EXTERNAL_OAUTH_ISSUER ตรงกับเซิร์ฟเวอร์การให้สิทธิ์ของคุณ |
ดูเพิ่มเติม
กำหนดค่า OAuth สำหรับการเชื่อมต่อ Snowflake บน Tableau Server(ลิงก์จะเปิดในหน้าต่างใหม่) - เรียนรู้เกี่ยวกับการตรวจสอบสิทธิ์ OAuth มาตรฐานด้วย Snowflake
การผสานรวมการรักษาความปลอดภัย OAuth ภายนอก(ลิงก์จะเปิดในหน้าต่างใหม่) - เอกสารประกอบของ Snowflake สำหรับการกำหนดค่าผู้ให้บริการ OAuth ภายนอก
โฟลว์ข้อมูลเข้าสู่ระบบไคลเอ็นต์ Okta(ลิงก์จะเปิดในหน้าต่างใหม่) - เอกสารประกอบของ Okta สำหรับการแรับใช้ข้อมูลเข้าสู่ระบบไคลเอ็นต์
อัปเดตการเชื่อมต่อแหล่งข้อมูล(ลิงก์จะเปิดในหน้าต่างใหม่) - ข้อมูลอ้างอิง Tableau REST API สำหรับการอัปเดตข้อมูลเข้าสู่ระบบ
