[英]"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
並得到以下錯誤:
錯誤:(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
) gcloud auth login
,兩者都應該可以工作,因為我擁有完全相同的權限。
任何想法將不勝感激。
這是一個關於這個問題的公開調查:
將資產導出到 GCS 或 BigQuery 時出現權限被拒絕錯誤
看來您必須模擬內置服務帳戶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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.