リソース設定の管理

このガイドでは、リソース設定の管理方法について説明します。リソースの設定を使用して、Google Cloud プロジェクト、フォルダ、組織の設定を一元的に構成できます。各リソース設定を使用して、サポートされているサービスの特定の側面を制御できます。

始める前に

リソース設定とその仕組みの詳細については、リソース設定の概要をご覧ください。

API を有効にする

Resource Settings API は、個別のプロジェクトで有効にできます。

Google Cloud コンソール

Resource Settings API を有効にするには、次のようにします。

[API とサービス] に移動

  1. API へのアクセスで使用するプロジェクトを選択します。
  2. [API とサービスを有効にする] ボタンをクリックします。
  3. 「Resource Settings」を検索します。
  4. 検索結果にある「Resource Settings API」をクリックします。
  5. [API が有効です]が表示されている場合、その API はすでに有効になっています。そうでない場合は、[有効にする] ボタンをクリックします。

gcloud

Resource Settings API を有効にするには、gcloud services enable コマンドを使用します。

gcloud services enable resourcesettings.googleapis.com

必要な権限

必要な権限は、実行する必要があるアクションによって異なります。

これらの権限を取得するには、リソース階層に見合うレベルで示されたロールを付与するように管理者へ依頼してください。

リソース設定の表示

リソースで使用できるリソース設定と、リソースでの有効なローカル設定値を表示するには、リソース設定閲覧者ロール(roles/resourcesettings.viewer)か、次の権限を含む別のロールが必要です。

  • resourcesettings.settings.get
  • resourcesettings.settings.list

リソース設定の管理

リソースに関するリソース設定値を作成、更新、削除するには、リソース設定管理者ロール(roles/resourcesettings.admin)か、次の権限を含む別のロールが必要です。

  • resourcesettings.settings.get
  • resourcesettings.settings.list
  • resourcesettings.settings.update

使用可能な設定のリスト

リソース設定は、特定のリソースに対して使用可能な設定すべてのリストを取得できます。このリストには、リソースに適用可能なすべてのリソース設定が表示されます。プレビュー ステータスのリソース設定は、その使用を明示的に許可されている方のみ利用できます。

gcloud

リソースで使用可能な設定すべてのリストを取得するには、次の gcloud resource-settings list コマンドを使用します。

gcloud resource-settings list --RESOURCE_ID

ここで、RESOURCE_ID は、使用可能なリソース設定を検索するフォルダ、プロジェクト、または組織の ID です。例: --project=7890123456

API

リソースで使用できる設定すべてのリストを取得するには、次のいずれかの settings.list メソッドを使用します。メソッドは、設定をリスト出力するリソースのタイプに対応するものを使用します。

curl -X GET -H "Content-Type: application/json" -H \
  "Authorization: Bearer $ACCESS_TOKEN" \
  https://resourcesettings.googleapis.com/v1/RESOURCE_ID/settings

以下を置き換えます。

  • ACCESS_TOKEN: OAuth 2.0 アクセス トークン。

  • RESOURCE_ID: 使用可能なリソース設定を検索するフォルダ、プロジェクト、または組織の ID。例: projects/7890123456

レスポンスの例

folders/4567890123 のリスト リクエストに対するレスポンスは次のようになります。

{
  "settings" : [
    {
      "name": "folders/4567890123/settings/net-preferredDnsServers",
      "metadata":  {
        "displayName": "Preferred DNS Servers",
        "description": "The DNS servers to be used by VMs associated with this resource.",
        "read_only": false,
        "data_type" : "STRING_SET",
        "default_value" : {
          "string_set_value" : {
            "values" : [ "8.8.8.8" ],
          }
        }
      }
    },
    {
      "name": "folders/4567890123/settings/text-defaultTextColor",
      "metadata":  {
        "displayName": "Default Text Color",
        "description": "The default text color for this resource.",
        "read_only": false,
        "data_type" : "STRING",
        "default_value" : {
          "string_value" : "black"
        }
      }
    },
    ...
  ]
}

name フィールドは、リソース設定の短縮名です。この設定に関連する API リクエストと gcloud CLI リクエストで使用します。

ローカル設定値の変更

