フォルダを作成する

このページでは、フォルダを作成して、リソース階層内のプロジェクトをグループ化し、整理する方法について説明します。 Google Cloud フォルダを使用すると、管理業務を委任したり、環境固有の組織のポリシーを適用したり、部門全体の費用管理を効率化したりできます。

フォルダは、 Cloud Platform リソース階層のノードです。 フォルダ内には、プロジェクトや他のフォルダが存在します。組織リソースは、フォルダを使用して、階層内の組織リソース ノードにあるプロジェクトをグループ化できます。たとえば、組織リソースに複数の部門があり、 各部門が独自の Google Cloud リソースセットを使用する場合があります。フォルダを使用すると、これらのリソースを部門別にグループ化できます。フォルダは、共通の許可ポリシーまたは拒否ポリシーを共有するリソースのグループ化に使用します。フォルダには複数のフォルダやリソースを含めることができますが、特定のフォルダやリソースには親が 1 つだけ存在します。

次の図では、組織リソース「Company」に 2 つの部門「Dept X」と「Dept Y」を表すフォルダがあり、両方の部門に共通する項目がフォルダ「Shared Infrastructure」に存在しています。「Dept Y」の下に 2 つのチームがあり、チームのフォルダ内にプロダクトが存在します。「Product 1」フォルダには 3 つのプロジェクトが存在し、それぞれにプロジェクトに必要なリソースが含まれています。これにより、適切なレベルの粒度で許可ポリシー、拒否ポリシー、組織のポリシーを柔軟に割り当てることができます。

部門、チーム、プロダクトのネストされたフォルダを含む組織と、プロジェクトを含むリソース階層。

フォルダレベルの許可ポリシーと拒否ポリシーを使用すると、フォルダ内のリソースに対するアクセスを制御できます。たとえば、ユーザーにフォルダに対するCompute インスタンス管理者 ロールが付与されている場合、そのユーザーはフォルダ内のすべてのプロジェクトに対してCompute インスタンス管理者 ロールを持ちます。

始める前に

フォルダ機能は、組織リソースを持つ Google Workspace および Cloud Identity のユーザーのみが利用できます。組織リソースの取得の詳細については、 組織リソースを取得するをご覧ください。

フォルダの最適な使い方を学習する前に、次のことを行ってください。

  1. IAM によるフォルダのアクセス制御を確認する。このトピックでは、フォルダとフォルダ内のリソースに対するアクセス制御の方法を説明しています。このトピックでは、フォルダとフォルダ内のリソースに対するアクセス制御の方法を説明しています。
  2. フォルダ権限の設定方法を確認する 。フォルダには、さまざまな Identity and Access Management(IAM)ロールを設定できます。ユーザーがプロジェクトの構造を広く確認できるように権限を設定するには、ドメイン全体に組織リソースレベルで組織閲覧者フォルダ閲覧者 のロールを付与します。フォルダ階層でブランチの公開を制限するには、ユーザーに表示するフォルダにフォルダ閲覧者のロールを付与します。
  3. フォルダを作成する。Cloud リソースの整理方法を検討するときに、サンドボックスとして 1 つのフォルダを作成し、組織で有効な階層を探すことをおすすめします。フォルダは、リソース間の境界であり、アクセス ポリシーや構成ポリシーの割り当てポイントとなります。異なる部門のリソースを含むフォルダを作成して、フォルダに管理者ロールを割り当て、管理者権限を委譲することもできます。フォルダは、アプリケーションや異なる環境(開発環境、本番環境、テスト環境など)に属するリソースをグループ化する場合にも使用できます。フォルダをネストすることで、異なるシナリオをモデル化できます。

