仅当使用服务帐户进行身份验证时才"ERROR: (gcloud.asset.export) User does not have permission"



我正在尝试使用Google Cloud Asset Inventory和gcloud命令(版本314.0.0(导出项目资产通过服务帐户验证

# 1. authenticate with service account my-service-account@$PROJECT_ID.iam.gserviceaccount.com
gcloud auth activate-service-account --key-file=/path/to/my/key.json
# 2. export assets to BQ
gcloud asset export 
--project=$PROJECT_ID 
--bigquery-table=projects/$PROJECT_ID/datasets/$DATASET_ID/tables/$TABLE_ID 
--output-bigquery-force 
--content-type=resource

并得到以下错误:

错误:(gcloud.asset.export(用户[my service account@$PROJECT_ID.iam.gserviceaccount.com]没有访问项目[$PROJECT-ID:exportAssets]的权限(或者它可能不存在(:调用方没有权限

我的服务帐户在$PROJECT_ID:上具有以下角色

  • roles/cloudasset.viewer
  • roles/bigquery.jobUser
  • roles/bigquery.dataEditor

请注意,当我使用自己的个人帐户登录时,gcloud asset export可以工作,这些帐户与我的服务帐户具有相同的角色。

--verbosity=debug标志添加到gcloud不会添加附加信息:

apitools.base.py.exceptions.HttpForbiddenError:HttpError访问https://cloudasset.googleapis.com/v1/projects/$PROJECT_ID:exportAssets?alt=json

包含以下内容:

{
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
}

我不明白使用服务帐户(gcloud auth activate-service-account(和我自己的个人帐户(gcloud auth login(登录有什么区别,因为我拥有完全相同的权限,所以两者都应该有效。

任何想法都将不胜感激。

这是对这个问题的公开调查:

将资产导出到GCS或BigQuery 时出现拒绝权限错误

似乎您必须模拟内置服务帐户service-xxxxxxxx@gcp-sa-cloudasset.iam.gserviceaccount.com,并向其添加Storage Admin角色

此外,您还必须将角色roles/bigquery.jobUserroles/bigquery.dataEditor添加到服务帐户service-xxxxxxxx@gcp-sa-cloudasset.iam.gserviceaccount.com中,其中xxxxxx是项目id。

相关内容

  • 没有找到相关文章

最新更新