blob: e1f33c0afe19461d892d90d8c20cc841b555c635 [file] [log] [blame]
---
# ----------------------------------------------------------------------------
#
# *** AUTO GENERATED CODE *** Type: MMv1 ***
#
# ----------------------------------------------------------------------------
#
# This file is automatically generated by Magic Modules and manual
# changes will be clobbered when the file is regenerated.
#
# Please read more about how to change this file in
# .github/CONTRIBUTING.md.
#
# ----------------------------------------------------------------------------
subcategory: "Organization Policy"
description: |-
Custom constraints are created by administrators to provide more granular and customizable control over the specific fields that are restricted by your organization policies.
---
# google\_org\_policy\_custom\_constraint
Custom constraints are created by administrators to provide more granular and customizable control over the specific fields that are restricted by your organization policies.
To get more information about CustomConstraint, see:
* [API documentation](https://cloud.google.com/resource-manager/docs/reference/orgpolicy/rest/v2/organizations.constraints)
* How-to Guides
* [Official Documentation](https://cloud.google.com/resource-manager/docs/organization-policy/creating-managing-custom-constraints)
* [Supported Services](https://cloud.google.com/resource-manager/docs/organization-policy/custom-constraint-supported-services)
## Example Usage - Org Policy Custom Constraint Basic
```hcl
resource "google_org_policy_custom_constraint" "constraint" {
name = "custom.disableGkeAutoUpgrade"
parent = "organizations/123456789"
action_type = "ALLOW"
condition = "resource.management.autoUpgrade == false"
method_types = ["CREATE", "UPDATE"]
resource_types = ["container.googleapis.com/NodePool"]
}
```
## Example Usage - Org Policy Custom Constraint Full
```hcl
resource "google_org_policy_custom_constraint" "constraint" {
name = "custom.disableGkeAutoUpgrade"
parent = "organizations/123456789"
display_name = "Disable GKE auto upgrade"
description = "Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced."
action_type = "ALLOW"
condition = "resource.management.autoUpgrade == false"
method_types = ["CREATE", "UPDATE"]
resource_types = ["container.googleapis.com/NodePool"]
}
resource "google_org_policy_policy" "bool" {
name = "organizations/123456789/policies/${google_org_policy_custom_constraint.constraint.name}"
parent = "organizations/123456789"
spec {
rules {
enforce = "TRUE"
}
}
}
```
## Argument Reference
The following arguments are supported:
* `name` -
(Required)
Immutable. The name of the custom constraint. This is unique within the organization.
* `condition` -
(Required)
A CEL condition that refers to a supported service resource, for example `resource.management.autoUpgrade == false`. For details about CEL usage, see [Common Expression Language](https://cloud.google.com/resource-manager/docs/organization-policy/creating-managing-custom-constraints#common_expression_language).
* `action_type` -
(Required)
The action to take if the condition is met.
Possible values are: `ALLOW`, `DENY`.
* `method_types` -
(Required)
A list of RESTful methods for which to enforce the constraint. Can be `CREATE`, `UPDATE`, or both. Not all Google Cloud services support both methods. To see supported methods for each service, find the service in [Supported services](https://cloud.google.com/resource-manager/docs/organization-policy/custom-constraint-supported-services).
* `resource_types` -
(Required)
Immutable. The fully qualified name of the Google Cloud REST resource containing the object and field you want to restrict. For example, `container.googleapis.com/NodePool`.
* `parent` -
(Required)
The parent of the resource, an organization. Format should be `organizations/{organization_id}`.
- - -
* `display_name` -
(Optional)
A human-friendly name for the constraint.
* `description` -
(Optional)
A human-friendly description of the constraint to display as an error message when the policy is violated.
## Attributes Reference
In addition to the arguments listed above, the following computed attributes are exported:
* `id` - an identifier for the resource with format `{{parent}}/customConstraints/{{name}}`
* `update_time` -
Output only. The timestamp representing when the constraint was last updated.
## Timeouts
This resource provides the following
[Timeouts](https://developer.hashicorp.com/terraform/plugin/sdkv2/resources/retries-and-customizable-timeouts) configuration options:
- `create` - Default is 20 minutes.
- `update` - Default is 20 minutes.
- `delete` - Default is 20 minutes.
## Import
CustomConstraint can be imported using any of these accepted formats:
* `{{parent}}/customConstraints/{{name}}`
In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import CustomConstraint using one of the formats above. For example:
```tf
import {
id = "{{parent}}/customConstraints/{{name}}"
to = google_org_policy_custom_constraint.default
}
```
When using the [`terraform import` command](https://developer.hashicorp.com/terraform/cli/commands/import), CustomConstraint can be imported using one of the formats above. For example:
```
$ terraform import google_org_policy_custom_constraint.default {{parent}}/customConstraints/{{name}}
```