一般的な状況では、前のリソース階層で示したように、フォルダを作成して、そのフォルダにフォルダやプロジェクトを追加します。この構造をフォルダ階層といいます。 フォルダ階層を作成する場合には、次の点に注意してください。

  • フォルダのネストレベルは 10 個までです。
  • 親フォルダ内に作成できるフォルダは 300 個までです。この制限は、直下の子フォルダのみに適用されます。これらの子フォルダにはフォルダやプロジェクトを追加できます。
  • フォルダの表示名は、階層内の同じレベルで一意にする必要があります。

権限を設定してフォルダを管理する

フォルダにアクセスして管理するには、フォルダ固有の IAM ロールを特定のユーザー グループに割り当てます。ロールの詳細については、IAM を使用したフォルダのアクセス制御をご覧ください。また、おすすめの方法にて、フォルダの権限に最適な設定を確認することをおすすめします。

ヒント: 組織リソース全体のフォルダを管理するには、フォルダ管理者のロールが必要です。このロールを使用すると、フォルダに対する IAM 権限(作成、編集、削除、移動、変更)とフォルダ間でのプロジェクトの移動権限がユーザーに付与されます。

最初の段階では、組織リソースにフォルダ管理者のロールを割り当てることができるのは組織管理者だけです。以降は、このロールが割り当てられたアカウントが他のアカウントにロールを付与します。

フォルダ権限を設定する手順は次のとおりです。

コンソール

  1. コンソールで、[**リソースの管理**] ページを開きます。 Google Cloud

    [リソースの管理] に移動

  2. 情報パネルが開かない場合は、[情報パネルを表示] をクリックします。
  3. [リソース] テーブルで、フォルダを含む組織を開きます。
  4. 組織のリソースのリストから、管理するフォルダを選択します。
  5. 情報パネルで [プリンシパルを追加] をクリックします。
  6. [プリンシパルを追加] フィールドに、権限を付与するメールアドレスを入力します。
  7. [ロールを選択] メニューで、[Resource Manager] カテゴリを選択し、付与するロール(フォルダ管理者 など)を選択します。
  8. [保存] をクリックして、新しいロールを付与します。

gcloud

Google Cloud CLI を使用してプリンシパルにフォルダ管理者のロールを付与するには、次のコマンドを実行します。

    gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member=user:USER_ID \
    --role=roles/resourcemanager.folderAdmin

REST

JSON リクエスト:

request_json= '{ policy: { version: "1", bindings: [ { role: "roles/folderAdmin",
members: [ "user:admin@myorganization.com", ] }, { role: "roles/folderCreator",
members: [ "user:admin@myorganization.com", ] } , { role: "roles/folderMover",
members: [ "user:admin@myorganization.com", ] } , ] } }'

curl リクエスト:

curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token}" \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/ORGANIZATION_NAME:setIamPolicy

ORGANIZATION_NAME は、許可ポリシーが設定されている組織の名前(organizations/123 など)に置き換えます。

フォルダを作成する

フォルダを作成するには、親レベルにフォルダ管理者 またはフォルダ作成者 のロールが必要です。たとえば、組織レベルでフォルダを作成するには、これらのいずれかのロールが組織レベルで必要です。

フォルダの作成中にフォルダ名を割り当てます。フォルダ名は次の要件を満たす必要があります。

  • 名前には文字、数字、スペース、ハイフン、アンダースコアを使用できます。
  • フォルダの表示名の先頭と最後は文字または数字にする必要があります。
  • 名前は 3~30 文字にしてください。
  • 親を共有する別のフォルダと同じ名前は使用できません。

フォルダを作成する手順は次のとおりです。

コンソール

フォルダの作成は、UI の [プロジェクトとフォルダを管理] セクションで行います。

  1. [リソースの管理] ページに移動します。 Google Cloud コンソールで:

    [リソースの管理] ページを開く

  2. ページの上部にある組織プルダウン リストで組織リソース名が選択されていることを確認します。

  3. [**フォルダを作成**] をクリックし、次のいずれかのオプションを選択します。

  4. [フォルダ名] ボックスに、新しいフォルダの名前を入力します。

  5. [宛先] で [参照] をクリックして、新しいフォルダを作成する組織リソースまたはフォルダを選択します。

    1. [作成] をクリックします。

