Skip to content

Commit 588cfca

Browse files
Add secrets_discovery_target field in google_data_loss_prevention_discovery_config, as well as fields to support single-resource mode for big_query_target and cloud_sql_target (#10798) (#18324)
[upstream:02cf34c5dd30da27f4482b65a616c9eac823ec18] Signed-off-by: Modular Magician <magic-modules@google.com>
1 parent e459f92 commit 588cfca

4 files changed

+570
-468
lines changed

google/services/datalossprevention/resource_data_loss_prevention_discovery_config.go

Lines changed: 256 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,26 @@ func ResourceDataLossPreventionDiscoveryConfig() *schema.Resource {
395395
Schema: map[string]*schema.Schema{},
396396
},
397397
},
398+
"table_reference": {
399+
Type: schema.TypeList,
400+
Optional: true,
401+
Description: `The table to scan. Discovery configurations including this can only include one DiscoveryTarget (the DiscoveryTarget with this TableReference).`,
402+
MaxItems: 1,
403+
Elem: &schema.Resource{
404+
Schema: map[string]*schema.Schema{
405+
"dataset_id": {
406+
Type: schema.TypeString,
407+
Required: true,
408+
Description: `Dataset ID of the table.`,
409+
},
410+
"table_id": {
411+
Type: schema.TypeString,
412+
Required: true,
413+
Description: `Name of the table.`,
414+
},
415+
},
416+
},
417+
},
398418
"tables": {
399419
Type: schema.TypeList,
400420
Optional: true,
@@ -508,6 +528,36 @@ func ResourceDataLossPreventionDiscoveryConfig() *schema.Resource {
508528
},
509529
},
510530
},
531+
"database_resource_reference": {
532+
Type: schema.TypeList,
533+
Optional: true,
534+
Description: `The database resource to scan. Targets including this can only include one target (the target with this database resource reference).`,
535+
MaxItems: 1,
536+
Elem: &schema.Resource{
537+
Schema: map[string]*schema.Schema{
538+
"database": {
539+
Type: schema.TypeString,
540+
Required: true,
541+
Description: `Required. Name of a database within the instance.`,
542+
},
543+
"database_resource": {
544+
Type: schema.TypeString,
545+
Required: true,
546+
Description: `Required. Name of a database resource, for example, a table within the database.`,
547+
},
548+
"instance": {
549+
Type: schema.TypeString,
550+
Required: true,
551+
Description: `Required. The instance where this resource is located. For example: Cloud SQL instance ID.`,
552+
},
553+
"project_id": {
554+
Type: schema.TypeString,
555+
Required: true,
556+
Description: `Required. If within a project-level config, then this must match the config's project ID.`,
557+
},
558+
},
559+
},
560+
},
511561
"others": {
512562
Type: schema.TypeList,
513563
Optional: true,
@@ -601,6 +651,15 @@ func ResourceDataLossPreventionDiscoveryConfig() *schema.Resource {
601651
},
602652
},
603653
},
654+
"secrets_target": {
655+
Type: schema.TypeList,
656+
Optional: true,
657+
Description: `Discovery target that looks for credentials and secrets stored in cloud resource metadata and reports them as vulnerabilities to Security Command Center. Only one target of this type is allowed.`,
658+
MaxItems: 1,
659+
Elem: &schema.Resource{
660+
Schema: map[string]*schema.Schema{},
661+
},
662+
},
604663
},
605664
},
606665
},
@@ -1265,6 +1324,7 @@ func flattenDataLossPreventionDiscoveryConfigTargets(v interface{}, d *schema.Re
12651324
transformed = append(transformed, map[string]interface{}{
12661325
"big_query_target": flattenDataLossPreventionDiscoveryConfigTargetsBigQueryTarget(original["bigQueryTarget"], d, config),
12671326
"cloud_sql_target": flattenDataLossPreventionDiscoveryConfigTargetsCloudSqlTarget(original["cloudSqlTarget"], d, config),
1327+
"secrets_target": flattenDataLossPreventionDiscoveryConfigTargetsSecretsTarget(original["secretsTarget"], d, config),
12681328
})
12691329
}
12701330
return transformed
@@ -1301,6 +1361,8 @@ func flattenDataLossPreventionDiscoveryConfigTargetsBigQueryTargetFilter(v inter
13011361
flattenDataLossPreventionDiscoveryConfigTargetsBigQueryTargetFilterTables(original["tables"], d, config)
13021362
transformed["other_tables"] =
13031363
flattenDataLossPreventionDiscoveryConfigTargetsBigQueryTargetFilterOtherTables(original["otherTables"], d, config)
1364+
transformed["table_reference"] =
1365+
flattenDataLossPreventionDiscoveryConfigTargetsBigQueryTargetFilterTableReference(original["tableReference"], d, config)
13041366
return []interface{}{transformed}
13051367
}
13061368
func flattenDataLossPreventionDiscoveryConfigTargetsBigQueryTargetFilterTables(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
@@ -1369,6 +1431,29 @@ func flattenDataLossPreventionDiscoveryConfigTargetsBigQueryTargetFilterOtherTab
13691431
return []interface{}{transformed}
13701432
}
13711433