特定リソース設定のローカル設定値は変更できます。ローカルの設定値を設定すると、継承された有効な値の設定はオーバーライドされます。ローカル設定値の設定を解除すると、祖先リソースに適用されているローカル設定値は継承され、これが有効な値になります。

gcloud

リソースのリソース設定に対するローカル設定値を変更するには、次の gcloud resource-settings set-value コマンドを使用します。

gcloud resource-settings set-value --value-file=FILE_PATH

FILE_PATH は、リソース設定を含む YAML ファイルのパスか、JSON ファイルのパスに置き換えます。

JSON ファイルの例

{
  "localValue" : {
    "stringSetValue": {
      "values": [
        "8.8.8.8",
        "8.8.4.4",
      ]
    }
  },
  "name": "RESOURCE_ID/settings/SETTING_NAME"
}

以下を置き換えます。

  • RESOURCE_ID: ローカル リソース設定を更新するフォルダ、プロジェクト、または組織の ID。例: projects/7890123456

  • SETTING_NAME: 更新するリソースの設定の短縮名。

リソースのローカル設定値の設定を解除するには、gcloud resource-settings unset-value コマンドを使用します。

gcloud resource-settings unset-value SETTING_NAME \
  --RESOURCE_ID

以下を置き換えます。

  • SETTING_NAME: ローカル値の設定を解除するリソース設定の短縮名。

  • RESOURCE_ID: 使用可能なリソース設定を検索するフォルダ、プロジェクト、または組織の ID。例: projects/7890123456

API

リソースのリソース設定に対するローカル設定値を変更するには、settings.patch メソッドを使用します。メソッドは、設定を更新するリソースのタイプに対応するものを使用します。

curl -X PATCH -H "Content-Type: application/json" \
  -H "Authorization: Bearer $ACCESS_TOKEN" -d \
  '{
    "localValue": {
      "stringSetValue": {
        "values": [ "8.8.8.8", "8.8.4.4" ]
      }
    }
  }
  ' https://resourcesettings.googleapis.com/v1/RESOURCE_ID/settings/net-preferredDnsServers

以下を置き換えます。

  • ACCESS_TOKEN: OAuth 2.0 アクセス トークン。

  • RESOURCE_ID: 使用可能なリソース設定を検索するフォルダ、プロジェクト、または組織の ID。例: projects/7890123456

JSON ファイルにローカル値を含めずにこのリクエストを行った場合は、ローカル設定値が未設定となり、リソースには親の値の設定が継承されるか、Google が管理するデフォルト値が使用されます。

リクエストが成功すると、この設定に対して作成されたローカル値と、後続の更新リクエストに含める必要がある etag フィールドを含むレスポンスが返されます。

{
  "name": "folders/4567890123/settings/net-preferredDnsServers",
  "localValue": {
    "stringSetValue": {
      "values": [ "8.8.8.8", "8.8.4.4" ]
    }
  }
  "etag": "O2VWGxZU01VnAfRU4Mu97w==",
}

ローカルまたは有効な値の設定を表示する

特定のリソースにあるリソース設定のローカル値や有効な値を表示できます。

gcloud

特定のリソースにあるリソース設定のローカル値を表示するには、次のように gcloud resource-settings describe コマンドを使用します。

gcloud resource-settings describe SETTING_NAME \
  --RESOURCE_ID

以下を置き換えます。

  • SETTING_NAME: ローカル値または有効な値を検索するリソース設定の短縮名。

  • RESOURCE_ID: 使用可能なリソース設定を検索するフォルダ、プロジェクト、または組織の ID。例: --project=7890123456

--effective フラグを追加すると、このリソースに対して代わりにそれが評価され、有効な値が返されます。

API

特定のリソースにあるリソース設定のローカル値または有効な値を表示するには、settings.get メソッドを使用します。メソッドは、設定をリスト出力するリソースのタイプに対応するものを使用します。

curl -X GET -H "Content-Type: application/json" -H \
  "Authorization: Bearer $ACCESS_TOKEN" \
  https://resourcesettings.googleapis.com/v1/RESOURCE_ID \
  /settings/SETTING_NAME?view=VIEW_PARAMETER

