透過 Looker 嵌入式數據分析,您可以讓使用者和顧客探索嵌入任何 HTML 格式網頁、入口網站或應用程式中的 iframe 的資料。iframe 會執行整個 Looker 應用程式,只要求顯示查詢所需的資料。設計上,不允許從外部網站或應用程式透過 iframe 讀取或寫入資料。
嵌入資料有時可能會有隱私權或安全性疑慮。為減輕這些疑慮,建議 Looker 管理員遵循下列最佳做法:
- 如果您要將 Looker 內容嵌入客戶的應用程式,請在與內部數據分析所用執行個體不同的 Looker 執行個體上,設定客戶內容。
- 請只將資料連結至嵌入式 Looker 執行個體,並確保嵌入式使用者 (可能是公眾) 能夠存取這些資料。
- 保護公開嵌入網址中的隨機權杖,如同保護使用者憑證一樣,並在不使用公開網址時停用。
- 針對每組權限、使用者屬性和模型,指派的
external_user_id值必須不重複。請確保不同互動式使用者的不同嵌入工作階段不會使用相同的external_user_id,且單一使用者若有不同權限、使用者屬性值或模型存取權,也不會使用相同的external_user_id。 - 啟用封閉系統。
- 請保護簽署的嵌入密鑰,就像保護嵌入式 Looker 執行個體的管理員憑證一樣,如果未使用簽署的嵌入功能,請保持停用狀態。
- 為 Looker 嵌入式例項使用強效驗證 (已簽署的嵌入、SAML、Google OAuth、雙重驗證)。
- 如果您使用無 Cookie 嵌入,請保護工作階段參照權杖,確保只有嵌入應用程式主機伺服器可以存取。工作階段參照權杖絕不應在瀏覽器中公開。
- 如果您使用無 Cookie 嵌入,並在取得無 Cookie 工作階段時設定允許的嵌入網域,請勿信任嵌入使用者瀏覽器的來源。請務必在嵌入式應用程式伺服器中,維護嵌入式使用者與嵌入式使用者信任來源的對應關係。
Looker 提供不同類型的嵌入方法,視存取資料的使用者所需驗證層級而定:公開、私人和簽署嵌入。使用任何一種方法,您都可以透過 JavaScript 與 iframe 互動。
公開嵌入
啟用 Look 的「公開存取」選項後,您可以使用 HTML iframe 標記,將視覺化或資料表嵌入外部網站。您也可以公開分享 Look 網址,或將資料匯入 Google 或 Excel 試算表應用程式。
iframe 標記中的網址和嵌入網址含有隨機權杖,無法猜測,但只要有嵌入網址,任何人都能存取資料,且系統不會套用其他篩選條件或限制。建議您先考量建立及分享特定 Look 的公開網址所造成的安全性影響,再啟用「公開網址」。
公開網址和公開嵌入網址不會過期,也無法撤銷。分享公開網址時,您分享的是查詢,而非實際資料。
私密嵌入
如果不想公開存取 Look,也可以在 iframe 中私下嵌入 Look,或探索或資訊主頁,這樣就必須登入 Looker 才能查看內容。
通過驗證的使用者只能存取所屬 Looker 權限允許的內容。如果您在 Looker 中變更使用者的權限,嵌入網址不會變更,但使用者存取網址時可查看的內容可能會變更。
如果使用者未通過驗證,您可以在 iframe 中顯示錯誤訊息或登入畫面。不過,在 iframe 中啟用登入畫面與 Looker 的同源防護機制不相容。
私人嵌入網址不會過期,也無法撤銷。不過,只有能存取 Looker 執行個體和資料的使用者才能開啟連結,因此傳送連結不會造成安全疑慮。
已簽署的嵌入
如要更新這項功能的授權,請與 Google Cloud 銷售專員聯絡。
簽署嵌入功能更進一步,簽署嵌入功能不需要使用者透過 Looker 使用者帳戶驗證身分。他們可以改用 iframe 中的網址,透過您自己的應用程式進行驗證。驗證程序會建立新的瀏覽器工作階段,並向瀏覽器發放 Cookie。
使用者權限、ID 和屬性都會以參數形式傳遞至網址,並以私密金鑰簽署。只要有權存取私密金鑰,就能建立網址,以任何使用者身分和權限存取 Looker 執行個體連線的任何模型。請參閱程式碼範例,瞭解如何產生已簽署網址。
點擊劫持是瀏覽器安全問題,當內嵌程式碼或指令碼在使用者不知情或未經同意的情況下執行函式時,就可能發生點擊劫持,例如顯示的按鈕實際上會執行其他動作。點擊劫持通常需要靜態網址。為已簽署的嵌入內容產生的網址是私密網址,只有查看嵌入內容的使用者才能存取。使用已簽署的嵌入內容不會增加外部網站的點擊劫持風險。
簽署的嵌入參數
內嵌使用者可以查看 iframe 網址中包含的參數,但無法編輯。其中可能包括:
user_attributes:這些篩選器可用於進一步篩選資料。user_attributes功能強大,請考慮如何將其套用至 Looker 執行個體。session_length:盡量縮短這段時間。
部分參數 (例如 user_attributes) 可能會在使用者介面中隱藏,但仍會編碼至嵌入網址中。舉例來說,如果密碼是使用者 user_attribute 中的值,這可能就不太理想。如要解決這個問題,可以建立臨時群組,將密碼設為群組層級屬性,然後在嵌入網址中傳遞群組 ID。嵌入工作階段結束後,您可以刪除群組,避免過多過期的群組。
網址的簽署部分包含時間戳記。網址用於登入時,時間必須與目前時間相差 +/- 5 分鐘。您可以在 session_length 中指定嵌入工作階段的效期,從使用網址登入時算起。
管理簽署的嵌入存取權
建立內嵌內容的網址時,請注意下列事項:
Looker API
您可以使用 Looker 的 API,透過 Proxy 應用程式或反向 Proxy 伺服器啟用嵌入內容的存取權。在這種情況下,驗證會透過 API 金鑰執行,這類金鑰與特定使用者相關聯,並具備與產生金鑰的使用者相同的權限。API 金鑰由用戶端 ID 和用戶端密鑰組成。
使用 API 管理嵌入存取權
使用 Looker API 啟用嵌入內容的存取權時,建議您:
- 為程式輔助 API 存取建立專屬服務帳戶,並授予最低的必要權限。
- 保護組成 API 金鑰的用戶端 ID 和用戶端密鑰 (如果使用 SDK 進行驗證)。
如果使用 API 為嵌入使用者設定任何屬性,但未在已簽署的嵌入網址中指定這些屬性,下次存取已簽署的嵌入網址時,這些屬性就會重設為預設值。
內嵌 JavaScript 事件
設定好嵌入 iframe 後 (公開、私人、使用簽署嵌入或透過 API),您就可以使用 JavaScript 與該 iframe 互動。如要驗證您使用的資訊確實來自 Looker 的 iframe,可以監聽 JavaScript 事件。
將網域加入允許清單時,請使用萬用字元,只允許特定子網域存取 JavaScript 事件。
如果使用 JavaScript eval 函式,請確保 eval 引數中的字串值來自可信來源 (例如 Looker 伺服器或 CDN),且採用 HTTPS 傳輸。
顧客資料絕不會經過 Looker CDN。只有 Looker 網頁應用程式靜態資產 (JavaScript 程式碼、HTML 網頁、CSS 樣式) 會從 CDN 提供。
客戶託管的部署作業
自行代管 Looker 執行個體似乎是確保資料存取權安全無虞的方式,尤其是嵌入內容。不過,如果使用者需要透過網際網路存取嵌入網址,自行代管 Looker 就沒有特別的優勢。
在下列情況下,客戶託管部署作業可能最合適:
- 使用者不必透過網際網路存取 Looker。
- 您是 Looker 的前端,並使用 API 存取嵌入內容。