1434+
func flattenDataLossPreventionDiscoveryConfigTargetsBigQueryTargetFilterTableReference(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
1435+
if v == nil {
1436+
return nil
1437+
}
1438+
original := v.(map[string]interface{})
1439+
if len(original) == 0 {
1440+
return nil
1441+
}
1442+
transformed := make(map[string]interface{})
1443+
transformed["dataset_id"] =
1444+
flattenDataLossPreventionDiscoveryConfigTargetsBigQueryTargetFilterTableReferenceDatasetId(original["datasetId"], d, config)
1445+
transformed["table_id"] =
1446+
flattenDataLossPreventionDiscoveryConfigTargetsBigQueryTargetFilterTableReferenceTableId(original["tableId"], d, config)
1447+
return []interface{}{transformed}
1448+
}
1449+
func flattenDataLossPreventionDiscoveryConfigTargetsBigQueryTargetFilterTableReferenceDatasetId(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
1450+
return v
1451+
}
1452+
1453+
func flattenDataLossPreventionDiscoveryConfigTargetsBigQueryTargetFilterTableReferenceTableId(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
1454+
return v
1455+
}
1456+
13721457
func flattenDataLossPreventionDiscoveryConfigTargetsBigQueryTargetConditions(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
13731458
if v == nil {
13741459
return nil
@@ -1550,6 +1635,8 @@ func flattenDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilter(v inter
15501635
flattenDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterCollection(original["collection"], d, config)
15511636
transformed["others"] =
15521637
flattenDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterOthers(original["others"], d, config)
1638+
transformed["database_resource_reference"] =
1639+
flattenDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterDatabaseResourceReference(original["databaseResourceReference"], d, config)
15531640
return []interface{}{transformed}
15541641
}
15551642
func flattenDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterCollection(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
@@ -1623,6 +1710,41 @@ func flattenDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterOthers(v
16231710
return []interface{}{transformed}
16241711
}
16251712

1713+
func flattenDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterDatabaseResourceReference(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
1714+
if v == nil {
1715+
return nil
1716+
}
1717+
original := v.(map[string]interface{})
1718+
if len(original) == 0 {
1719+
return nil
1720+
}
1721+
transformed := make(map[string]interface{})
1722+
transformed["project_id"] =
1723+
flattenDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterDatabaseResourceReferenceProjectId(original["projectId"], d, config)
1724+
transformed["instance"] =
1725+
flattenDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterDatabaseResourceReferenceInstance(original["instance"], d, config)
1726+
transformed["database"] =
1727+
flattenDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterDatabaseResourceReferenceDatabase(original["database"], d, config)
1728+
transformed["database_resource"] =
1729+
flattenDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterDatabaseResourceReferenceDatabaseResource(original["databaseResource"], d, config)
1730+
return []interface{}{transformed}
1731+
}
1732+
func flattenDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterDatabaseResourceReferenceProjectId(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
1733+
return v
1734+
}
1735+
1736+
func flattenDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterDatabaseResourceReferenceInstance(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
1737+
return v
1738+
}
1739+
1740+
func flattenDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterDatabaseResourceReferenceDatabase(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
1741+
return v
1742+
}
1743+
1744+
func flattenDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterDatabaseResourceReferenceDatabaseResource(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
1745+
return v
1746+
}
1747+
16261748
func flattenDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetConditions(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
16271749
if v == nil {
16281750
return nil
@@ -1696,6 +1818,14 @@ func flattenDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetDisabled(v int
16961818
return []interface{}{transformed}
16971819
}
16981820

1821+
func flattenDataLossPreventionDiscoveryConfigTargetsSecretsTarget(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
1822+
if v == nil {
1823+
return nil
1824+
}
1825+
transformed := make(map[string]interface{})
1826+
return []interface{}{transformed}
1827+
}
1828+
16991829
func flattenDataLossPreventionDiscoveryConfigErrors(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
17001830
if v == nil {
17011831
return v
@@ -2104,6 +2234,13 @@ func expandDataLossPreventionDiscoveryConfigTargets(v interface{}, d tpgresource
21042234
transformed["cloudSqlTarget"] = transformedCloudSqlTarget
21052235
}
21062236

2237+
transformedSecretsTarget, err := expandDataLossPreventionDiscoveryConfigTargetsSecretsTarget(original["secrets_target"], d, config)
2238+
if err != nil {
2239+
return nil, err
2240+
} else {
2241+
transformed["secretsTarget"] = transformedSecretsTarget
2242+
}
2243+
21072244
req = append(req, transformed)
21082245
}
21092246
return req, nil
@@ -2172,6 +2309,13 @@ func expandDataLossPreventionDiscoveryConfigTargetsBigQueryTargetFilter(v interf
21722309
transformed["otherTables"] = transformedOtherTables
21732310
}
21742311

2312+
transformedTableReference, err := expandDataLossPreventionDiscoveryConfigTargetsBigQueryTargetFilterTableReference(original["table_reference"], d, config)
2313+
if err != nil {
2314+
return nil, err
2315+
} else if val := reflect.ValueOf(transformedTableReference); val.IsValid() && !tpgresource.IsEmptyValue(val) {
2316+
transformed["tableReference"] = transformedTableReference
2317+
}
2318+
21752319
return transformed, nil
21762320
}
21772321

@@ -2276,6 +2420,40 @@ func expandDataLossPreventionDiscoveryConfigTargetsBigQueryTargetFilterOtherTabl
22762420
return transformed, nil
22772421
}
22782422

2423+
func expandDataLossPreventionDiscoveryConfigTargetsBigQueryTargetFilterTableReference(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
2424+
l := v.([]interface{})
2425+
if len(l) == 0 || l[0] == nil {
2426+
return nil, nil
2427+
}
2428+
raw := l[0]
2429+
original := raw.(map[string]interface{})
2430+
transformed := make(map[string]interface{})
2431+
2432+
transformedDatasetId, err := expandDataLossPreventionDiscoveryConfigTargetsBigQueryTargetFilterTableReferenceDatasetId(original["dataset_id"], d, config)
2433+
if err != nil {
2434+
return nil, err
2435+
} else if val := reflect.ValueOf(transformedDatasetId); val.IsValid() && !tpgresource.IsEmptyValue(val) {
2436+
transformed["datasetId"] = transformedDatasetId
2437+
}
2438+
2439+
transformedTableId, err := expandDataLossPreventionDiscoveryConfigTargetsBigQueryTargetFilterTableReferenceTableId(original["table_id"], d, config)
2440+
if err != nil {
2441+
return nil, err
2442+
} else if val := reflect.ValueOf(transformedTableId); val.IsValid() && !tpgresource.IsEmptyValue(val) {
2443+
transformed["tableId"] = transformedTableId
2444+
}
2445+
2446+
return transformed, nil
2447+
}
2448+
2449+
func expandDataLossPreventionDiscoveryConfigTargetsBigQueryTargetFilterTableReferenceDatasetId(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
2450+
return v, nil
2451+
}
2452+
2453+
func expandDataLossPreventionDiscoveryConfigTargetsBigQueryTargetFilterTableReferenceTableId(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
2454+
return v, nil
2455+
}
2456+
22792457
func expandDataLossPreventionDiscoveryConfigTargetsBigQueryTargetConditions(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
22802458
l := v.([]interface{})
22812459
if len(l) == 0 || l[0] == nil {
@@ -2553,6 +2731,13 @@ func expandDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilter(v interf
25532731
transformed["others"] = transformedOthers
25542732
}
25552733

2734+
transformedDatabaseResourceReference, err := expandDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterDatabaseResourceReference(original["database_resource_reference"], d, config)
2735+
if err != nil {
2736+
return nil, err
2737+
} else if val := reflect.ValueOf(transformedDatabaseResourceReference); val.IsValid() && !tpgresource.IsEmptyValue(val) {
2738+
transformed["databaseResourceReference"] = transformedDatabaseResourceReference
2739+
}
2740+
25562741
return transformed, nil
25572742
}
25582743

@@ -2668,6 +2853,62 @@ func expandDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterOthers(v
26682853
return transformed, nil
26692854
}
26702855

2856+
func expandDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterDatabaseResourceReference(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
2857+
l := v.([]interface{})
2858+
if len(l) == 0 || l[0] == nil {
2859+
return nil, nil
2860+
}
2861+
raw := l[0]
2862+
original := raw.(map[string]interface{})
2863+
transformed := make(map[string]interface{})
2864+
2865+
transformedProjectId, err := expandDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterDatabaseResourceReferenceProjectId(original["project_id"], d, config)
2866+
if err != nil {
2867+
return nil, err
2868+
} else if val := reflect.ValueOf(transformedProjectId); val.IsValid() && !tpgresource.IsEmptyValue(val) {
2869+
transformed["projectId"] = transformedProjectId
2870+
}
2871+
2872+
transformedInstance, err := expandDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterDatabaseResourceReferenceInstance(original["instance"], d, config)
2873+
if err != nil {
2874+
return nil, err
2875+
} else if val := reflect.ValueOf(transformedInstance); val.IsValid() && !tpgresource.IsEmptyValue(val) {
2876+
transformed["instance"] = transformedInstance
2877+
}
2878+
2879+
transformedDatabase, err := expandDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterDatabaseResourceReferenceDatabase(original["database"], d, config)
2880+
if err != nil {
2881+
return nil, err
2882+
} else if val := reflect.ValueOf(transformedDatabase); val.IsValid() && !tpgresource.IsEmptyValue(val) {
2883+
transformed["database"] = transformedDatabase
2884+
}
2885+
2886+
transformedDatabaseResource, err := expandDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterDatabaseResourceReferenceDatabaseResource(original["database_resource"], d, config)
2887+
if err != nil {
2888+
return nil, err
2889+
} else if val := reflect.ValueOf(transformedDatabaseResource); val.IsValid() && !tpgresource.IsEmptyValue(val) {
2890+
transformed["databaseResource"] = transformedDatabaseResource
2891+
}
2892+
2893+
return transformed, nil
2894+
}
2895+
2896+
func expandDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterDatabaseResourceReferenceProjectId(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
2897+
return v, nil
2898+
}
2899+
2900+
func expandDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterDatabaseResourceReferenceInstance(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
2901+
return v, nil
2902+
}
2903+
2904+
func expandDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterDatabaseResourceReferenceDatabase(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
2905+
return v, nil
2906+
}
2907+
2908+
func expandDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetFilterDatabaseResourceReferenceDatabaseResource(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
2909+
return v, nil
2910+
}
2911+
26712912
func expandDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetConditions(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
26722913
l := v.([]interface{})
26732914
if len(l) == 0 || l[0] == nil {
@@ -2781,6 +3022,21 @@ func expandDataLossPreventionDiscoveryConfigTargetsCloudSqlTargetDisabled(v inte
27813022
return transformed, nil
27823023
}
27833024

3025+
func expandDataLossPreventionDiscoveryConfigTargetsSecretsTarget(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
3026+
l := v.([]interface{})
3027+
if len(l) == 0 {
3028+
return nil, nil
3029+
}
3030+
3031+
if l[0] == nil {
3032+
transformed := make(map[string]interface{})
3033+
return transformed, nil
3034+
}
3035+
transformed := make(map[string]interface{})
3036+
3037+
return transformed, nil
3038+
}
3039+
27843040
func expandDataLossPreventionDiscoveryConfigStatus(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
27853041
return v, nil
27863042
}

0 commit comments

Comments
 (0)