以下を置き換えます。

  • ACCESS_TOKEN: OAuth 2.0 アクセス トークン。

  • RESOURCE_ID: 使用可能なリソース設定を検索するフォルダ、プロジェクト、または組織の ID。例: projects/7890123456

  • SETTING_NAME: 値を取得するリソース設定の短縮名。

  • VIEW_PARAMETER: SETTING_VIEW_LOCAL_VALUE にするとローカル設定値が返され、SETTING_VIEW_EFFECTIVE_VALUE にするとこのリソースの有効な値が返されます。

レスポンスの例

folders/4567890123 の取得リクエストに対するレスポンスは次のようになります。

{
  "name": "folders/4567890123/settings/net-preferredDnsServers",
  "value": {
    "stringSetValue": {
      "values": [ "8.8.8.8", "8.8.4.4" ]
    }
  }
  "etag": "O2VWGxZU01VnAfRU4Mu97w=="
}

継承

特定のリソースで有効なリソース設定は、継承に基づいて評価されます。ローカルに値を設定することで、リソースから継承された値をオーバーライドできます。これは、そのリソースの子が継承する設定値にも影響します。リソース設定の継承の詳細については、効果的な設定値をご覧ください。

有効な値を取得する

特定のリソースにある設定の有効な値は、API や gcloud CLI を使用して取得できます。詳細については、ローカルまたは有効な値の設定の表示をご覧ください。次の例では、組織の優先 DNS サーバー リソースの設定に、その組織内のフォルダ、そのフォルダ内のサブフォルダが設定されているものとします。

これらのリソースの有効な値は、それぞれ次のように評価されます。

  • organizations/111 にはローカル値がなく、継承する親リソースがないため、Google 管理のデフォルトである 8.8.8.8 が使用されます。

    • リソースで有効な値を取得するために describe メソッドを使用して Google が管理するデフォルトを使用する場合、その情報がレスポンスに含まれます。次に例を示します。
    {
      "name": "organizations/111/settings/net-preferredDnsServers",
      "effectiveValue": {
        "stringSetValue": {
          "values": [ "8.8.8.8" ] # Google-managed default
        }
      }
    }
    
  • folders/222 ではローカル値が 8.8.4.4 に設定されているため、親リソースからは継承されません。

    • describe メソッドを使用してリソースの有効な値を取得し、それがローカルに設定された値の場合、その情報はレスポンスに含まれます。次に例を示します。
    {
      "name": "folders/222/settings/net-preferredDnsServers",
      "effectiveValue": {
        "stringSetValue": {
          "values": [ "8.8.4.4" ] # set on folders/222
        }
      }
    }
    
  • folders/333 にはローカル値がありませんが、親リソースには存在します。ローカル設定の値が folders/222 から継承され、8.8.4.4 と評価されます。

    • describe メソッドを使用してリソースの有効値を取得し、その値が親リソースから継承されたものである場合、その情報はレスポンスに含まれます。次に例を示します。
    {
      "name": "folders/333/settings/net-preferredDnsServers",
      "effectiveValue": {
        "stringSetValue": {
          "values": [ "8.8.4.4" ] # inherited from folders/222
        }
      }
    }
    

継承された値をオーバーライドする

優先 DNS サーバー設定の folders/333 のローカル設定値を変更すると、有効な値が変更されます。たとえば、patch メソッドを使用して、folders/333 のローカル設定値を 192.168.1.1 に更新します。詳しい手順については、ローカル設定値を変更するをご覧ください。

更新された folders/333 リソースで describe メソッドを使用すると、現時点での有効な値は、192.168.1.1 になることが確認できます。

{
  "name": "folders/333/settings/net-preferredDnsServers",
  "effectiveValue": {
    "stringSetValue": {
      "values": [ "192.168.1.1" ] # set on folders/333
    }
  }
}

継承値に戻す

リソースが親からローカル値を継承するような動作を元に戻すには、クエリにローカル値を設定していない API patch メソッドを使用するか、gcloud CLI の unset-value コマンドを使用します。詳しい手順については、ローカル設定値を変更するをご覧ください。

たとえば、folders/333 でローカル値の設定を解除すると、最も近い親リソース folders/222 から有効な値が再度継承されます。更新された folders/333 リソースで describe メソッドを使用すると、現時点での有効な値は、8.8.4.4 になることが確認できます。

{
  "name": "folders/333/settings/net-preferredDnsServers",
  "effectiveValue": {
    "stringSetValue": {
      "values": [ "8.8.4.4" ] # inherited from folders/222
    }
  }
}