在google cloud gui控制台中,我访问了"IAM&admin">"服务帐户",并使用查看者角色创建了一个名为"my-service-account"的服务帐户.
然后我运行了这个命令:
gcloud iam service-accounts get-iam-policy my-service-account@mydomain.iam.gserviceaccount.com
Run Code Online (Sandbox Code Playgroud)
并看到了这个输出:
etag: ACAB
Run Code Online (Sandbox Code Playgroud)
根据文档,这意味着此服务帐户没有与之关联的策略.所以我给它分配了一个"角色",不包括在其"政策"中.
如何列出与服务帐户关联的角色?
我正在尝试在谷歌云上部署 node js 应用程序,但出现以下错误 -
Step #1: ERROR: (gcloud.app.deploy) Permissions error fetching application [apps
/mytest-240512]. 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)
我正在运行以下命令 -
gcloud builds submit . --config cloudbuild.yaml
Run Code Online (Sandbox Code Playgroud)
我的 cloudbuild.yaml 文件看起来像 -
steps:
#install
- name: 'gcr.io/cloud-builders/npm'
args: ['install']
#deploy
- name: 'gcr.io/cloud-builders/gcloud'
args: ['app', 'deploy']
Run Code Online (Sandbox Code Playgroud) google-cloud-platform gcloud google-cloud-iam google-cloud-build
我遇到以下警告:
警告:您似乎无权访问项目 [$PROJECT] 或它不存在。
在本地运行以下命令后:
激活并设置服务帐户:
gcloud auth activate-service-account \
$SERVICE_ACCOUNT \
--key-file=key.json
#=>
Activated service account credentials for: [$SERVICE_ACCOUNT]
Run Code Online (Sandbox Code Playgroud)
选择$PROJECT
作为上面的服务帐号:
gcloud config set project $PROJECT
#=>
Updated property [core/project].
WARNING: You do not appear to have access to project [$PROJECT] or it does not exist.
Run Code Online (Sandbox Code Playgroud)
我自己的 GCP 帐户与以下角色相关联:
为什么这个服务账户不能set
$PROJECT
?是否有我缺少的角色或权限?
我希望能够列出与我的项目相关的所有用户和服务帐户(最好使用gcloud
CLI工具,但如果需要,很乐意进行API调用).
我可以很容易地列出所有与使用项目相关的服务帐户此,但如何能列出所有的用户吗?我期待类似下面的东西,但我在doco中看不到任何东西:
gcloud beta iam users list
Run Code Online (Sandbox Code Playgroud) TLDR;我在为服务帐号分配 IAM 权限时遇到问题。
我正在构建一个测试,涉及使用 firebase Auth 生成自定义令牌。当我打:
const token = await admin.auth().createCustomToken('test', {
isAdmin: true,
})
Run Code Online (Sandbox Code Playgroud)
抛出以下错误
Permission iam.serviceAccounts.signBlob is required to perform
this operation on service account
projects/-/serviceAccounts/dashboard@appspot.gserviceaccount.com.;
Please refer to
https://firebase.google.com/docs/auth/admin/create-custom-tokens
for more details on how to use and troubleshoot this feature
Run Code Online (Sandbox Code Playgroud)
在引用的文档中,它说将服务帐户令牌创建者角色添加到服务帐户。我已经添加了该角色(以及尝试服务帐户管理员无济于事。
我可以验证我的权限似乎设置正确,当我运行时,
gcloud projects get-iam-policy project
我可以看到我的服务帐户附加到所需的角色
- members:
- serviceAccount:dashboard@appspot.gserviceaccount.com
role: roles/iam.serviceAccountTokenCreator
Run Code Online (Sandbox Code Playgroud)
但是,如果我查看该特定服务帐户,它似乎显示为空,这与我的错误一致:
gcloud iam service-accounts get-iam-policy dashboard@appspot.gserviceaccount.com
etag: ACAB
Run Code Online (Sandbox Code Playgroud)
我认为导致我的服务帐户权限显示为空白的原因是罪魁祸首,但我不确定在哪里进一步调试。在我看来,唯一的区别是一个命令被调用,其中包含一个项目,但我使用项目 ID 初始化了我的 firebase 应用程序,并已对其进行了验证,(firebase-admin).apps[0].options
因此这似乎是一个死胡同。
google-cloud-platform firebase-authentication google-iam google-cloud-iam
遇到构建部署功能的问题。尝试以编程方式部署该函数时,我在构建器日志(错误)中得到以下输出。
2020-10-20T02:22:12.155866856Z starting build "1fc13f51-28b6-4052-9a79-d5d0bef9ed5c"
I
2020-10-20T02:22:12.156015831Z FETCHSOURCE I
2020-10-20T02:22:12.156031384Z Fetching storage object: gs://gcf-sources-629360234120-us-central1/${FUNCTIONNAME}-63f501f1-a8d2-4837-b992-1173ced83036/version-1/function-source.zip#1603160527600655 I
2020-10-20T02:22:16.698838385Z Copying gs://gcf-sources-629360234120-us-central1/${FUNCTIONNAME}-63f501f1-a8d2-4837-b992-1173ced83036/version-1/function-source.zip#1603160527600655... I
2020-10-20T02:22:16.848908949Z / [0 files][ 0.0 B/ 7.6 KiB]
/ [1 files][ 7.6 KiB/ 7.6 KiB]
I
2020-10-20T02:22:16.848965618Z Operation completed over 1 objects/7.6 KiB. I
2020-10-20T02:22:17.848654342Z replace /workspace/pb/__init__.py? [y]es, [n]o, [A]ll, [N]one, [r]ename: NULL I
2020-10-20T02:22:17.848694354Z (EOF or read error, treating as "[N]one" ...) I
2020-10-20T02:22:17.848697209Z Archive: /tmp/source-archive.zip I
2020-10-20T02:22:17.848698273Z inflating: /workspace/main.py I
2020-10-20T02:22:17.848699274Z creating: /workspace/pb/ I
2020-10-20T02:22:17.848700378Z inflating: /workspace/pb/__init__.py I
2020-10-20T02:22:17.848701376Z …
Run Code Online (Sandbox Code Playgroud) deployment google-cloud-platform google-cloud-functions google-cloud-iam google-cloud-build
我想允许用户模拟服务帐户来对长时间运行的进程执行操作。但是,所有代码示例都说明了一个服务帐户模拟另一个服务帐户。
用户可以直接冒充服务帐号吗?如果是这样,怎么办?
我正在遵循这个示例代码。
初始化一个无权访问列表桶的源凭证:
from google.oauth2 import service_acccount
target_scopes = [
'https://www.googleapis.com/auth/devstorage.read_only']
source_credentials = (
service_account.Credentials.from_service_account_file(
'/path/to/svc_account.json',
scopes=target_scopes))
Run Code Online (Sandbox Code Playgroud)
现在使用源凭据来获取凭据以模拟另一个服务帐户:
from google.auth import impersonated_credentials
target_credentials = impersonated_credentials.Credentials(
source_credentials=source_credentials,
target_principal='impersonated-account@_project_.iam.gserviceaccount.com',
target_scopes = target_scopes,
lifetime=500)
Run Code Online (Sandbox Code Playgroud) impersonation service-accounts google-cloud-platform google-iam google-cloud-iam
我正在尝试按照本指南使用非默认服务帐户部署服务,它说我需要“iam.serviceAccounts.actAs
正在部署的服务帐户的权限”。我使用的服务帐户是@cloudbuild.gserviceaccount.com
,但我在项目的“权限”页面上看不到添加它的选项。
service-accounts google-cloud-platform google-iam google-cloud-iam
GOOGLE_APPLICATION_CREDENTIALS
当没有设置时,是否有一种方法可以以编程方式访问 GCP 实例上当前使用的服务帐户的电子邮件?(即使用默认服务帐户时)
我查看了 GCP 文档,但我发现的唯一资源在未设置时无法与默认服务帐户一起使用。GOOGLE_APPLICATION_CREDENTIALS
我知道可以使用gcloud
(请参阅此SO问题或文档)来做到这一点,但是这些解决方案在ContainerOptimizedOS上运行时不适用。我花了几周时间与 GCP 支持团队沟通,但他们最终无法帮助我,并将我重定向到 Stack Overflow 寻求帮助。
google-compute-engine service-accounts google-cloud-platform google-container-os google-cloud-iam
我正在使用 terraform 在 GCP 中构建基础设施。我正在尝试将角色分配给service account
使用 terraform 的人,但无法这样做。下面是我的代码:
sa.tf:
resource "google_service_account" "mojo-terra" {
account_id = "mojo-terra"
description = "Service account used for terraform script"
}
resource "google_project_iam_member" "mojo-roles" {
count = length(var.rolesList)
role = var.rolesList[count.index]
member = "serviceAccount:${google_service_account.mojo-terra.email}"
}
Run Code Online (Sandbox Code Playgroud)
dev.tfvars:
rolesList = [
"roles/iam.serviceAccountUser"
]
Run Code Online (Sandbox Code Playgroud)
云构建日志:
Step #2: Error: Error when reading or editing Resource "project \"poc-dev\"" with IAM Policy: Error retrieving IAM policy for project "poc-dev": googleapi: Error 403: The caller does not have permission, forbidden
Step …
Run Code Online (Sandbox Code Playgroud) google-cloud-platform terraform google-cloud-iam terraform-provider-gcp