Control: 41 RDS for SQL Server DB instances should be encrypted in transit
Description
This control checks whether a connection to an Amazon RDS for Microsoft SQL Server DB instance is encrypted in transit. The control fails if the rds.force_ssl parameter of the parameter group associated with the DB instance is set to 0 (off).
Data in transit refers to data that moves from one location to another, such as between nodes in a DB cluster or between a DB cluster and a client application. Data can move across the internet or within a private network. Encrypting data in transit reduces the risk of unauthorized users eavesdropping on network traffic.
Remediation
For information about enabling SSL/TLS for connections to Amazon RDS DB instances running Microsoft SQL Server, see Using SSL with a Microsoft SQL Server DB Instance in the Amazon Relational Database Service User Guide.
Usage
Run the control in your terminal:
powerpipe control run aws_compliance.control.foundational_security_rds_41Snapshot and share results via Turbot Pipes:
powerpipe loginpowerpipe control run aws_compliance.control.foundational_security_rds_41 --shareSQL
This control uses a named query:
with instance_pg as (  select    g ->> 'DBParameterGroupName' as pg_name,    i.engine,    i.title,    i.arn,    i.tags,    i.region,    i.account_id,    i._ctx  from    aws_rds_db_instance as i,    jsonb_array_elements(db_parameter_groups) as g), pg_with_ssl_enabled as (  select    g.name  from    instance_pg as i,    aws_rds_db_parameter_group as g,    jsonb_array_elements(parameters) as p  where    i.pg_name = g.name    and g.account_id = i.account_id    and g.region = i.region    and p ->> 'ParameterName' = 'rds.force_ssl'    and p ->> 'ParameterValue' = '1')select  i.arn as resource,  i.engine,  case    when not i.engine like 'sqlserver%' then 'skip'    when p.name is not null then 'ok'    else 'alarm'  end as status,  case    when not i.engine like 'sqlserver%'  then title || ' has ' || engine || ' engine type.'    when p.name is not null then title || ' encryption in transit enabled.'    else title || ' encryption in transit disabled.'  end as reason    , region, account_idfrom  instance_pg as i  left join pg_with_ssl_enabled as p on p.name = i.pg_name;