标签: google-cloud-iam

如何列出与gcp服务帐户关联的角色?

在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)

根据文档,这意味着此服务帐户没有与之关联的策略.所以我给它分配了一个"角色",不包括在其"政策"中.

如何列出与服务帐户关联的角色?

google-cloud-platform gcloud google-cloud-iam

21
推荐指数
4
解决办法
1万
查看次数

gcloud - 错误:(gcloud.app.deploy) 获取应用程序的权限错误

我正在尝试在谷歌云上部署 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

18
推荐指数
3
解决办法
1万
查看次数

Google Cloud Platform 服务帐户无法访问项目

我遇到以下警告:

警告:您似乎无权访问项目 [$PROJECT] 或它不存在。

在本地运行以下命令后:

  1. 激活并设置服务帐户:

    gcloud auth activate-service-account \
    $SERVICE_ACCOUNT \
    --key-file=key.json
    
    #=>
    
    Activated service account credentials for: [$SERVICE_ACCOUNT]
    
    Run Code Online (Sandbox Code Playgroud)
  2. 选择$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?是否有我缺少的角色或权限?

google-cloud-platform gcloud google-cloud-iam

15
推荐指数
3
解决办法
1万
查看次数

如何列出Google Cloud Project的所有IAM用户

我希望能够列出与我的项目相关的所有用户和服务帐户(最好使用gcloudCLI工具,但如果需要,很乐意进行API调用).

我可以很容易地列出所有与使用项目相关的服务帐户,但如何能列出所有的用户吗?我期待类似下面的东西,但我在doco中看不到任何东西:

gcloud beta iam users list
Run Code Online (Sandbox Code Playgroud)

google-cloud-platform gcloud google-cloud-iam

14
推荐指数
3
解决办法
1万
查看次数

无法分配 iam.serviceAccounts.signBlob 权限

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

14
推荐指数
3
解决办法
5429
查看次数

GCP 云功能 - 在构建/部署期间获取存储源出错

遇到构建部署功能的问题。尝试以编程方式部署该函数时,我在构建器日志(错误)中得到以下输出。


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

14
推荐指数
3
解决办法
1776
查看次数

GCP - 将服务帐户模拟为用户

我想允许用户模拟服务帐户来对长时间运行的进程执行操作。但是,所有代码示例都说明了一个服务帐户模拟另一个服务帐户。

用户可以直接冒充服务帐号吗?如果是这样,怎么办?

我正在遵循这个示例代码

初始化一个无权访问列表桶的源凭证:

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

12
推荐指数
2
解决办法
2万
查看次数

如何在服务帐户上启用“iam.serviceAccounts.actAs”权限?

我正在尝试按照本指南使用非默认服务帐户部署服务,它说我需要“iam.serviceAccounts.actAs正在部署的服务帐户的权限”。我使用的服务帐户是@cloudbuild.gserviceaccount.com,但我在项目的“权限”页面上看不到添加它的选项。

service-accounts google-cloud-platform google-iam google-cloud-iam

10
推荐指数
1
解决办法
7164
查看次数

以编程方式获取 GCP 上的当前服务帐号

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

10
推荐指数
1
解决办法
8940
查看次数

如何解决“googleapi:错误403:调用者没有权限,禁止”

我正在使用 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

10
推荐指数
1
解决办法
4万
查看次数