我想在Google雲端數據流中使用管道(以前的階段模板)(使用Google Cloud Function中的GAPI JS庫,如https://shinesolutions.com/2017/03/23/triggering-dataflow-pipelines-with-cloud-functions/所示)。我如何限制這條管道可以訪問的資源?例如,我不希望它能夠寫入所有發佈/訂閱,項目下的所有存儲桶等。我甚至不希望管道能夠例如根本就做一個HTTP請求。如何在雲中運行Google雲端數據流管道的沙箱/限制訪問權限?
從我讀到的https://cloud.google.com/dataflow/security-and-permissions我只能在從本地機器運行管道時這樣做,因爲那麼訪問權限是由我的用戶訪問權限決定的。然而,當它在雲中運行時,它會在Cloudservices帳戶和計算引擎服務帳戶下運行,並且我無法限制,因此我不會在其他地方破壞它們......正確?
我想要這樣做的原因是我正在構建一個多租戶系統,該系統將在ETL客戶的數據可用於查詢之前將DF利用到該租戶。管道將由數據工程師/顧問編寫(根據客戶的數據形狀定製),這些管道可能會出錯 - 原則上,該代碼默認情況下不可信。
那麼,如果不從本地機器執行它,我該如何限制它的功能?完全獨立的項目?一個權利受到嚴格限制的項目,然後使用跨項目訪問權調整逐個分配桶和其他資源? 或者我可以通過安裝gcloud util來設置一些微型實例來「模擬」本地,然後使用單獨的用戶從那裏運行它?
是否會使用Dataproc(並接受較低抽象和更多devops的價格)幫助?
謝謝你的澄清。我誤解了文檔,並認爲雲中運行的部分僅適用於整個工作流發生在雲中的情況。 –
通過'--serviceAccount'和'--network'你的意思是'--service-account-email'(或JS API中的serviceAccountEmail和WorkerPool.network),對吧? –
不,我的意思是數據流選項:https://cloud.google.com/dataflow/java-sdk/JavaDoc/com/google/cloud/dataflow/sdk/options/DataflowPipelineOptions.html#getServiceAccount--和https:// cloud.google.com/dataflow/java-sdk/JavaDoc/com/google/cloud/dataflow/sdk/options/DataflowPipelineWorkerPoolOptions.html#getNetwork--基本上--serviceAccount被轉換爲在這裏得到/ setServiceAccount對。另請注意serviceAccount選項是* experimental *。我仍然推薦上面的解決方案A. –