gcloud

Google Cloud CLI を使用して、フォルダをプログラムで作成できます。

gcloud コマンドライン ツールを使用して組織リソースの下にフォルダを作成するには、次のコマンドを実行します。

gcloud resource-manager folders create \
   --display-name=DISPLAY_NAME \
   --organization=ORGANIZATION_ID

親が異なるフォルダを作成するには:

gcloud resource-manager folders create \
   --display-name=DISPLAY_NAME \
   --folder=FOLDER_ID

次のように置き換えます。

  • DISPLAY_NAME: フォルダの表示名。同じ親を持つフォルダと表示名を共有することはできません。表示名の先頭と最後は文字または数字にしてください。表示名には文字や数字以外に、スペース、ハイフン、アンダースコアを使用できますが、長さは 30 文字以下にする必要があります。
  • ORGANIZATION_ID:親が組織リソースの場合、 親組織リソースの ID。
  • FOLDER_ID: 親がフォルダの場合、親フォルダの ID。

API

API リクエストによってフォルダを作成できます。

JSON リクエスト:

request_json= '{
  display_name: DISPLAY_NAME,
  parent: ORGANIZATION_NAME
}'

フォルダを作成する curl リクエスト:

curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token}" \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/folders

ここで

  • DISPLAY_NAME: 新しいフォルダの表示名。例: My Awesome Folder
  • ORGANIZATION_NAME: フォルダを作成する組織リソースの名前。例: organizations/123

フォルダ作成に対するレスポンス:

{
  "name": "operations/fc.123456789",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
    "displayName": "DISPLAY_NAME",
    "operationType": "CREATE"
  }
}

オペレーションを取得する curl リクエスト:

curl -H "Authorization: Bearer ${bearer_token}" \
https://cloudresourcemanager.googleapis.com/v3/operations/fc.123456789

オペレーション取得に対するレスポンス:

{
  "name": "operations/fc.123456789",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
    "displayName": "DISPLAY_NAME",
    "operationType": "CREATE"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.Folder",
    "name": "folders/12345",
    "parent": "organizations/123",
    "displayName": "DISPLAY_NAME",
    "lifecycleState": "ACTIVE",
    "createTime": "2017-07-19T23:29:26.018Z",
    "updateTime": "2017-07-19T23:29:26.046Z"
  }
}

フォルダの作成時にタグを追加する

タグを使用すると、リソースのアノテーションを作成できます。タグは、フォルダの作成時に追加できます。これを行うには、 Tag User ロールを付与する必要があります。このロールに含まれる権限の詳細については、タグの作成と管理をご覧ください。タグの Key-Value ペアの名前空間は、次のいずれかの方法でのみ追加できます。

gcloud

フォルダの作成時にタグを追加するには、次のコマンドを実行します。

  gcloud resource-manager folders create \
      --display-name=DISPLAY_NAME \
      --organization=ORGANIZATION_ID\
      --tags=KEY_VALUE_PAIRS

次のように置き換えます。

  • DISPLAY_NAME: フォルダの表示名。
  • ORGANIZATION_ID: 親組織リソースの一意の識別子。
  • KEY_VALUE_PAIRS: リソースに割り当てることができる Key-Value ペアのカンマ区切りのリスト。Key-Value ペアのカンマ区切りリストの例: 123/environment=production, 456/create=testresource

REST

次のスニペットは、フォルダを作成してタグを追加する JSON リクエストです。

  POST https://cloudresourcemanager.googleapis.com/v3/projects/
  Authorization: *************
  Content-Type: application/json

  {
    "display_name": "our-folder-456",
    "parent": "organizations/123",
    "tags": {
      "key": "123/environment"
      "value": "production"
    },
"tags": {
      "key": "123/costCenter"
      "value": "marketing"
    }
  }

フォルダに対するアクセス権を設定する

