2
我正在瀏覽Google的OAuth 2.0 for Server to Server Applications指南,並嘗試使用服務帳戶的憑據調用Google API。限制Google服務帳戶的權限?
所以我有一個data
對象,其中包含從JSON密鑰文件解析的憑據。
def get_bigquery_service():
# ... Read and parse JSON Key file
scope = ["https://www.googleapis.com/auth/bigquery"]
credentials = SignedJwtAssertionCredentials(
data['client_email'],
data['private_key'],
scope=scope)
http = httplib2.Http()
http = credentials.authorize(http)
return build("bigquery", "v2", http=http)
然後我將有權訪問BigQuery API,因爲我聲稱它在scope
。
我擔心的是,我看不到任何允許我實際限制該服務帳戶能夠在Google Developer Console中使用BigQuery API的選項。比方說,如果憑證文件意外泄露給他人,他們基本上可以對我的任何服務做任何事情,只需在scope
中聲明他們想要訪問的內容即可。
有什麼辦法可以限制服務帳戶擁有的權限嗎?
嗯。但是我已經在項目A中擁有大量的歷史數據,無法遷移到項目B. –
您不必遷移數據,只需告訴tell BigQuery ProjectB可以查看ProjectA數據(讀取權限) –
請注意,您有兩個選項可以授予讀取權限:(1)您可以將項目B的服務帳戶添加爲項目A中的項目讀取器。這將爲所有項目A的數據集提供讀取權限,並可讀取項目A的項目狀態。 (2)您可以將項目B的服務帳戶添加到您想要共享的項目A中的特定數據集。這將使讀取訪問這些數據集。無論哪種情況,項目B的服務帳戶都會將查詢作業提交給項目B,項目B將讀取項目A中的表格。您將需要使用完全限定的表格引用,即「[projectA:dataset.table]」。 –