Circumflex

IAM binding が組織ポリシーで弾かれた場合

プロジェクト追加ウィザード Step3 「当社サービスアカウントへの権限付与」で以下のエラーが出る場合、お客様の Google Cloud 組織で組織ポリシーconstraints/iam.allowedPolicyMemberDomains(Domain Restricted Sharing)が有効になっており、当社サービスアカウントを IAM に追加できない状態です。

該当エラー例

ERROR: (gcloud.projects.add-iam-policy-binding) FAILED_PRECONDITION:
  One or more users named in the policy do not belong to a permitted customer.
  description: User worker-sa@circumflex-security.iam.gserviceaccount.com
               is not in permitted organization.
  type: constraints/iam.allowedPolicyMemberDomains

Workspace 顧客や ISMS / SOC2 等で組織ポリシーを強化されているお客様で発生しやすい 事象です。当社サービスのアーキテクチャ(クロスアカウント IAM 方式)の前提を満たすために、以下のいずれかの対応をお願いいたします。

解決策 A: 該当プロジェクト単位で制約を上書きする(推奨)

該当の Google Cloud プロジェクトだけallowedPolicyMemberDomainsを「全許可」に上書きします。組織全体には影響しません。

必要権限: 該当 Google Cloud プロジェクトのroles/orgpolicy.policyAdminまたはプロジェクトオーナー

# YOUR_PROJECT_ID は対象プロジェクト ID に置き換えてください

# 1. 上書きポリシーを一時ファイルに書き出す
cat > tmp-policy.yaml <<'EOF'
constraint: constraints/iam.allowedPolicyMemberDomains
listPolicy:
  allValues: ALLOW
EOF

# 2. set-policy にファイルパスを渡す(gcloud は - で stdin を受け付けないため)
gcloud resource-manager org-policies set-policy tmp-policy.yaml \
  --project=YOUR_PROJECT_ID

# 3. (任意)一時ファイルを削除
rm tmp-policy.yaml

上記実行後、ウィザード Step3 のコマンドを再実行してください。

⚠️ 組織ポリシーの変更は 反映に最大 7 分かかります(Google Cloud の仕様)。set-policy 直後に再実行すると同じエラーが出ることがあります。 まず以下のコマンドでポリシーが実際に適用されているか確認した上で、数分待ってから 再実行してください。

gcloud resource-manager org-policies describe \
  constraints/iam.allowedPolicyMemberDomains \
  --project=YOUR_PROJECT_ID

返ってきた YAML に allValues: ALLOW が含まれていれば適用済みです。それでも 7 分待って再実行してもエラーが続く場合は、 親組織ポリシーからの継承が効いている可能性があるためinheritFromParent: falseを YAML に追記して再度 set-policy してください。

⚠️ 上書きを元に戻したい場合は次のコマンドで削除できます。すでに追加済みの IAM binding は維持されます。

gcloud resource-manager org-policies delete \
  constraints/iam.allowedPolicyMemberDomains \
  --project=YOUR_PROJECT_ID

解決策 B: 当社の Cloud Identity Customer ID を組織ポリシーに追加(恒久対応)

当社の Cloud Identity Customer ID を、お客様の組織ポリシーのallowedValuesに追加していただく方法です。1 回設定すれば、今後追加されるどのプロジェクトでも 同じエラーが起きなくなります。

必要権限: お客様の Google Cloud 組織のroles/orgpolicy.policyAdmin

当社の Cloud Identity Customer ID(C0xxxxxxx 形式)はサポートまでお問い合わせください。お客様側で以下のコマンドを実行いただきます。

# CIRCUMFLEX_CUSTOMER_ID はサポートから連絡された値(C0xxxxxxx)
# YOUR_ORG_ID は gcloud organizations list で取得できる組織 ID
gcloud resource-manager org-policies allow \
  constraints/iam.allowedPolicyMemberDomains \
  CIRCUMFLEX_CUSTOMER_ID \
  --organization=YOUR_ORG_ID

どちらを選べばよいか

  • まず試すなら 解決策 A(プロジェクト単位の上書き)。リスクが小さく即座に試せます。
  • 今後も継続して当社サービスを利用される、複数プロジェクトに展開する予定がある場合は解決策 B(組織ポリシーへの allowedValues 追加)が運用負荷が低くなります。

それでも解決しない場合

上記の手順で解決しない場合や、組織ポリシーの編集権限が無い場合は、サポートまで ご連絡ください。エラーメッセージ全文と実行したコマンドを添えていただけると スムーズです。

参考: Google Cloud 公式ドキュメント「Restricting identities by domain」