G-gen の武井です。当記事では IAM ポリシーを編集しようとした際に、組織のポリシー「ドメインで制限された共有」(constraints/iam.allowedPolicyMemberDomains)が適用されています。
と表示されてエラーになったときの対処法を紹介します。
事象とメッセージ
Google Cloud(旧称 GCP)で、IAM ポリシーを編集し、Google アカウントに IAM ロールを紐づけようとした際に、以下のメッセージが表示され、編集が失敗しました。
IAM ポリシーの更新に失敗しました
組織のポリシー「ドメインで制限された共有」(constraints/iam.allowedPolicyMemberDomains)が適用されています。ポリシーでプリンシパルとして追加できるのは、許可されたドメインのプリンシパルのみです。プリンシパルのメールアドレスを修正して、もう一度お試しください。共有先のドメインの制限の詳細リクエスト ID: (数字)
原因
この事象は、組織ポリシーの制約 iam.allowedPolicyMemberDomains
が組織レベル、フォルダレベルまたはプロジェクトレベルで有効化されているときに発生します。
iam.allowedPolicyMemberDomains
は、許可されていない組織に所属する Google アカウントへの権限付与を禁止する制約です。例として、g-gen.co.jp
という組織の Google Cloud プロジェクトで、example.com
(他組織)のプリンシパルに対して IAM ロールを付与しようとするケースが該当します。
この制約は、2024年初頭以降に作成された Google Cloud 組織ではデフォルトで有効化されています。それ以前に作成された組織でも、管理者が明示的にこの制約を有効化している場合は、この事象が発生します。
なお組織のポリシーとは、セキュリティや統制の向上のために、所定のルールを Google Cloud 環境全体に適用する仕組みのことです。組織のポリシーの詳細は、以下の記事を参照してください。
対処方法
組織ポリシーの制約 iam.allowedPolicyMemberDomains
はリスト型の制約で、デフォルトでは自組織のみが許可されています。
したがって、他組織の Google アカウントに IAM ロールを付与したい場合はこの制約の許可リストに、その組織を明示的に追加する必要があります。
組織ポリシーの制約は、組織レベル、フォルダレベル、プロジェクトレベルで適用することができ、親リソースのポリシーは子リソースに継承されます。ただし、明示的に設定することで、子リソース側で親リソースの制約をオーバーライド(上書き)することも可能です。
よって、取り得る選択肢としては、以下のいずれかになります。
iam.allowedPolicyMemberDomains
を組織レベルで編集するiam.allowedPolicyMemberDomains
をフォルダレベルでオーバーライドして編集するiam.allowedPolicyMemberDomains
をプロジェクトレベルでオーバーライドして編集する
上記のうち 1.
、2.
の場合、組織全体もしくはフォルダ全体で影響が及びますが、3.
の影響範囲は当該プロジェクトのみです。
ご自身の環境構成と照らし合わせ、影響範囲を十分に理解したうえで適切なスコープで設定いただくことを推奨します。
対処手順
顧客 ID の確認
許可リストに外部組織を追加するには、その組織の顧客 ID
を把握しておく必要があります。
以下を参考に追加対象組織の顧客 ID を取得してください。
- 参考 : Google Workspace お客様 ID の取得 (
gcloud / API
から取得) - 参考 : 顧客 ID の確認 (
Admin コンソール
から取得)
また、以下の記事も参考にしてください。
IAM 権限の確認
当手順を実施するには、操作する Google アカウント、もしくはアカウントが所属するグループが、組織レベルで組織ポリシー管理者(roles/orgpolicy.policyAdmin
)ロールを持っている必要があります。
組織ポリシー管理者を付与できる最も下位レベルのリソースは「組織」です。よって、フォルダやプロジェクトレベルで制約をオーバーライドする場合でも、組織レベルで組織ポリシー管理者ロールを持っている必要があります。
作業者の Google アカウントが必要な権限を持っていない場合は、組織レベルで IAM ロール「組織ポリシー管理者」を付与してください。
組織、フォルダまたはプロジェクトを選択
Google Cloud コンソールにログインし、プロジェクトセレクターをクリックして、制約を無効化を適用する組織、フォルダ、またはプロジェクトを選択します。
当記事の「対処方法」をよくお読みになり、制約の編集位置を決めたうえで選択してください。
組織のポリシー画面へ遷移
コンソール上部の検索ボックスに「組織のポリシー」と入力し、サジェストされた組織のポリシー
を選択します。
または、IAM と管理
画面から直接遷移しても構いません。
制約の編集画面へ遷移
制約一覧の上部のフィルタに constraints/iam.allowedPolicyMemberDomains
を入力し、フィルタ結果の中から Domain restricted sharing
をクリックして編集画面へ遷移します。
制約を編集
ポリシーを管理
をクリックします。
以下の順でルールを追加し、最後にポリシーを設定
をクリックします。
# | 項目 | 設定値 |
---|---|---|
1 | ポリシーのソース | 親のポリシーをオーバーライドする |
2 | ポリシーの適用 | 親と結合する ※親の設定を上書きする場合は交換 を選択する |
3 | ポリシーの値 | カスタム を選択する |
4 | ポリシータイプ | 許可 を選択する |
5 | カスタム値 | 顧客ID を入力する |
結果の確認
設定が完了すると、以下のような表示になります。
最後に
ワークアラウンド
組織ポリシーの変更が難しい場合は、Google グループに外部組織のメンバーを追加し、そのグループに権限を付与することでドメイン制限の制約を回避することも可能です。
詳細は以下の公式ドキュメントをご確認ください。
- 参考 : Google グループ
関連記事
武井 祐介 (記事一覧)
クラウドソリューション部所属。G-gen唯一の山梨県在住エンジニア
Google Cloud Partner Top Engineer 2025 選出。IaC や CI/CD 周りのサービスやプロダクトが興味分野です。
趣味はロードバイク、ロードレースやサッカー観戦です。
Follow @ggenyutakei