Google Cloud を利用する企業にとって、クラウド上で扱う機密情報や重要データの保護は、経営上の最優先事項です。情報漏洩は、企業の信頼性低下、顧客データの損失、そして最悪の場合は法的責任を問われることにも繋がりかねません。そのため、Google Cloud におけるデータの安全な管理と、不正アクセスや情報漏洩のリスクを最小限に抑えることが求められます。
こうした背景の中で注目されるのが、「ドメイン制限付き共有(Domain Restricted Sharing)」の機能です。この設定を有効にすることで、企業は Google Cloud 上のリソースへのアクセスを、自社ドメインを持つユーザーに限定することが可能になります。例えば、企業が hajimenoit.com というドメインを持っている場合、この設定を利用することで、hajimenoit.com ドメインを持つメールアドレスのユーザーのみが特定の情報にアクセスできるように制限できるのです。
この記事では、Google Cloud における「ドメイン制限付き共有」の具体的な設定方法について詳しく解説します。
管理コンソールから簡単に設定を行うことができ、企業は自社のポリシーに基づいて、どのドメインのユーザーがアクセス可能かを細かく制御できます。これにより、企業は自社の重要なデータを非常に効果的に保護することができ、外部からの不正アクセスや情報漏洩のリスクを大幅に低減させることが可能になります。
組織の Google Cloud を管理する方必見の内容となっております。
是非、最後までご覧いただけると嬉しいです。
ドメイン制限付き共有(Domain Restricted Sharing)について
ドメイン制限付き共有(Domain Restricted Sharing)とは、Google Cloud の組織ポリシーの一つであり、特定のドメインに属するユーザーのみがリソースを共有できるように制限するポリシーです。
組織で Google Cloud を使用する場合、不正アクセスの防止やコンプライアンス要件などにより、特定のドメインを持つ ID に限定することはよくあります。私が知る限り、大企業になればなるほど、この傾向は強いです。
ただし、この組織ポリシーを適用すると、いくつかの問題が生じる可能性があります。その一つとして、Cloud Runや Cloud Storage などのリソースに、不特定多数のユーザーがアクセスできなくなることが挙げられます。例えば、企業が自社のホームページを Cloud Run を使用してデプロイした場合、このポリシーにより不特定多数のユーザーがアクセスできなくなり、結果として企業のホームページに誰もアクセスできなくなる可能性があります。
これを解決する方法を、今回のブログでは説明します。
ドメイン制限付き共有の設定方法
Google Cloud の組織ポリシーで「ドメイン制限付き共有(Domain Restricted Sharing)」を設定する方法について説明します。設定は、2ステップです。
- 顧客IDの確認
- ドメイン制限付き共有の設定(組織ポリシー)
顧客 ID の確認は、Google Admin コンソールで行い、ドメイン制限付き共有の設定は、Google Cloud コンソールで行います。ドメイン制限付き共有の設定は、顧客 ID を使用して設定します。
1つずつ詳しく説明します。
1. 顧客 ID の確認
まずは、顧客 ID の確認方法について説明します。
Google Admin コンソールにログインします。(admin.google.com)
![](https://hajimenoit.com/wp-content/uploads/2024/05/01-1-1024x509.jpg)
サイドバーの「アカウント」の中から「アカウント設定」を開きます。
![](https://hajimenoit.com/wp-content/uploads/2024/05/02.png)
プロファイルの中にある「顧客 ID」を控えます。
![](https://hajimenoit.com/wp-content/uploads/2024/05/03-1024x555.png)
以上で、顧客 IDの確認は終わりになります。
2. ドメイン制限付き共有の設定(組織ポリシー)
次は、Google Cloud コンソールで、組織ポリシーの「ドメイン制限付き共有」の設定を行います。
Google Cloud コンソールにログインします。
![](https://hajimenoit.com/wp-content/uploads/2024/05/04-1024x516.png)
左上の、リソースリストで、プロジェクトから組織に切り替えます。
![](https://hajimenoit.com/wp-content/uploads/2024/05/05-1024x261.png)
上部の検索窓で「組織ポリシー」で検索し、「組織のポリシー」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/05/06.png)
組織のポリシーを開いたら、フィルタの右隣にあるテキストボックスに「domain」と入力して検索します。その後、「Domain restricted sharing」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/05/07.png)
ポリシーが開いたら、「ポリシーを管理」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/05/08.png)
下記設定を行います。
- ポリシーのソース:親のポリシーをオーバーライドする
- ポリシーの適用:置き換える
![](https://hajimenoit.com/wp-content/uploads/2024/05/09.png)
ルールについては、下記設定を行います。カスタム値は、「1. 顧客 IDの確認」で確認したIDを入力します。入力後「完了」を選択します。
- ポリシーの値:カスタム
- ポリシーの種類:許可
- カスタム値:顧客 ID
![](https://hajimenoit.com/wp-content/uploads/2024/05/10.png)
最後に「ポリシーを設定」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/05/11.png)
設定が正常に適用されると、ポリシーに反映されます。
![](https://hajimenoit.com/wp-content/uploads/2024/05/12.png)
1つ注意点があります。組織ポリシーは設定された時点から適用されるため、ポリシー設定前に他のドメインでIAMなどの設定を行っていた場合、それらの設定には当該ポリシーは適用されません。したがって、特定のリソースに対して組織ポリシーを除外したい場合は、一時的に組織ポリシーを初期設定に戻すことで、そのリソースに対し組織ポリシーを除外することが可能です。
以上で、組織ポリシーで「ドメイン制限付き共有」の設定は終わりになります。
「未認証の呼び出しを許可」でCloud Run サービスを構築
次は、Cloud Run でサービスを構築する際、認証設定を「未認証の呼び出しを許可」にした際の挙動について確認します。「未認証の呼び出しを許可」とは、不特定多数のユーザーが Google の認証なしで Cloud Run のサービスや Cloud Storage のバケットにアクセスできることを意味します。
組織リソースからプロジェクトリソースに切り替えて、Cloud Run を開きます。コンソール上部の「サービスを作成」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/05/13-1024x481.png)
サンプル コンテナでサービスを作成します。「サンプル コンテナでテスト」を選択します。 認証は、「未認証の呼び出しを許可」が選択されていることを確認します。
![](https://hajimenoit.com/wp-content/uploads/2024/05/14-2.png)
Cloud Run のサービスにインターネットからアクセスするので、上り(内向き)の制御は「すべて」を選択します。最後に「作成」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/05/15.png)
リソース自体は作成されますが、「IAM ポリシー」の項目に「ロール「roles/run.invoker」を次のプリンシパルに割り当てることがでませんでした: allUsers」というメッセージが表示されます。
Google Cloudにおける allUsers は、認証されていない全てのユーザーのことをいいます。
![](https://hajimenoit.com/wp-content/uploads/2024/05/16-1024x471.png)
Cloud Runのサービスを起動するためには、起動するユーザーに「Cloud Run 起動元(roles/run.invoker)」のロールが必要になります。しかし、組織ポリシーの「共有先のドメインの制限」で制限を行っている場合、すべてのユーザーにこのロールを付与することができないため、だれも Cloud Run のサービスを起動することができません。
実際に、Web ブラウザで Cloud Run のサービスを開くと下記メッセージが表示されます。
![](https://hajimenoit.com/wp-content/uploads/2024/05/17.png)
これを回避する方法を説明します。
ドメイン制限のかかっている組織でだれもがアクセスできるCloud Run サービスを構築する方法
今回説明する方法は、下記 Google Cloud ブログに記載されている内容を解説しています。
![](https://storage.googleapis.com/gweb-cloudblog-publish/images/e2-hero-2880x1200.max-2200x2200.max-2200x2200.png)
それでは、実際に解説します。
1. タグの作成
まずは、該当のCloud Run サービスを除外するため、印となるタグを作成します。タグが設定されているCloud Runのリソースについては、「allUsers」に「Cloud Run 起動元(roles/run.invoker)」ロールを付与できるように設定します。要するに、特定のドメイン以外のユーザーでもIAMを設定できるようにします。
組織リソースで「タグ」を開き、タグキー下の「作成」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/05/18--1024x570.png)
タグキーを入力します。入力値は任意です。今回は、上記 Google Cloud ブログを参照しています。入力後、「タグキーを作成」を選択します。
- タグキー:allUsersIngress
- タグの値:True
- タグの値の説明1:Cloud Run サービスの起動をすべてのユーザーに許可
![](https://hajimenoit.com/wp-content/uploads/2024/05/19.png)
正常にタグキーが作成されると一覧に表示されます。
![](https://hajimenoit.com/wp-content/uploads/2024/05/20-1024x194.png)
以上で、タグの作成は終わりになります。
2. 組織ポリシーの変更
次は、組織ポリシーの「ドメイン制限付き共有」ポリシーを変更します。先程、作成したタグキーが設定されているリソースについては、allUsers に対してリソースへアクセスできる権限を付与できるようにします。
組織リソースで組織ポリシーを開き、「共有先のドメインを制限」ポリシーを開きます。ポリシー名右横の「ポリシーを管理」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/05/21-.png)
追加のルールを作成します。顧客 IDの下にある「ルールの追加」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/05/22.png)
今回、該当のタグが設定してあるリソースについては、allUsers にリソースへのアクセスを許可するので、ポリシーの値は「すべて許可」を選択します。その後、「条件を追加」を選択します。
ポリシーの値:すべて許可
![](https://hajimenoit.com/wp-content/uploads/2024/05/23.png)
条件の編集画面で下記設定を行います。設定後、「保存」を選択します。
- タイトル:allowAllUsersIngress(任意)
- 条件タイプ:タブ
- 演算子:値がある
- 値のパス:「1. タグの作成」で作成したタグ
![](https://hajimenoit.com/wp-content/uploads/2024/05/24.png)
最後に「ポリシーを設定」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/05/25.png)
設定が正常に適用されると、ポリシーに反映されます。
![](https://hajimenoit.com/wp-content/uploads/2024/05/26.png)
上記組織IDは、Google Cloudの各組織に割り当てられたIDです。顧客 IDとは異なるため、ご注意ください。組織IDは、リソース一覧から確認可能です。
![](https://hajimenoit.com/wp-content/uploads/2024/05/38.png)
以上で、組織ポリシーの変更は終わりになります。
3. Cloud Run リソースへタグの付与
次は、Cloud Runのリソースへタグの付与を実施します。
Cloud Runを開きます。
![](https://hajimenoit.com/wp-content/uploads/2024/05/27-1024x215.png)
該当リソースのチェックを入れ、「タグ」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/05/28.png)
「スコープの選択」から「現在の組織を選択」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/05/29.png)
「1. タグの作成」で作成した「タグキー」と「キーの値」を選択し、「保存」を選択します。
- キー 1:allUsersIngress
- 値 1:True
![](https://hajimenoit.com/wp-content/uploads/2024/05/30.png)
「リソースタグの変更の確認」ダイアログが表示されます。「確認」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/05/31.png)
以上で、Cloud Run リソースへタグの付与は終わりになります。
4. Cloud Run リソースに対して allUsers に Cloud Run 起動元 ロールを付与
最後に、Cloud Run リソースに対してallUsers に Cloud Run 起動元(roles/run.invoker) ロールを付与して、Cloud Run でデプロイしたサービスにアクセスできるかを確認します。
Cloud Runのコンソール画面で、該当のリソースを選択し、「権限」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/05/32.png)
「プリンシパルを追加」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/05/33.png)
下記設定を行います。設定後、「保存」を選択します。
- 新しいプリンシパル:allUsers
- ロール:Cloud Run 起動元
![](https://hajimenoit.com/wp-content/uploads/2024/05/34.png)
リソースに対して、一般公開される確認メッセージが表示されます。「一般公開アクセスを許可」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/05/35.png)
正常にロールが付与されると、「Cloud Run 起動元」に「allUsers」が追加されます。なお、リソースが一般公開されている為、コンソール上部に「このリソースは一般公開されていて、〜」のメッセージが表示されます。
![](https://hajimenoit.com/wp-content/uploads/2024/05/36.png)
最後に、Cloud Run で作成したサービスにアクセスできるか確認します。該当リソースのURL欄にあるURLをWebブラウザに貼り付けます。今後は、正常にCloud Runのサービスにアクセスできます。
![](https://hajimenoit.com/wp-content/uploads/2024/05/37-1024x680.png)
このように、組織ポリシーで「ドメイン制限付き共有(Domain Restricted Sharing)」でドメイン制限が実施されている場合、一般公開するサービスを作成した場合、「allUsers」にロールを付与することができません。
この場合、タグと組織ポリシーの条件を追加することで、ドメイン制限付き共有ポリシーに対して除外設定を行うことができます。
まとめ
今回は、下記4点について説明しました。
- ドメイン制限付き共有(Domain Restricted Sharing)について
- ドメイン制限付き共有の設定方法
- 未認証の呼び出しを許可でCloud Run サービスを構築
- ドメイン制限のかかっている組織でだれもがアクセスできるCloud Run サービスを構築する方法
Google Cloud を組織で使用する場合、「ドメイン制限付き共有(Domain Restricted Sharing)」ポリシーはよく利用されます。このポリシーを使用すると、通常、一般公開のサービスの提供が困難になります。今回紹介した方法を参考にして、組織内でGoogle Cloudを安全に使用してください。
これからも、Macのシステムエンジニアとして、日々、習得した知識や経験を発信していきますので、是非、ブックマーク登録してくれると嬉しいです!
それでは、次回のブログで!