フォルダを使用してコードアセットを整理する

次のドキュメントでは、BigQuery フォルダの仕組みについて説明します。フォルダを使用すると、オペレーティング システムで使用されるものと同様の階層構造でコードアセットを整理できます。たとえば、売上分析用のコードアセットを整理するフォルダを作成し、各会計年度のサブフォルダを作成できます。フォルダを使用して、コードアセットへのアクセスを管理することもできます。フォルダには Identity and Access Management(IAM)ポリシーの継承が用意されています。これを使用すると、コードアセットへのアクセスをより効率的に制御できます。ポリシーの継承により、サブフォルダとファイルは親フォルダの権限を継承できます。

BigQuery フォルダは Dataform を活用しています。

BigQuery でのフォルダの操作の詳細については、フォルダの作成と管理をご覧ください。

フォルダを使用してコードアセットを整理する

BigQuery Studio の [ファイル] ペインでフォルダを使用して、コードアセットにアクセスして整理できます。

BigQuery Studio 内の [**ファイル**] ペインの場所。

フォルダは、標準のファイル システム フォルダと同様に、コードアセットを整理するための基本的なコンテナです。親フォルダ内にサブフォルダを作成して整理したり、コードアセットをフォルダに出し入れしたりできます。フォルダに権限を付与すると、そのフォルダに含まれるすべてのフォルダとファイルに権限が伝播されます。

フォルダを使用して整理できるのは、ノートブック、保存済みクエリ、データ キャンバス、データ準備ファイルなどの単一ファイル コードアセットのみです。

フォルダの種類

BigQuery は次のタイプのフォルダをサポートしています。

  • ユーザー フォルダ: 各ユーザーには、[ユーザー(ユーザーのメールアドレス)] として表示される個人用ルートフォルダがあります。ユーザー フォルダには、指定されたプロジェクトとロケーションで作成したすべてのコードアセットが含まれています。ユーザー フォルダにサブフォルダを作成して、これらのコード アセットを整理できます。ユーザー フォルダ内のファイルやフォルダは、他のユーザーと共有しない限り、自分だけがアクセスできます。

  • チームフォルダ: チームフォルダは、Google ドライブの共有ドライブと同様に、チームでの共同作業を目的として設計されています。チームフォルダを使用すると、特定のチームに属するコードアセットを整理できます。ルート チームフォルダに対するオーナー権限を持つユーザーのみが、他のユーザーがチームフォルダを使用できるように権限を付与できます。

フォルダのコード領域

フォルダとコードアセットは、異なるコードリージョンに配置できます。たとえば、folderA とそれに含まれるコードアセットを us-west1 リージョンに、folderB とそれに含まれるコードアセットを us-central1 リージョンに配置できます。表示しているリージョンが [ファイル] ペインに表示されます。

現在のコード領域は、[**ファイル**] ペインのプロジェクト名の横に表示されます。

IAM ポリシーの継承

ファイルとフォルダのリソースに対する IAM アクセスは、階層構造を使用します。この階層により、アクセス ポリシーが親フォルダからそのコンテンツに継承されます。

フォルダに IAM ポリシーが設定されている場合、そのポリシーで付与された権限は、フォルダのサブツリー内のすべてのファイルとネストされたサブフォルダにも適用されます。結果として次のようになります。

  • 権限はフォルダ階層を通じて継承されます。ユーザーに上位フォルダの特定のロールが付与されると、そのユーザーは、そのフォルダとそのサブフォルダに含まれるすべてのリソースに対して、そのロールに含まれる権限を持ちます。
  • ユーザーがリソースに対して持つ権限は、そのリソースに直接設定されたポリシーと、ルートまでのパス内のすべてのフォルダから継承されたすべてのポリシーで構成されます。

そのため、フォルダ構造の奥にあるリソースに対してアクションを実行するために、プロジェクト レベルの権限は必要ありません。このリソースのパスにあるフォルダに対する適切な権限のみが必要です。たとえば、サブフォルダにファイルを作成する場合は、特定のサブフォルダまたはその親フォルダ(最上位フォルダを含む)のいずれかに対する必要な権限が必要です。

ファイルとフォルダに IAM ポリシーを適用する際のベスト プラクティスは次のとおりです。

  • 権限が均一に必要な階層の最上位のフォルダに IAM ポリシーを適用します。たとえば、チームがチームのディレクトリ内のすべてのデータにアクセスする必要がある場合は、個々のプロジェクト サブフォルダのレベルではなく、チームフォルダのレベルで必要なロールを付与します。
  • ユーザーまたはサービスがタスクを実行するために必要な最小限の権限を常に付与します。より具体的なフォルダレベルのロールと権限を使用できる場合は、広範なロールの付与を避けます。

リソースの作成時に付与される IAM ロール

フォルダを作成すると、次のロールが自動的に付与されます。

  • ユーザーのルートノードにフォルダを作成したユーザーには、そのフォルダに対する Dataform 管理者ロールroles/dataform.admin)が自動的に付与されます。
  • ルート チームフォルダの作成者には、そのチームフォルダに対する Dataform 管理者ロールroles/dataform.admin)が自動的に付与されます。

チームフォルダのサブツリー内に新しいファイルやフォルダを作成しても、ロールは自動的に付与されません。

ビジー状態のリソース

ユーザー フォルダまたはチーム フォルダが移動オペレーションに積極的に関与している場合(移動されるオブジェクトまたは移動の宛先として)、そのフォルダは「ビジー」状態になります。システムは、移動中のデータの整合性を確保するため、ビジー状態のリソースに対して次のアクションを制限します。

  • 別の移動オペレーションの対象になっている。
  • 別の移動オペレーションの宛先である。
  • 移動オブジェクトの祖先であること。
  • 削除オペレーションの対象である。

制限事項

BigQuery フォルダには次の制限があります。

  • フォルダのネスト階層は 5 階層までです。
  • フォルダの数が非常に多い(数十万個)場合、フォルダの操作時にパフォーマンスが低下します。たとえば、ファイル エクスプローラを読み込むときやフォルダを開くときなどです。
  • 100 個を超えるファイルまたはフォルダを含むフォルダは移動できません

ロケーション

BigQuery フォルダは、すべての Dataform ロケーションでサポートされています。

次のステップ