我們正在使用服務帳戶將我們的應用程序部署到使用Travis的App Engine。App Engine部署:權限錯誤提取應用程序
在每個合併的PR上,Travis從我們的GitHub存儲庫中提取代碼,並提取包含Google Cloud SDK的Docker image並執行gcloud app deploy
命令。我們使用服務帳戶以「項目所有者」角色執行部署。
一切工作都很好,直到我向自動生成SSL證書和續訂的項目添加了一項新服務以及一個dispatch.yaml
文件,以路由來自Let's Encrypt的流量以進行域驗證。我需要添加更多權限才能更新我們用於自定義域的SSL證書。我刪除了當前的服務帳戶,並使用新的私鑰創建了一個新帳戶。除了以前的權限(所有appengine.*
權限),我還創建了一個新角色,具有更新和查看SSL證書所需的權限。我將新角色和項目所有者角色分配給新帳戶。這些變化之後,部署執行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
顯然不以爲然:
我分配的每一個可能的App Engine和項目角色的帳號,但部署還是失敗同樣的錯誤。但是,使用爲GCP上的每個新項目自動創建的默認服務帳戶似乎正在工作。