透過 Looker 嵌入式數據分析,您可以讓使用者和客戶探索嵌入任何 HTML 格式網頁、入口網站或應用程式中的 iframe 的資料。iframe 會執行整個 Looker 應用程式,只要求顯示查詢所需的資料。設計上,iframe 不允許讀取或寫入外部網站或應用程式的資料。
嵌入資料有時可能會有隱私權或安全性疑慮。為降低這些疑慮,建議 Looker 管理員遵循下列最佳做法:
- 如果您要將 Looker 內容嵌入客戶,請在不同的 Looker 執行個體上設定客戶內容,不要使用用於內部分析的執行個體。
- 請只將資料連結至嵌入使用者 (可能是一般大眾) 應可存取的 Looker 嵌入執行個體。
- 保護公開嵌入網址中的隨機權杖,就像保護使用者憑證一樣,如果未使用公開網址,請停用這些網址。
- 對於每個指定的權限、使用者屬性和模型組合,所指派的
external_user_id
值都必須不重複。請確認您不會在不同互動使用者的不同嵌入工作階段中使用相同的external_user_id
,也不會在具有不同權限、使用者屬性值或模型存取權的單一使用者身上使用相同的external_user_id
。 - 啟用封閉式系統。
- 保護已簽署的嵌入密鑰,就像是嵌入 Looker 執行個體的管理員憑證一樣,如果您不使用已簽署的嵌入功能,請停用這項功能。
- 為 Looker 嵌入式執行個體使用強式驗證 (已簽署的嵌入、SAML、Google OAuth、2FA)。
- 如果您使用無 Cookie 嵌入功能,請保護工作階段參照權杖,以便只有嵌入應用程式主機伺服器可以存取。工作階段參照權杖不得在瀏覽器中曝露。
- 如果您使用無 Cookie 嵌入功能,並在取得無 Cookie 工作階段時設定允許的嵌入網域,請勿信任嵌入使用者瀏覽器的來源。在嵌入應用程式伺服器中,請一律將嵌入使用者對應至嵌入使用者的信任來源。
Looker 提供不同類型的嵌入方法,視使用者存取資料時所需的驗證層級而定,包括「公開」、「私人」和「已簽署的嵌入」。您可以使用上述任一方法,透過 JavaScript 與 iframe 互動。
公開嵌入
只要啟用 Look 的公開存取選項,您就能使用 HTML iframe 標記,將視覺化報表或資料表嵌入外部網站。你也可以公開分享 Look 網址,或是將資料匯入 Google 或 Excel 試算表應用程式。
iframe
標記中的網址和內嵌網址含有隨機符記,無法猜測,但任何知道內嵌網址的使用者都可以存取資料,且不會套用額外的篩選或限制。建議您先考量為特定 Look 建立及分享公開網址的安全性影響,再啟用公開網址。
公開網址和公開內嵌網址永遠不會過期,也無法撤銷。共用公開網址時,您會分享查詢,而非實際的資料。
私密嵌入
如果不想讓大眾存取 Look,您也可以嵌入 Look (或探索或資訊主頁),並將其私密地嵌入 iframe,這樣只有 Looker 登入者才能查看內容。
經過驗證的使用者只能存取 Looker 指派的權限所允許的內容。如果您在 Looker 中變更使用者的權限,嵌入網址不會變更,但使用者在存取網址時可看到的內容可能會變更。
如果使用者未通過驗證,您可以在 iframe 中顯示錯誤或登入畫面。不過,在 iframe 中啟用登入畫面與 Looker 的同源保護措施不相容。
私人嵌入網址永遠不會過期,也無法撤銷。不過,由於連結只對擁有 Looker 執行個體和資料存取權的使用者有效,因此傳送連結不應造成安全性疑慮。
已簽署嵌入
請與 Google Cloud 銷售專員聯絡,更新這項功能的授權。
已簽署的嵌入功能可進一步強化私密嵌入功能。使用簽署嵌入功能時,使用者不必使用 Looker 使用者帳戶進行驗證。而是透過您自己的應用程式,使用 iframe 中的網址進行驗證。驗證會建立新的瀏覽器工作階段,並向瀏覽器發出 Cookie。
使用者權限、ID 和屬性都會以參數的形式傳送至網址,並以密鑰簽署。任何有權存取機密金鑰的使用者,都可以建立網址,以任何使用者身分和任何權限存取 Looker 例項連線的任何模型。請參閱程式碼範例,瞭解如何產生已簽署的網址。
點擊劫持是一種瀏覽器安全問題,可能發生在嵌入式程式碼或指令碼在使用者不知情或未經同意的情況下執行某項功能時,例如按鈕似乎會執行其他動作。點按盜用通常需要靜態網址。系統為已簽署嵌入項目產生的網址為機密,只有查看嵌入項目的使用者才能取得該網址。使用已簽署的嵌入功能不會增加外部網站的點按盜用風險。
已簽署的嵌入參數
嵌入使用者可以看到 iframe 網址中的參數,但無法編輯。這些面向可能包括:
user_attributes
:用於進一步篩選資料。user_attributes
功能強大,請考量如何將其套用至 Looker 執行個體。session_length
:請盡量縮短這段時間。
部分參數 (例如 user_attributes
) 雖然可在 UI 中隱藏,但仍會在嵌入網址中編碼。舉例來說,如果密碼是使用者 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。CDN 只會提供 Looker 網路應用程式的靜態資產,包括 JavaScript 程式碼、HTML 網頁和 CSS 樣式。
客戶代管部署
自行代管 Looker 執行個體,似乎是確保資料 (尤其是嵌入式內容) 存取權的萬無一失方法。不過,如果使用者需要透過網路存取嵌入網址,自行代管 Looker 並無特別優勢。
在下列情況下,客戶代管部署作業可能最合適:
- 使用者不必透過網際網路存取 Looker。
- 您會使用 Looker 前端,並透過 API 存取嵌入內容。