Muh*_*abi 5 deployment permissions ssl google-app-engine continuous-integration
我们正在使用服务帐户使用 Travis 将我们的应用程序部署到 App Engine。
在每个合并的 PR 上,Travis 从我们的 GitHub 存储库中提取代码,并提取包含 Google Cloud SDK的Docker 映像并执行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.
Run Code Online (Sandbox Code Playgroud)
我在本地计算机上使用了相同的服务帐户,并将日志记录级别设置为调试。我收到此错误:
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.
Run Code Online (Sandbox Code Playgroud)
描述说这appengine.applications.get是执行部署所必需的。查看授予分配给我们用于部署的 Travis 帐户的角色的权限,appengine.applications.get明确授予:

我为帐户分配了所有可能的 App Engine 和 Project 角色,但部署仍然失败并出现相同的错误。但是,使用为 GCP 上的每个新项目自动创建的默认服务帐户似乎有效。
我删除了当前的服务帐户,并使用新的私钥创建了一个新帐户。
这就是出错的地方。新帐户的 ID 与前一个帐户相同。虽然我在任何地方都找不到这种行为的记录,但看起来一旦 ID 用于服务帐户,就不能再次用于新帐户,即使前一个帐户已被删除。
我们使用新 ID ( ) 而不是)创建了一个新帐户,问题现已解决。travis2@hollowverse-c9cad.iam.gserviceaccount.comtravis@hollowverse-c9cad.iam.gserviceaccount.com
| 归档时间: |
|
| 查看次数: |
2381 次 |
| 最近记录: |