turbot/steampipe-mod-terraform-gcp-compliance

Control: Ensure 'Block Project-wide SSH keys' is enabled for VM instances

Description

It is recommended to use instance specific SSH key(s) instead of using common/shared project-wide SSH key(s) to access instances.

Usage

Run the control in your terminal:

powerpipe control run terraform_gcp_compliance.control.compute_instance_block_project_wide_ssh_enabled

Snapshot and share results via Turbot Pipes:

powerpipe login
powerpipe control run terraform_gcp_compliance.control.compute_instance_block_project_wide_ssh_enabled --share

SQL

This control uses a named query:

select
address as resource,
case
when ((attributes_std ->> 'source_instance_template') is not null and (attributes_std ->> 'metadata') is null) then 'skip'
when ((attributes_std ->> 'source_instance_template') is not null and (attributes_std -> 'metadata' ->> 'block-project-ssh-keys') is null) then 'skip'
when ((attributes_std ->> 'source_instance_template') is null and (attributes_std ->> 'metadata') is null) then 'skip'
when ((attributes_std ->> 'source_instance_template') is null and (attributes_std -> 'metadata' ->> 'block-project-ssh-keys') is null) then 'skip'
when (attributes_std -> 'metadata' ->> 'block-project-ssh-keys')::bool then 'ok'
else 'alarm'
end status,
split_part(address, '.', 2) || case
when ((attributes_std ->> 'source_instance_template') is not null and (attributes_std ->> 'metadata') is null) then ' underlying source template is unknown'
when ((attributes_std ->> 'source_instance_template') is not null and (attributes_std -> 'metadata' ->> 'block-project-ssh-keys') is null) then ' underlying source template is unknown'
when ((attributes_std ->> 'source_instance_template') is null and (attributes_std ->> 'metadata') is null) then ' block project-wide SSH keys not set'
when ((attributes_std ->> 'source_instance_template') is null and (attributes_std -> 'metadata' ->> 'block-project-ssh-keys') is null) then ' block project-wide SSH keys not set'
when (attributes_std -> 'metadata' ->> 'block-project-ssh-keys')::bool then ' block project-wide SSH keys enabled'
else ' block project-wide SSH keys disabled'
end || '.' reason
, path || ':' || start_line
from
terraform_resource
where
type in ('google_compute_instance', 'google_compute_instance_template', 'google_compute_instance_from_template');

Tags