G-genの山崎です。 Google Cloud (旧称 GCP) の Cloud Storage でフォルダ単位での権限管理が可能となるマネージドフォルダを用いた権限管理方法について、解説します。
- Cloud Storage とは
- フォルダを用いたオブジェクトの管理
- シミュレートされたフォルダとは
- マネージドフォルダとは
- マネージドフォルダでの権限管理
- マネージドフォルダの使い方
- マネージドフォルダでの権限管理による留意事項
Cloud Storage とは
Cloud Storage は、データ容量が無制限、かつ耐久性の高いストレージサービスで、略称として GCS とも呼称されます (Google Cloud Storage の略) 。
Cloud Storage は、上記の特性から以下のような様々な用途で利用することができます。
- システム間のデータ授受
- データ分析における、未加工データ(データレイク)
- 各種データのバックアップ
Cloud Storage 上、各種ファイルは、バケットと呼ばれるデータを入れる箱の中に、オブジェクトとして、保存されます。
Cloud Storage の全体像について確認する場合は、以下の記事を参照いただければと思います。
blog.g-gen.co.jp
フォルダを用いたオブジェクトの管理
Cloud Storage は以下の2種類のフォルダを用いて、オブジェクトを管理することができます。
- シミュレートされたフォルダ
- マネージドフォルダ
明示的に指定しない場合、マネージドフォルダは作成されず、シミュレートされたフォルダが作成されます。それぞれのフォルダの違いについて、以降で述べていきます。
シミュレートされたフォルダとは
シミュレートされたフォルダは「シミュレート」という名の通り、Cloud Storage バケット内にフォルダの実体は存在しない、仮想的なフォルダです。
例えば、以下のような形でオブジェクトを作成したとします。
- bucket/folder1/file1.txt
- bucket/folder1/folder1-1/file1-1.txt
- bucket/folder2/file2.txt
この場合、Google Cloud コンソール上は、以下のような階層構造で表示されます。
これは、実体として「folder1」「folder2」といったフォルダが作成されているわけではなく、オブジェクトのパスの中に「/」が含まれているため、Google Cloud コンソール上、あたかもフォルダが存在するかのように表示されているだけです。
- 参考 : フォルダの概要
シミュレートされたフォルダは、あたかもフォルダが存在するかのように表示されているだけであり、実体は存在しません。そのため、フォルダ単位での権限管理を行うことはできません。
フォルダ単位での権限管理を行いたい場合は、マネージドフォルダを使用する必要があります。
マネージドフォルダとは
マネージドフォルダは、シミュレートされたフォルダと異なり、リソースとしての実体が存在します。また、フォルダ単位での権限管理が可能です。
ただし、マネージドフォルダを使用する際は、フォルダの命名や、フォルダの階層に制約が発生するため、公式ドキュメントで制約を確認の上、作成することを推奨します。
- 参考 : マネージド フォルダ
マネージドフォルダでの権限管理
マネージドフォルダに対する権限付与は、バケットやプロジェクトに対して付与していた権限をフォルダに置き換えて実施していただければ、基本的には問題ありません。
権限の継承も通常の権限の付与と同様に行われるため、 権限を付与したマネージドフォルダ配下のオブジェクトに対しても権限が適用されます。
なお、権限の継承の考え方については、以下の記事を参照いただければと思います。
マネージドフォルダでの権限管理での注意点は、マネージドフォルダに関する IAM 権限(フォルダ作成、削除、閲覧等)は、バケットやオブジェクトとは別であるという点です。マネージドフォルダに関する IAM 権限には、以下のようなものがあります。
- storage.managedFolders.create
- storage.managedFolders.delete
- storage.managedFolders.get
- storage.managedFolders.list
- storage.managedFolders.getIamPolicy
- storage.managedFolders.setIamPolicy
しかし、事前定義ロール(Storage オブジェクト閲覧者、Storage オブジェクト ユーザー 等)を用いてバケットやオブジェクトに対する権限管理をしている場合、それらのロールは、マネージドフォルダに関する権限も含んでいます。たとえば、「Storage オブジェクト閲覧者」ロールには storage.managedFolders.get
と storage.managedFolders.list
の権限が含まれています。
そのため、「シミュレートされたフォルダをマネージドフォルダに変更したら、フォルダが見えなくなった」といったトラブルの発生頻度は低いと考えてよいでしょう。
- 参考 : 事前定義ロール
- 参考 : マネージドフォルダの権限
マネージドフォルダの使い方
実際に、「folder1」をマネージドフォルダ化し、あるユーザーに対して、「folder1」配下に対して参照権限を付与した場合の挙動を確認していきます。
「folder1」の「︙」を押下し、「アクセス権の編集」を押下します。
マネージドフォルダの作成の確認ポップアップに対して、「マネージドフォルダをアタッチします」を押下します。
「folder1」に対するアクセス権の編集ポップアップに対して、「プリンシパルを追加」を押下し、権限を付与したいアカウントに対して、権限を付与します。
権限の付与が完了した後に、権限が付与されたユーザーで、権限が付与されたフォルダのURLを用いて、Google Cloud コンソールを確認したところ、「folder1」のみ参照ができ、「folder2」は表示されないことが確認できました。
また、「folder1-1」に移動すると、その配下の「file1-1.txt」の表示が確認でき、「folder1」に付与した権限が、配下のフォルダに対して、継承されていることが確認できます。
マネージドフォルダでの権限管理による留意事項
マネージドフォルダを用いることで、一つのバケットの中で、フォルダ単位で権限管理を行うことができるようになります。
一方で、バケットよりも細かい単位での権限管理となると、運用管理者からすると、管理が煩雑となる可能性もあります。
そのため、バケットやオブジェクトを誰と共有するかを整理の上、バケット単位での権限管理とするか、マネージドフォルダでの権限管理とするかを検討するプロセスを踏むことが重要となります。
- 参考 : おすすめのアクセス制御方法
山崎 曜(記事一覧)
クラウドソリューション部
元は日系大手SIerにて金融の決済領域のお客様に対して、PM/APエンジニアとして、要件定義〜保守運用まで全工程に従事。
Google Cloud Partner Top Engineer 2025 選出。
Google Cloud 全 11 資格保有。
フルスタックな人材を目指し、日々邁進。