Turbot Guardrails Hub 
Hub
  • Mods
  • Policy Packs
  • Docs
  • Home
ModsPolicy PacksDocsHome
Policy Packs
GCP CIS v2.0.0 - Section 1 - Identity and Access Management
  • GCP > Dataproc > Cluster > Approved
  • GCP > Dataproc > Cluster > Approved > Custom
  • GCP > IAM > API Key > Active
  • GCP > IAM > API Key > Active > Age
  • GCP > IAM > API Key > Approved
  • GCP > IAM > API Key > Approved > Custom
  • GCP > IAM > Project User > Approved
  • GCP > IAM > Project User > Approved > Custom
  • GCP > IAM > Service Account > Approved
  • GCP > IAM > Service Account > Approved > Custom
  • GCP > IAM > Service Account Key > Active
  • GCP > IAM > Service Account Key > Active > Age
  • GCP > IAM > Service Account Key > Approved
  • GCP > IAM > Service Account Key > Approved > Custom
  • GCP > KMS > Crypto Key > Approved
  • GCP > KMS > Crypto Key > Approved > Custom
  • GCP > KMS > Crypto Key > Policy > Trusted Access
  • GCP > KMS > Crypto Key > Policy > Trusted Access > All Authenticated
  • GCP > KMS > Crypto Key > Policy > Trusted Access > All Users
Get Involved
Discuss on Slack

Policy Setting: GCP > KMS > Crypto Key > Approved > Custom

Policies

This policy setting is dependent on the following policy types:

  • GCP > KMS > Crypto Key > Approved > Custom

Source

resource "turbot_policy_setting" "gcp_kms_crypto_key_approved_custom" {
resource = turbot_policy_pack.main.id
type = "tmod:@turbot/gcp-kms#/policy/types/cryptoKeyApprovedCustom"
note = "GCP CIS v2.0.0 - Control: 1.10"
template_input = <<-EOT
{
cryptoKey {
rotationPeriod: get(path: "rotationPeriod")
keyState: get(path: "primary.state")
}
}
EOT
template = <<-EOT
{%- if $.cryptoKey.keyState == "DISABLED" or $.cryptoKey.keyState == "DESTROY_SCHEDULED" or $.cryptoKey.keyState == "DESTROYED" -%}
{%- set data = {
"title": "Rotation",
"result": "Skip",
"message": "Crypto key is not ENABLED"
} -%}
{%- else -%}
{%- set rotationPeriodWithoutSeconds = $.cryptoKey.rotationPeriod.slice(0, -1) -%}
{%- set rotationPeriodInDays = rotationPeriodWithoutSeconds / 86400 -%}
{%- if rotationPeriodInDays <= 90 -%}
{%- set data = {
"title": "Rotation",
"result": "Approved",
"message": "Crypto key is rotated every 90 days"
} -%}
{%- elif rotationPeriodInDays > 90 -%}
{%- set data = {
"title": "Rotation",
"result": "Not approved",
"message": "Crypto key is not rotated every 90 days"
} -%}
{%- else -%}
{%- set data = {
"title": "Rotation",
"result": "Skip",
"message": "No data for crypto key yet"
} -%}
{%- endif %}
{%- endif -%}
{{ data | json }}
EOT
}
Guardrails
Guardrails Hub
  • Hub
  • Docs
  • Blog
  • Changelog
Products
  • GuardrailsGuardrails
  • PipesPipes
  • SteampipeSteampipe
  • PowerpipePowerpipe
  • FlowpipeFlowpipe
  • TailpipeTailpipe
Turbot
  • Home
  • About us
  • We're hiring!
  • Contact us
Community

Our community of practitioners love to discuss cloud governance & security.

Slack logoJoin us on Slack →

System StatusLegalSecurity
Terms of UseSecurityPrivacy