フォルダに対するアクセス権を設定するには、親レベルでフォルダ IAM 管理者 またはフォルダ管理者 のロールが必要です。

コンソール

  1. コンソールで、[**リソースの管理**] ページを開きます。 Google Cloud

    [リソースの管理] ページを開く

  2. 左上にある [組織] プルダウン リストをクリックして、組織リソースを選択します。

  3. 権限を変更するプロジェクトの横にあるチェックボックスをオンにします。

    1. 右側の [情報パネル] の [権限] で、追加するメンバーのメールアドレスを入力します。

    2. [ロールを選択] プルダウン リストで、メンバーに付与するロールを選択します。

    3. [追加] をクリックします。メンバーの新しいロールの追加または更新を確認する通知が表示されます。

gcloud

Google Cloud CLI または REST API を使用して、フォルダに対するアクセス権をプログラムで構成できます。

gcloud resource-manager folders \
    add-iam-policy-binding FOLDER_ID \
    --member=user:email1@example.com \
    --role=roles/resourcemanager.folderEditor
gcloud resource-manager folders \
    add-iam-policy-binding FOLDER_ID \
    --member=user:email1@example.com \
    --role=roles/resourcemanager.folderViewer

または

gcloud resource-manager folders \
    set-iam-policy FOLDER_ID POLICY_FILE

次のように置き換えます。

  • FOLDER_ID: 新しいフォルダの ID
  • POLICY_FILE: フォルダのポリシー ファイルのパス

API

setIamPolicy メソッドは、フォルダにアクセス制御ポリシーを設定します。 既存のポリシーは置換されます。resource フィールドは、フォルダのリソース名です。例: folders/1234

 request_json= '{
   policy: {
     version: "1",
     bindings: [
       {
         role: "roles/resourcemanager.folderEditor",
         members: [
           "user:email1@example.com",
           "user:email2@example.com",
         ]
       }
     ]
   }
 }'

curl リクエスト:

   curl -X POST -H "Content-Type: application/json" \
   -H "Authorization: Bearer ${bearer_token}" \
   -d "$request_json" \
   https://cloudresourcemanager.googleapis.com/v3/FOLDER_ID:setIamPolicy

FOLDER_ID は、IAM ポリシーが設定されるフォルダの名前(folders/123 など)に置き換えます。

長時間実行オペレーションを処理する

作成や移行など、一部のフォルダ オペレーションは、グローバルな伝播が必要なため、 で Google Cloud 非同期的に処理されます。ターミナルや自動化スクリプトがブロックされないように、--async フラグを使用できます。

このフラグを使用すると、コマンドは長時間実行オペレーション(LRO)オブジェクトをすぐに返します。 その後、operation_id を使用して、都合のよいときに完了をポーリングできます。--async フラグは、folders create コマンドと folders move コマンドでのみサポートされています。

フラグを使用する手順は次のとおりです。

  1. 非同期タスクを開始します。次のサンプル コマンドを参照してください。

    gcloud resource-manager folders create \
        --display-name="Test Async Folder" \
        --organization=2518 \
        --async
    

    出力にはオペレーション名(fc.8572 など)が表示され、done: false と表示されます。

    レスポンスの例:

    name: operations/fc.8572
    metadata:
    operation_type: CREATE
    display_name: Awe-Inspiring Async Folder
    destination_parent: organizations/2518
    done: false
    
  2. オペレーションのステータスを確認します。タスクが完了したかどうかを確認するには、前のステップで指定した ID を使用して operations describe コマンドを実行します。

    gcloud beta resource-manager operations describe fc.8572
    

    done が true になると、レスポンス ブロックに新しく作成されたリソースの詳細が表示されます。

    name: operations/fc.8572
    done: true
    response:
      name: folders/6428
      display_name: Awe-Inspiring Async Folder
      lifecycle_state: ACTIVE
      create_time: '2024-03-20T10:00:00Z'
    

次のステップ