3

我們正在使用服務帳戶將我們的應用程序部署到使用Travis的App Engine。App Engine部署:權限錯誤提取應用程序

在每個合併的PR上,Travis從我們的GitHub存儲庫中提取代碼,並提取包含Google Cloud SDK的Docker image並執行gcloud app deploy命令。我們使用服務帳戶以「項目所有者」角色執行部署。

一切工作都很好,直到我向自動生成SSL證書和續訂的項目添加了一項新服務以及一個dispatch.yaml文件,以路由來自Let's Encrypt的流量以進行域驗證。我需要添加更多權限才能更新我們用於自定義域的SSL證書。我刪除了當前的服務帳戶,並使用新的私鑰創建了一個新帳戶。除了以前的權限(所有appengine.*權限),我還創建了一個新角色,具有更新和查看S​​SL證書所需的權限。我將新角色項目所有者角色分配給新帳戶。這些變化之後,部署執行deploy命令時失敗,出現以下錯誤:

Permissions error fetching application [apps/hollowverse-c9cad]. Please make sure you are using the correct project ID and that you have permission to view applications on the project. 

我用同樣的服務帳戶我的本地機器上設置調試日誌記錄級別。我得到這個錯誤:

DEBUG: HttpError accessing <https://appengine.googleapis.com/v1/apps/hollowverse-c9cad?alt=json>: response: <{'status': '403', 'content-length': '335', 'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'transfer-encoding': 'chunked', 'vary': 'Origin, X-Origin, Referer', 'server': 'ESF', '-content-encoding': 'gzip', 'cache-control': 'private', 'date': 'Wed, 02 Aug 2017 14:33:50 GMT', 'x-frame-options': 'SAMEORIGIN', 'alt-svc': 'quic=":443"; ma=2592000; v="39,38,37,36,35"', 'content-type': 'application/json; charset=UTF-8'}>, content <{ 
    "error": { 
    "code": 403, 
    "message": "Operation not allowed", 
    "status": "PERMISSION_DENIED", 
    "details": [ 
     { 
     "@type": "type.googleapis.com/google.rpc.ResourceInfo", 
     "resourceType": "gae.api", 
     "description": "The \"appengine.applications.get\" permission is required." 
     } 
    ] 
    } 
} 
> 
DEBUG: (gcloud.beta.app.deploy) Permissions error fetching application [apps/hollowverse-c9cad]. Please make sure you are using the correct project ID and that you have permission to view applications on the project. 

該描述說明需要appengine.applications.get來執行部署。看着授予分配給我們使用部署特拉維斯帳戶的角色的權限,appengine.applications.get顯然不以爲然:

screenshot_20170802_174402

我分配的每一個可能的App Engine和項目角色的帳號,但部署還是失敗同樣的錯誤。但是,使用爲GCP上的每個新項目自動創建的默認服務帳戶似乎正在工作。

回答

3

I removed the current service account, and created a new one with a new private key.

這是它出錯的地方。新帳戶與上一個帳戶具有相同的ID。儘管我無法在任何地方找到這種行爲,但看起來像一旦一個ID用於服務帳戶,即使刪除了之前的帳戶,它也不能再次用於新帳戶。

我們創建了一個新的帳戶與新的ID(travis2@hollowverse-c9cad.iam.gserviceaccount.com),而不是[email protected]),並且問題現已解決。

相關問題