我想将Google Cloud Run与Google App Engine和Google Cloud Functions进行比较。Cloud Run 快速入门:构建和部署似乎是一个很好的起点。
我的应用程序默认凭据太宽泛,无法在开发期间使用。我想使用服务帐户,但我很难配置一个可以完成快速启动而没有错误。
什么是我可以分配给必须执行这些命令而没有错误的服务帐户的最小特权预定义角色集:
gcloud builds submit --tag gcr.io/{PROJECT-ID}/helloworld
gcloud beta run deploy --image gcr.io/{PROJECT-ID}/helloworld
当通过具有两个角色的服务帐户运行时,第一个命令失败并出现(看似虚假的)错误:Cloud Build Service Account
和Cloud Run Admin
。我没有运行第二个命令。
Cloud Run Admin
角色的新服务帐户gcloud
项目的配置$ gcloud config list
[core]
account = {service-account-name}@{project-id}.iam.gserviceaccount.com
disable_usage_reporting = True
project = {project-id}
[run]
region = us-central1
Cloud Run API
Container Registry
→交通Settings
→交通Container Analysis API
Dockerfile
按照快速入门文档的说明创建示例应用程序gcloud builds submit --tag gcr.io/[PROJECT-ID]/helloworld
由于缺少云构建权限,运行...失败Cloud Build Editor
角色添加到服务帐户并重新提交构建
...由于缺少存储权限而失败。我没有注意到遗漏的东西。Storage Object Admin
角色添加到服务帐户并重新提交构建
...由于缺少存储桶权限而失败Storage Object Admin
角色替换为Storage Admin
角色并重新提交构建
...失败Error: (gcloud.builds.submit) HTTPError 403:
<?xml version='1.0' encoding='UTF-8'?>
<Error>
<Code>AccessDenied</Code>
<Message>Access denied.</Message>
<Details>
{service-account-name} does not have storage.objects.get access to
{number}.cloudbuild-logs.googleusercontent.com/log-{uuid}.txt.</Details>
</Error>
Cloud Build Service Account
角色拥有更多的权限Cloud Build Editor
。这令我感到惊讶; 旧Editor
角色具有“编辑对所有资源的访问权限”。Cloud Build Editor
和Storage Admin
角色Cloud Build Service Account
角色添加到服务帐户并重新提交构建
...失败并出现相同的HTTP 403
错误(缺少对日志文件的访问权限)Cloud Build
→ History
在开发控制台中; 找到成功的构建!Container Registry
→ Images
在开发控制台中; 找到图像!此时我想我可以完成Google Cloud Run 快速入门:构建和部署。但我不想在构建过程中继续(看似虚假的)错误消息。
发布于 2019-04-11 10:27:43
根据https://cloud.google.com/cloud-build/docs/securing-builds/set-service-account-permissions
“云构建服务帐户” - Cloud Build使用服务帐户执行构建,这是一个代表您执行构建的特殊Google帐户。
为了调用gcloud build submit --tag gcr.io/path
编辑:请“云构建编辑器”和“查看器”启动构建的服务帐户,这是由于当前的云构建授权模型。
抱歉给你带来不便。
https://stackoverflow.com/questions/-100009010
复制相似问题