📑

Cloud Shell でACM を設定するときにハマった話

2022/01/27に公開

やろうとしたこと

Cloud Shell からACM でアクセスレベルを作成しようとしたところ、以下のようなエラーが発生

taruki@cloudshell:~$ cat CONDITIONS.yaml
- members:
    - user:taruki@xxx.jp

taruki@cloudshell:~$ gcloud access-context-manager levels create taruki_test_1 \
>    --title taruki_test_1 \
>    --basic-level-spec CONDITIONS.yaml \
>    --combine-function=OR \
>    --policy=123456789
ERROR: (gcloud.access-context-manager.levels.create) User [taruki@xxx.jp] does not have permission to access accessPolicies instance [123456789] (or it may not exist): Your application has authenticated using end user credentials from the Google Cloud SDK or Google Cloud Shell which are not supported by the accesscontextmanager.googleapis.com. We recommend configuring the billing/quota_project setting in gcloud or using a service account through the auth/impersonate_service_account setting. For more information about service accounts and how to use them in your application, see https://cloud.google.com/docs/authentication/. If you are getting this error with curl or similar tools, you may need to specify 'X-Goog-User-Project' HTTP header for quota and billing purposes. For more information regarding 'X-Goog-User-Project' header, please check https://cloud.google.com/apis/docs/system-parameters.
- '@type': type.googleapis.com/google.rpc.ErrorInfo
domain: googleapis.com
metadata:    
    consumer: projects/987654321   
    service: accesscontextmanager.googleapis.com  
reason: SERVICE_DISABLED

何が起きていたのか

Cloud Shell にcore/projectを設定していなかったため、プロジェクトのヘッダー情報が不足していたようだ。
以下のエラーで「X-Goog-User-Project」HTTPヘッダーを指定を促されている。

If you are getting this error with curl or similar tools, you may need to specify 'X-Goog-User-Project' HTTP header for quota and billing purposes. For more information regarding 'X-Goog-User-Project' header

解決方法

Cloud Shell で任意のプロジェクトを指定する

# Google Cloud プロジェクトが登録されているか確認
gcloud config list 
# 無ければ任意のGoogle Cloud プロジェクトを登録
gcloud config set project ${PROJECT_ID}

疑問

ACM は組織レベルの設定なのにプロジェクトの指定が必要なのは何故なのだろうか、、、

Discussion