"ERROR: (gcloud.asset.export) User does not have permission" only when authenticated with a service account
"ERROR: (gcloud.asset.export) User does not have permission" only when authenticated with a service account
我正在尝试使用 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
并出现以下错误:
ERROR: (gcloud.asset.export) User [my-service-account@$PROJECT_ID.iam.gserviceaccount.com] does not have permission to access project [$PROJECT_ID:exportAssets] (or it may not exist): The caller does not have permission
我的服务帐户在 $PROJECT_ID
上具有以下角色:
roles/cloudasset.viewer
roles/bigquery.jobUser
roles/bigquery.dataEditor
请注意,当我使用自己的个人帐户 登录时,gcloud asset export
有效,该帐户与我的服务帐户具有相同的角色。
将 --verbosity=debug
标志添加到 gcloud
不会添加其他信息:
apitools.base.py.exceptions.HttpForbiddenError: HttpError accessing 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
) 登录之间的区别,两者应该都可以,因为我拥有完全相同的权限。
如有任何想法,我们将不胜感激。
这是对这个问题的公开调查:
permission denied error when exporting asset to GCS or BigQuery
看来您必须模拟 built-in 服务帐户 service-xxxxxxxx@gcp-sa-cloudasset.iam.gserviceaccount.com
并向其添加 Storage Admin
角色。
此外,您还必须将角色 roles/bigquery.jobUser
和 roles/bigquery.dataEditor
添加到服务帐户 service-xxxxxxxx@gcp-sa-cloudasset.iam.gserviceaccount.com
,其中 xxxxxx
是项目 ID。
我正在尝试使用 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
并出现以下错误:
ERROR: (gcloud.asset.export) User [my-service-account@$PROJECT_ID.iam.gserviceaccount.com] does not have permission to access project [$PROJECT_ID:exportAssets] (or it may not exist): The caller does not have permission
我的服务帐户在 $PROJECT_ID
上具有以下角色:
roles/cloudasset.viewer
roles/bigquery.jobUser
roles/bigquery.dataEditor
请注意,当我使用自己的个人帐户 登录时,gcloud asset export
有效,该帐户与我的服务帐户具有相同的角色。
将 --verbosity=debug
标志添加到 gcloud
不会添加其他信息:
apitools.base.py.exceptions.HttpForbiddenError: HttpError accessing 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
) 登录之间的区别,两者应该都可以,因为我拥有完全相同的权限。
如有任何想法,我们将不胜感激。
这是对这个问题的公开调查:
permission denied error when exporting asset to GCS or BigQuery
看来您必须模拟 built-in 服务帐户 service-xxxxxxxx@gcp-sa-cloudasset.iam.gserviceaccount.com
并向其添加 Storage Admin
角色。
此外,您还必须将角色 roles/bigquery.jobUser
和 roles/bigquery.dataEditor
添加到服务帐户 service-xxxxxxxx@gcp-sa-cloudasset.iam.gserviceaccount.com
,其中 xxxxxx
是项目 ID。