gcp.dns-managed-zone
GCP resource: https://cloud.google.com/dns/docs/reference/v1beta2/managedZones
Filters
marked-for-op
Filter resources for label specified future action
Filters resources by a ‘custodian_status’ label which specifies a future date for an action.
The filter parses the label values looking for an ‘op@date’ string. The date is parsed and compared to do today’s date, the filter succeeds if today’s date is gte to the target date.
The optional ‘skew’ parameter provides for incrementing today’s date a number of days into the future. An example use case might be sending a final notice email a few days before terminating an instance, or snapshotting a volume prior to deletion.
The optional ‘skew_hours’ parameter provides for incrementing the current time a number of hours into the future.
Optionally, the ‘tz’ parameter can get used to specify the timezone in which to interpret the clock (default value is ‘utc’)
- example:
policies:
- name: vm-stop-marked
resource: gcp.instance
filters:
- type: marked-for-op
# The default label used is custodian_status
# but that is configurable
label: custodian_status
op: stop
# Another optional label is skew
tz: utc
properties:
label:
type: string
op:
type: string
skew:
minimum: 0
type: number
skew_hours:
minimum: 0
type: number
type:
enum:
- marked-for-op
tz:
type: string
required:
- type
metrics
Supports metrics filters on resources.
All resources that have cloud watch metrics are supported.
Docs on cloud watch metrics
Google Supported Metrics https://cloud.google.com/monitoring/api/metrics_gcp
Custom Metrics https://cloud.google.com/monitoring/api/v3/metric-model#intro-custom-metrics
- name: firewall-hit-count
resource: gcp.firewall
filters:
- type: metrics
name: firewallinsights.googleapis.com/subnet/firewall_hit_count
aligner: ALIGN_COUNT
days: 14
value: 1
op: greater-than
The period-start key allows you to align the metric window in two ways.
By default, using auto, the window is computed relative to the current time.
Alternatively, setting it to start-of-day aligns the window to full UTC calendar days,
beginning at 00:00:00 UTC and ending at current day 00:00:00 UTC.
- name: instance-low-cpu-last-full-day
resource: gcp.instance
filters:
- type: metrics
name: compute.googleapis.com/instance/cpu/utilization
aligner: ALIGN_MEAN
days: 1
value: 0.05
op: less-than
period-start: start-of-day
properties:
aligner:
enum:
- ALIGN_NONE
- ALIGN_DELTA
- ALIGN_RATE
- ALIGN_INTERPOLATE
- ALIGN_MIN
- ALIGN_MAX
- ALIGN_MEAN
- ALIGN_COUNT
- ALIGN_SUM
- REDUCE_COUNT_FALSE
- ALIGN_STDDEV
- ALIGN_COUNT_TRUE
- ALIGN_COUNT_FALSE
- ALIGN_FRACTION_TRUE
- ALIGN_PERCENTILE_99
- ALIGN_PERCENTILE_95
- ALIGN_PERCENTILE_50
- ALIGN_PERCENTILE_05
- ALIGN_PERCENT_CHANG
type: string
days:
type: number
filter:
type: string
group-by-fields:
items:
type: string
type: array
metric-key:
type: string
missing-value:
type: number
name:
type: string
op:
enum:
- eq
- equal
- ne
- not-equal
- gt
- greater-than
- ge
- gte
- le
- lte
- lt
- less-than
- glob
- regex
- regex-case
- in
- ni
- not-in
- contains
- difference
- intersect
- mod
type: string
period-start:
enum:
- auto
- start-of-day
type: string
reducer:
enum:
- REDUCE_NONE
- REDUCE_MEAN
- REDUCE_MIN
- REDUCE_MAX
- REDUCE_MEAN
- REDUCE_SUM
- REDUCE_STDDEV
- REDUCE_COUNT
- REDUCE_COUNT_TRUE
- REDUCE_COUNT_FALSE
- REDUCE_FRACTION_TRUE
- REDUCE_PERCENTILE_99
- REDUCE_PERCENTILE_95
- REDUCE_PERCENTILE_50
- REDUCE_PERCENTILE_05
type: string
type:
enum:
- metrics
value:
type: number
required:
- value
- name
- op
Permissions - monitoring.timeSeries.list
Actions
delete
Action to delete DNS managed zones
It is recommended to use a filter to avoid unwanted deletion of DNS managed zones
- example:
policies:
- name: gcp-delete-testing-dns-managed-zones
resource: gcp.dns-managed-zone
filters:
- type: value
key: name
op: eq
value: 'test-custodian.com'
actions:
- type: delete
properties:
type:
enum:
- delete
required:
- type
Permissions - dns.managedZones.delete
enable-dnssec
Enable DNSSEC on a public DNS managed zone.
Only applies to zones with visibility: public. Zones that already have
DNSSEC enabled (dnssecConfig.state == 'on') are skipped automatically.
- example:
policies:
- name: gcp-dns-enable-dnssec
resource: gcp.dns-managed-zone
filters:
- type: value
key: visibility
op: eq
value: public
- type: value
key: dnssecConfig.state
op: ne
value: 'on'
actions:
- type: enable-dnssec
properties:
type:
enum:
- enable-dnssec
required:
- type
Permissions - dns.managedZones.update
mark-for-op
Label resources for future action.
The optional ‘tz’ parameter can be used to adjust the clock to align with a given timezone. The default value is ‘utc’.
If neither ‘days’ nor ‘hours’ is specified, Cloud Custodian will default to marking the resource for action 4 days in the future.
- example:
policies:
- name: vm-mark-for-stop
resource: gcp.instance
filters:
- type: value
key: name
value: instance-to-stop-in-four-days
actions:
- type: mark-for-op
op: stop
days: 2
properties:
days:
exclusiveMinimum: false
minimum: 0
type: number
hours:
exclusiveMinimum: false
minimum: 0
type: number
label:
type: string
msg:
type: string
op:
type: string
type:
enum:
- mark-for-op
tz:
type: string
required:
- type
Permissions - dns.managedZones.update
set-dnssec-key-specs
Set the DNSSEC default key specifications on a public DNS managed zone.
Configures the defaultKeySpecs (KSK and ZSK) used when DNSSEC is
enabled. This action must be applied while DNSSEC is still off —
key specs become immutable once DNSSEC is turned on. Use the
enable-dnssec action afterwards to activate DNSSEC.
Valid keyType values: keySigning, zoneSigning
Valid algorithm values: rsasha1, rsasha256, rsasha512,
ecdsap256sha256, ecdsap384sha384
- example:
policies:
- name: gcp-dns-set-dnssec-key-specs
resource: gcp.dns-managed-zone
filters:
- type: value
key: visibility
op: eq
value: public
- type: value
key: dnssecConfig.state
op: ne
value: 'on'
actions:
- type: set-dnssec-key-specs
defaultKeySpecs:
- keyType: keySigning
algorithm: rsasha256
keyLength: 2048
- keyType: zoneSigning
algorithm: rsasha256
keyLength: 1024
properties:
defaultKeySpecs:
items:
additionalProperties: false
properties:
algorithm:
enum:
- rsasha1
- rsasha256
- rsasha512
- ecdsap256sha256
- ecdsap384sha384
type: string
keyLength:
type: integer
keyType:
enum:
- keySigning
- zoneSigning
type: string
required:
- keyType
- algorithm
- keyLength
type: object
minItems: 1
type: array
type:
enum:
- set-dnssec-key-specs
required:
- defaultKeySpecs
- type
Permissions - dns.managedZones.update
set-labels
Set labels to GCP resources
- example:
This policy will label all existing resource groups with a value such as environment
policies:
- name: gcp-add-multiple-labels
resource: gcp.instance
description: |
Label all existing instances with multiple labels
actions:
- type: set-labels
labels:
environment: test
env_type: customer
- name: gcp-add-label-from-resource-attr
resource: gcp.instance
description: |
Label all existing instances with label taken from resource attribute
actions:
- type: set-labels
labels:
environment:
type: resource
key: name
default-value: name_not_found
- name: gcp-remove-label
resource: gcp.instance
description: |
Remove label from all instances
actions:
- type: set-labels
remove: [env]
properties:
labels:
additionalProperties:
oneOf:
- oneOf:
- additionalProperties: false
properties:
default-value:
type: string
key:
type: string
type:
enum:
- resource
type: string
required:
- type
- key
type: object
- type: string
type: object
remove:
items:
type: string
type: array
type:
enum:
- set-labels
required:
- type
Permissions - dns.managedZones.update