@google-cloud/dlp 5.3.0 → 5.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- // Copyright 2023 Google LLC
1
+ // Copyright 2024 Google LLC
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -750,7 +750,7 @@ service DlpService {
750
750
  option (google.api.method_signature) = "name";
751
751
  }
752
752
 
753
- // Lists data profiles for an organization.
753
+ // Lists project data profiles for an organization.
754
754
  rpc ListProjectDataProfiles(ListProjectDataProfilesRequest)
755
755
  returns (ListProjectDataProfilesResponse) {
756
756
  option (google.api.http) = {
@@ -762,7 +762,7 @@ service DlpService {
762
762
  option (google.api.method_signature) = "parent";
763
763
  }
764
764
 
765
- // Lists data profiles for an organization.
765
+ // Lists table data profiles for an organization.
766
766
  rpc ListTableDataProfiles(ListTableDataProfilesRequest)
767
767
  returns (ListTableDataProfilesResponse) {
768
768
  option (google.api.http) = {
@@ -774,7 +774,7 @@ service DlpService {
774
774
  option (google.api.method_signature) = "parent";
775
775
  }
776
776
 
777
- // Lists data profiles for an organization.
777
+ // Lists column data profiles for an organization.
778
778
  rpc ListColumnDataProfiles(ListColumnDataProfilesRequest)
779
779
  returns (ListColumnDataProfilesResponse) {
780
780
  option (google.api.http) = {
@@ -822,6 +822,19 @@ service DlpService {
822
822
  option (google.api.method_signature) = "name";
823
823
  }
824
824
 
825
+ // Delete a TableDataProfile. Will not prevent the profile from being
826
+ // regenerated if the table is still included in a discovery configuration.
827
+ rpc DeleteTableDataProfile(DeleteTableDataProfileRequest)
828
+ returns (google.protobuf.Empty) {
829
+ option (google.api.http) = {
830
+ delete: "/v2/{name=organizations/*/locations/*/tableDataProfiles/*}"
831
+ additional_bindings {
832
+ delete: "/v2/{name=projects/*/locations/*/tableDataProfiles/*}"
833
+ }
834
+ };
835
+ option (google.api.method_signature) = "name";
836
+ }
837
+
825
838
  // Inspect hybrid content and store findings to a job.
826
839
  // To review the findings, inspect the job. Inspection will occur
827
840
  // asynchronously.
@@ -842,6 +855,62 @@ service DlpService {
842
855
  body: "*"
843
856
  };
844
857
  }
858
+
859
+ // Create a Connection to an external data source.
860
+ rpc CreateConnection(CreateConnectionRequest) returns (Connection) {
861
+ option (google.api.http) = {
862
+ post: "/v2/{parent=projects/*/locations/*}/connections"
863
+ body: "*"
864
+ };
865
+ option (google.api.method_signature) = "parent, connection";
866
+ }
867
+
868
+ // Get a Connection by name.
869
+ rpc GetConnection(GetConnectionRequest) returns (Connection) {
870
+ option (google.api.http) = {
871
+ get: "/v2/{name=projects/*/locations/*/connections/*}"
872
+ };
873
+ option (google.api.method_signature) = "name";
874
+ }
875
+
876
+ // Lists Connections in a parent.
877
+ rpc ListConnections(ListConnectionsRequest)
878
+ returns (ListConnectionsResponse) {
879
+ option (google.api.http) = {
880
+ get: "/v2/{parent=projects/*/locations/*}/connections"
881
+ };
882
+ option (google.api.method_signature) = "parent";
883
+ }
884
+
885
+ // Searches for Connections in a parent.
886
+ rpc SearchConnections(SearchConnectionsRequest)
887
+ returns (SearchConnectionsResponse) {
888
+ option (google.api.http) = {
889
+ get: "/v2/{parent=projects/*/locations/*}/connections:search"
890
+ additional_bindings {
891
+ get: "/v2/{parent=organizations/*/locations/*}/connections:search"
892
+ }
893
+ };
894
+ option (google.api.method_signature) = "parent";
895
+ }
896
+
897
+ // Delete a Connection.
898
+ rpc DeleteConnection(DeleteConnectionRequest)
899
+ returns (google.protobuf.Empty) {
900
+ option (google.api.http) = {
901
+ delete: "/v2/{name=projects/*/locations/*/connections/*}"
902
+ };
903
+ option (google.api.method_signature) = "name";
904
+ }
905
+
906
+ // Update a Connection.
907
+ rpc UpdateConnection(UpdateConnectionRequest) returns (Connection) {
908
+ option (google.api.http) = {
909
+ patch: "/v2/{name=projects/*/locations/*/connections/*}"
910
+ body: "*"
911
+ };
912
+ option (google.api.method_signature) = "name";
913
+ }
845
914
  }
846
915
 
847
916
  // List of excluded infoTypes.
@@ -1784,6 +1853,10 @@ message InspectDataSourceDetails {
1784
1853
  // inspect job.
1785
1854
  repeated InfoTypeStats info_type_stats = 3;
1786
1855
 
1856
+ // Number of rows scanned post sampling and time filtering (Applicable for
1857
+ // row based stores such as BigQuery).
1858
+ int64 num_rows_processed = 5;
1859
+
1787
1860
  // Statistics related to the processing of hybrid inspect.
1788
1861
  HybridInspectStatistics hybrid_stats = 7;
1789
1862
  }
@@ -1970,6 +2043,9 @@ message InfoTypeCategory {
1970
2043
  // The infoType is typically used in Japan.
1971
2044
  JAPAN = 20;
1972
2045
 
2046
+ // The infoType is typically used in Kazakhstan.
2047
+ KAZAKHSTAN = 47;
2048
+
1973
2049
  // The infoType is typically used in Korea.
1974
2050
  KOREA = 21;
1975
2051
 
@@ -1997,6 +2073,9 @@ message InfoTypeCategory {
1997
2073
  // The infoType is typically used in Portugal.
1998
2074
  PORTUGAL = 28;
1999
2075
 
2076
+ // The infoType is typically used in Russia.
2077
+ RUSSIA = 44;
2078
+
2000
2079
  // The infoType is typically used in Singapore.
2001
2080
  SINGAPORE = 29;
2002
2081
 
@@ -2021,6 +2100,9 @@ message InfoTypeCategory {
2021
2100
  // The infoType is typically used in Turkey.
2022
2101
  TURKEY = 35;
2023
2102
 
2103
+ // The infoType is typically used in Ukraine.
2104
+ UKRAINE = 45;
2105
+
2024
2106
  // The infoType is typically used in the United Kingdom.
2025
2107
  UNITED_KINGDOM = 36;
2026
2108
 
@@ -2030,6 +2112,9 @@ message InfoTypeCategory {
2030
2112
  // The infoType is typically used in Uruguay.
2031
2113
  URUGUAY = 38;
2032
2114
 
2115
+ // The infoType is typically used in Uzbekistan.
2116
+ UZBEKISTAN = 46;
2117
+
2033
2118
  // The infoType is typically used in Venezuela.
2034
2119
  VENEZUELA = 39;
2035
2120
 
@@ -3853,7 +3938,7 @@ message Error {
3853
3938
  repeated google.protobuf.Timestamp timestamps = 2;
3854
3939
  }
3855
3940
 
3856
- // Contains a configuration to make dlp api calls on a repeating basis.
3941
+ // Contains a configuration to make api calls on a repeating basis.
3857
3942
  // See
3858
3943
  // https://cloud.google.com/sensitive-data-protection/docs/concepts-job-triggers
3859
3944
  // to learn more.
@@ -4635,8 +4720,14 @@ message DataProfileAction {
4635
4720
  // of your choice whenever updated.
4636
4721
  message Export {
4637
4722
  // Store all table and column profiles in an existing table or a new table
4638
- // in an existing dataset. Each re-generation will result in a new row in
4639
- // BigQuery.
4723
+ // in an existing dataset. Each re-generation will result in new rows in
4724
+ // BigQuery. Data is inserted using [streaming
4725
+ // insert](https://cloud.google.com/blog/products/bigquery/life-of-a-bigquery-streaming-insert)
4726
+ // and so data may be in the buffer for a period of time after the profile
4727
+ // has finished. The Pub/Sub notification is sent before the streaming
4728
+ // buffer is guaranteed to be written, so data may not be instantly
4729
+ // visible to queries by the time your topic receives the Pub/Sub
4730
+ // notification.
4640
4731
  BigQueryTable profile_table = 1;
4641
4732
  }
4642
4733
 
@@ -4652,7 +4743,7 @@ message DataProfileAction {
4652
4743
  // The full table data profile.
4653
4744
  TABLE_PROFILE = 1;
4654
4745
 
4655
- // The resource name of the table.
4746
+ // The name of the profiled resource.
4656
4747
  RESOURCE_NAME = 2;
4657
4748
  }
4658
4749
 
@@ -4683,12 +4774,12 @@ message DataProfileAction {
4683
4774
  NEW_PROFILE = 1;
4684
4775
 
4685
4776
  // Changed one of the following profile metrics:
4686
- // * Table data risk score
4687
- // * Table sensitivity score
4688
- // * Table resource visibility
4689
- // * Table encryption type
4690
- // * Table predicted infoTypes
4691
- // * Table other infoTypes
4777
+ // * Data risk score
4778
+ // * Sensitivity score
4779
+ // * Resource visibility
4780
+ // * Encryption type
4781
+ // * Predicted infoTypes
4782
+ // * Other infoTypes
4692
4783
  CHANGED_PROFILE = 2;
4693
4784
 
4694
4785
  // Table data risk score or sensitivity score increased.
@@ -4941,6 +5032,10 @@ message DiscoveryTarget {
4941
5032
  // BigQuery target for Discovery. The first target to match a table will be
4942
5033
  // the one applied.
4943
5034
  BigQueryDiscoveryTarget big_query_target = 1;
5035
+
5036
+ // Cloud SQL target for Discovery. The first target to match a table will be
5037
+ // the one applied.
5038
+ CloudSqlDiscoveryTarget cloud_sql_target = 2;
4944
5039
  }
4945
5040
  }
4946
5041
 
@@ -5104,6 +5199,187 @@ enum BigQuerySchemaModification {
5104
5199
  SCHEMA_REMOVED_COLUMNS = 2;
5105
5200
  }
5106
5201
 
5202
+ // Target used to match against for discovery with Cloud SQL tables.
5203
+ message CloudSqlDiscoveryTarget {
5204
+ // Required. The tables the discovery cadence applies to. The first target
5205
+ // with a matching filter will be the one to apply to a table.
5206
+ DiscoveryCloudSqlFilter filter = 1 [(google.api.field_behavior) = REQUIRED];
5207
+
5208
+ // In addition to matching the filter, these conditions must be true
5209
+ // before a profile is generated.
5210
+ DiscoveryCloudSqlConditions conditions = 2;
5211
+
5212
+ // Type of schedule.
5213
+ oneof cadence {
5214
+ // How often and when to update profiles. New tables that match both the
5215
+ // filter and conditions are scanned as quickly as possible depending on
5216
+ // system capacity.
5217
+ DiscoveryCloudSqlGenerationCadence generation_cadence = 3;
5218
+
5219
+ // Disable profiling for database resources that match this filter.
5220
+ Disabled disabled = 4;
5221
+ }
5222
+ }
5223
+
5224
+ // Determines what tables will have profiles generated within an organization
5225
+ // or project. Includes the ability to filter by regular expression patterns
5226
+ // on project ID, location, instance, database, and database resource name.
5227
+ message DiscoveryCloudSqlFilter {
5228
+ // Whether the filter applies to a specific set of database resources or all
5229
+ // other database resources within the location being profiled. The first
5230
+ // filter to match will be applied, regardless of the condition. If none is
5231
+ // set, will default to `others`.
5232
+ oneof filter {
5233
+ // A specific set of database resources for this filter to apply to.
5234
+ DatabaseResourceCollection collection = 1;
5235
+
5236
+ // Catch-all. This should always be the last target in the list because
5237
+ // anything above it will apply first. Should only appear once in a
5238
+ // configuration. If none is specified, a default one will be added
5239
+ // automatically.
5240
+ AllOtherDatabaseResources others = 2;
5241
+
5242
+ // The database resource to scan. Targets including this can only include
5243
+ // one target (the target with this database resource reference).
5244
+ DatabaseResourceReference database_resource_reference = 3;
5245
+ }
5246
+ }
5247
+
5248
+ // Match database resources using regex filters. Examples of database
5249
+ // resources are tables, views, and stored procedures.
5250
+ message DatabaseResourceCollection {
5251
+ // The first filter containing a pattern that matches a database resource will
5252
+ // be used.
5253
+ oneof pattern {
5254
+ // A collection of regular expressions to match a database resource against.
5255
+ DatabaseResourceRegexes include_regexes = 1;
5256
+ }
5257
+ }
5258
+
5259
+ // A collection of regular expressions to determine what database resources to
5260
+ // match against.
5261
+ message DatabaseResourceRegexes {
5262
+ // A group of regular expression patterns to match against one or more
5263
+ // database resources.
5264
+ // Maximum of 100 entries. The sum of all regular expression's length can't
5265
+ // exceed 10 KiB.
5266
+ repeated DatabaseResourceRegex patterns = 1;
5267
+ }
5268
+
5269
+ // A pattern to match against one or more database resources. At least one
5270
+ // pattern must be specified. Regular expressions use RE2
5271
+ // [syntax](https://github.com/google/re2/wiki/Syntax); a guide can be found
5272
+ // under the google/re2 repository on GitHub.
5273
+ message DatabaseResourceRegex {
5274
+ // For organizations, if unset, will match all projects. Has no effect
5275
+ // for Data Profile configurations created within a project.
5276
+ string project_id_regex = 1;
5277
+
5278
+ // Regex to test the instance name against. If empty, all instances match.
5279
+ string instance_regex = 2;
5280
+
5281
+ // Regex to test the database name against. If empty, all databases match.
5282
+ string database_regex = 3;
5283
+
5284
+ // Regex to test the database resource's name against. An example of a
5285
+ // database resource name is a table's name. Other database resource names
5286
+ // like view names could be included in the future. If empty, all database
5287
+ // resources match.
5288
+ string database_resource_name_regex = 4;
5289
+ }
5290
+
5291
+ // Match database resources not covered by any other filter.
5292
+ message AllOtherDatabaseResources {}
5293
+
5294
+ // Identifies a single database resource, like a table within a database.
5295
+ message DatabaseResourceReference {
5296
+ // Required. If within a project-level config, then this must match the
5297
+ // config's project id.
5298
+ string project_id = 1 [(google.api.field_behavior) = REQUIRED];
5299
+
5300
+ // Required. The instance where this resource is located. For example: Cloud
5301
+ // SQL's instance id.
5302
+ string instance = 2 [(google.api.field_behavior) = REQUIRED];
5303
+ }
5304
+
5305
+ // Requirements that must be true before a table is profiled for the
5306
+ // first time.
5307
+ message DiscoveryCloudSqlConditions {
5308
+ // The database engines that should be profiled.
5309
+ enum DatabaseEngine {
5310
+ // Unused.
5311
+ DATABASE_ENGINE_UNSPECIFIED = 0;
5312
+
5313
+ // Include all supported database engines.
5314
+ ALL_SUPPORTED_DATABASE_ENGINES = 1;
5315
+
5316
+ // MySql database.
5317
+ MYSQL = 2;
5318
+
5319
+ // PostGres database.
5320
+ POSTGRES = 3;
5321
+ }
5322
+
5323
+ // Cloud SQL database resource types. New values can be added at a later time.
5324
+ enum DatabaseResourceType {
5325
+ // Unused.
5326
+ DATABASE_RESOURCE_TYPE_UNSPECIFIED = 0;
5327
+
5328
+ // Includes database resource types that become supported at a later time.
5329
+ DATABASE_RESOURCE_TYPE_ALL_SUPPORTED_TYPES = 1;
5330
+
5331
+ // Tables.
5332
+ DATABASE_RESOURCE_TYPE_TABLE = 2;
5333
+ }
5334
+
5335
+ // Optional. Database engines that should be profiled.
5336
+ // Optional. Defaults to ALL_SUPPORTED_DATABASE_ENGINES if unspecified.
5337
+ repeated DatabaseEngine database_engines = 1
5338
+ [(google.api.field_behavior) = OPTIONAL];
5339
+
5340
+ // Data profiles will only be generated for the database resource types
5341
+ // specified in this field.
5342
+ // If not specified, defaults to [DATABASE_RESOURCE_TYPE_ALL_SUPPORTED_TYPES].
5343
+ repeated DatabaseResourceType types = 3;
5344
+ }
5345
+
5346
+ // How often existing tables should have their profiles refreshed.
5347
+ // New tables are scanned as quickly as possible depending on system
5348
+ // capacity.
5349
+ message DiscoveryCloudSqlGenerationCadence {
5350
+ // How frequency to modify the profile when the table's schema is modified.
5351
+ message SchemaModifiedCadence {
5352
+ // The type of modification that causes a profile update.
5353
+ enum CloudSqlSchemaModification {
5354
+ // Unused.
5355
+ SQL_SCHEMA_MODIFICATION_UNSPECIFIED = 0;
5356
+
5357
+ // New columns has appeared.
5358
+ NEW_COLUMNS = 1;
5359
+
5360
+ // Columns have been removed from the table.
5361
+ REMOVED_COLUMNS = 2;
5362
+ }
5363
+
5364
+ // The types of schema modifications to consider.
5365
+ // Defaults to NEW_COLUMNS.
5366
+ repeated CloudSqlSchemaModification types = 1;
5367
+
5368
+ // Frequency to regenerate data profiles when the schema is modified.
5369
+ // Defaults to monthly.
5370
+ DataProfileUpdateFrequency frequency = 2;
5371
+ }
5372
+
5373
+ // When to reprofile if the schema has changed.
5374
+ SchemaModifiedCadence schema_modified_cadence = 1;
5375
+
5376
+ // Data changes (non-schema changes) in Cloud SQL tables can't trigger
5377
+ // reprofiling. If you set this field, profiles are refreshed at this
5378
+ // frequency regardless of whether the underlying tables have changes.
5379
+ // Defaults to never.
5380
+ DataProfileUpdateFrequency refresh_frequency = 2;
5381
+ }
5382
+
5107
5383
  // The location to begin a discovery scan. Denotes an organization ID or folder
5108
5384
  // ID within an organization.
5109
5385
  message DiscoveryStartingLocation {
@@ -5978,7 +6254,7 @@ message ListProjectDataProfilesRequest {
5978
6254
  //
5979
6255
  // Supported fields are:
5980
6256
  //
5981
- // - `project_id`: GCP project ID
6257
+ // - `project_id`: Google Cloud project ID
5982
6258
  // - `sensitivity_level`: How sensitive the data in a project is, at most.
5983
6259
  // - `data_risk_level`: How much risk is associated with this data.
5984
6260
  // - `profile_last_generated`: When the profile was last updated in epoch
@@ -6049,7 +6325,7 @@ message ListTableDataProfilesRequest {
6049
6325
  //
6050
6326
  // Supported fields are:
6051
6327
  //
6052
- // - `project_id`: The GCP project ID.
6328
+ // - `project_id`: The Google Cloud project ID.
6053
6329
  // - `dataset_id`: The ID of a BigQuery dataset.
6054
6330
  // - `table_id`: The ID of a BigQuery table.
6055
6331
  // - `sensitivity_level`: How sensitive the data in a table is, at most.
@@ -6070,7 +6346,7 @@ message ListTableDataProfilesRequest {
6070
6346
  // sequence of restrictions implicitly uses `AND`.
6071
6347
  // * A restriction has the form of `{field} {operator} {value}`.
6072
6348
  // * Supported fields/values:
6073
- // - `project_id` - The GCP project ID.
6349
+ // - `project_id` - The Google Cloud project ID.
6074
6350
  // - `dataset_id` - The BigQuery dataset ID.
6075
6351
  // - `table_id` - The ID of the BigQuery table.
6076
6352
  // - `sensitivity_level` - HIGH|MODERATE|LOW
@@ -6217,6 +6493,7 @@ message ProjectDataProfile {
6217
6493
  pattern: "organizations/{organization}/locations/{location}/projectDataProfiles/{project_data_profile}"
6218
6494
  pattern: "projects/{project}/locations/{location}/projectDataProfiles/{project_data_profile}"
6219
6495
  };
6496
+
6220
6497
  // The resource name of the profile.
6221
6498
  string name = 1;
6222
6499
 
@@ -6245,6 +6522,11 @@ enum ResourceVisibility {
6245
6522
  // Visible to any user.
6246
6523
  RESOURCE_VISIBILITY_PUBLIC = 10;
6247
6524
 
6525
+ // May contain public items.
6526
+ // For example, if a GCS bucket has uniform bucket level access disabled, some
6527
+ // objects inside it may be public.
6528
+ RESOURCE_VISIBILITY_INCONCLUSIVE = 15;
6529
+
6248
6530
  // Visible only to specific users.
6249
6531
  RESOURCE_VISIBILITY_RESTRICTED = 20;
6250
6532
  }
@@ -6279,6 +6561,7 @@ message TableDataProfile {
6279
6561
  pattern: "organizations/{organization}/locations/{location}/tableDataProfiles/{table_data_profile}"
6280
6562
  pattern: "projects/{project}/locations/{location}/tableDataProfiles/{table_data_profile}"
6281
6563
  };
6564
+
6282
6565
  // Possible states of a profile. New items may be added.
6283
6566
  enum State {
6284
6567
  // Unused.
@@ -6468,6 +6751,7 @@ message ColumnDataProfile {
6468
6751
  pattern: "organizations/{organization}/locations/{location}/columnDataProfiles/{column_data_profile}"
6469
6752
  pattern: "projects/{project}/locations/{location}/columnDataProfiles/{column_data_profile}"
6470
6753
  };
6754
+
6471
6755
  // Possible states of a profile. New items may be added.
6472
6756
  enum State {
6473
6757
  // Unused.
@@ -6530,6 +6814,18 @@ message ColumnDataProfile {
6530
6814
 
6531
6815
  // Json type.
6532
6816
  TYPE_JSON = 14;
6817
+
6818
+ // Interval type.
6819
+ TYPE_INTERVAL = 15;
6820
+
6821
+ // `Range<Date>` type.
6822
+ TYPE_RANGE_DATE = 16;
6823
+
6824
+ // `Range<Datetime>` type.
6825
+ TYPE_RANGE_DATETIME = 17;
6826
+
6827
+ // `Range<Timestamp>` type.
6828
+ TYPE_RANGE_TIMESTAMP = 18;
6533
6829
  }
6534
6830
 
6535
6831
  // The possible policy states for a column.
@@ -6710,6 +7006,254 @@ message DataProfilePubSubMessage {
6710
7006
  DataProfileAction.EventType event = 2;
6711
7007
  }
6712
7008
 
7009
+ // Request message for CreateConnection.
7010
+ message CreateConnectionRequest {
7011
+ // Required. Parent resource name in the format:
7012
+ // `projects/{project}/locations/{location}`.
7013
+ string parent = 1 [
7014
+ (google.api.field_behavior) = REQUIRED,
7015
+ (google.api.resource_reference) = {
7016
+ child_type: "dlp.googleapis.com/Connection"
7017
+ }
7018
+ ];
7019
+
7020
+ // Required. The connection resource.
7021
+ Connection connection = 2 [(google.api.field_behavior) = REQUIRED];
7022
+ }
7023
+
7024
+ // Request message for GetConnection.
7025
+ message GetConnectionRequest {
7026
+ // Required. Resource name in the format:
7027
+ // `projects/{project}/locations/{location}/connections/{connection}`.
7028
+ string name = 1 [
7029
+ (google.api.field_behavior) = REQUIRED,
7030
+ (google.api.resource_reference) = { type: "dlp.googleapis.com/Connection" }
7031
+ ];
7032
+ }
7033
+
7034
+ // Request message for ListConnections.
7035
+ message ListConnectionsRequest {
7036
+ // Required. Parent name, for example:
7037
+ // `projects/project-id/locations/global`.
7038
+ string parent = 1 [
7039
+ (google.api.field_behavior) = REQUIRED,
7040
+ (google.api.resource_reference) = {
7041
+ child_type: "dlp.googleapis.com/Connection"
7042
+ }
7043
+ ];
7044
+
7045
+ // Optional. Number of results per page, max 1000.
7046
+ int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
7047
+
7048
+ // Optional. Page token from a previous page to return the next set of
7049
+ // results. If set, all other request fields must match the original request.
7050
+ string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
7051
+
7052
+ // Optional. * Supported fields/values
7053
+ // - `state` - MISSING|AVAILABLE|ERROR
7054
+ string filter = 4 [(google.api.field_behavior) = OPTIONAL];
7055
+ }
7056
+
7057
+ // Request message for SearchConnections.
7058
+ message SearchConnectionsRequest {
7059
+ // Required. Parent name, typically an organization, without location.
7060
+ // For example: `organizations/12345678`.
7061
+ string parent = 1 [
7062
+ (google.api.field_behavior) = REQUIRED,
7063
+ (google.api.resource_reference) = {
7064
+ child_type: "dlp.googleapis.com/Connection"
7065
+ }
7066
+ ];
7067
+
7068
+ // Optional. Number of results per page, max 1000.
7069
+ int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
7070
+
7071
+ // Optional. Page token from a previous page to return the next set of
7072
+ // results. If set, all other request fields must match the original request.
7073
+ string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
7074
+
7075
+ // Optional. * Supported fields/values
7076
+ // - `state` - MISSING|AVAILABLE|ERROR
7077
+ string filter = 4 [(google.api.field_behavior) = OPTIONAL];
7078
+ }
7079
+
7080
+ // Response message for ListConnections.
7081
+ message ListConnectionsResponse {
7082
+ // List of connections.
7083
+ repeated Connection connections = 1;
7084
+
7085
+ // Token to retrieve the next page of results. An empty value means there are
7086
+ // no more results.
7087
+ string next_page_token = 2;
7088
+ }
7089
+
7090
+ // Response message for SearchConnections.
7091
+ message SearchConnectionsResponse {
7092
+ // List of connections that match the search query. Note that only a subset
7093
+ // of the fields will be populated, and only "name" is guaranteed to be set.
7094
+ // For full details of a Connection, call GetConnection with the name.
7095
+ repeated Connection connections = 1;
7096
+
7097
+ // Token to retrieve the next page of results. An empty value means there are
7098
+ // no more results.
7099
+ string next_page_token = 2;
7100
+ }
7101
+
7102
+ // Request message for UpdateConnection.
7103
+ message UpdateConnectionRequest {
7104
+ // Required. Resource name in the format:
7105
+ // `projects/{project}/locations/{location}/connections/{connection}`.
7106
+ string name = 1 [
7107
+ (google.api.field_behavior) = REQUIRED,
7108
+ (google.api.resource_reference) = { type: "dlp.googleapis.com/Connection" }
7109
+ ];
7110
+
7111
+ // Required. The connection with new values for the relevant fields.
7112
+ Connection connection = 2 [(google.api.field_behavior) = REQUIRED];
7113
+
7114
+ // Optional. Mask to control which fields get updated.
7115
+ google.protobuf.FieldMask update_mask = 3
7116
+ [(google.api.field_behavior) = OPTIONAL];
7117
+ }
7118
+
7119
+ // Request message for DeleteConnection.
7120
+ message DeleteConnectionRequest {
7121
+ // Required. Resource name of the Connection to be deleted, in the format:
7122
+ // `projects/{project}/locations/{location}/connections/{connection}`.
7123
+ string name = 1 [
7124
+ (google.api.field_behavior) = REQUIRED,
7125
+ (google.api.resource_reference) = { type: "dlp.googleapis.com/Connection" }
7126
+ ];
7127
+ }
7128
+
7129
+ // A data connection to allow DLP to profile data in locations that require
7130
+ // additional configuration.
7131
+ message Connection {
7132
+ option (google.api.resource) = {
7133
+ type: "dlp.googleapis.com/Connection"
7134
+ pattern: "projects/{project}/locations/{location}/connections/{connection}"
7135
+ };
7136
+
7137
+ // Output only. Name of the connection:
7138
+ // `projects/{project}/locations/{location}/connections/{name}`.
7139
+ string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
7140
+
7141
+ // Required. The connection's state in its lifecycle.
7142
+ ConnectionState state = 2 [(google.api.field_behavior) = REQUIRED];
7143
+
7144
+ // Output only. Set if status == ERROR, to provide additional details. Will
7145
+ // store the last 10 errors sorted with the most recent first.
7146
+ repeated Error errors = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
7147
+
7148
+ // Type of connection.
7149
+ oneof properties {
7150
+ // Connect to a Cloud SQL instance.
7151
+ CloudSqlProperties cloud_sql = 4;
7152
+ }
7153
+ }
7154
+
7155
+ // State of the connection.
7156
+ // New values may be added over time.
7157
+ enum ConnectionState {
7158
+ // Unused
7159
+ CONNECTION_STATE_UNSPECIFIED = 0;
7160
+
7161
+ // DLP automatically created this connection during an initial scan, and it is
7162
+ // awaiting full configuration by a user.
7163
+ MISSING_CREDENTIALS = 1;
7164
+
7165
+ // A configured connection that has not encountered any errors.
7166
+ AVAILABLE = 2;
7167
+
7168
+ // A configured connection that encountered errors during its last use. It
7169
+ // will not be used again until it is set to AVAILABLE.
7170
+ //
7171
+ // If the resolution requires external action, then a request to set the
7172
+ // status to AVAILABLE will mark this connection for use. Otherwise, any
7173
+ // changes to the connection properties will automatically mark it as
7174
+ // AVAILABLE.
7175
+ ERROR = 3;
7176
+ }
7177
+
7178
+ // A credential consisting of a username and password, where the password is
7179
+ // stored in a Secret Manager resource.
7180
+ // Note: Secret Manager [charges
7181
+ // apply](https://cloud.google.com/secret-manager/pricing).
7182
+ message SecretManagerCredential {
7183
+ // Required. The username.
7184
+ string username = 1 [(google.api.field_behavior) = REQUIRED];
7185
+
7186
+ // Required. The name of the Secret Manager resource that stores the password,
7187
+ // in the form `projects/project-id/secrets/secret-name/versions/version`.
7188
+ string password_secret_version_name = 2
7189
+ [(google.api.field_behavior) = REQUIRED];
7190
+ }
7191
+
7192
+ // Use IAM auth to connect. This requires the Cloud SQL IAM feature to be
7193
+ // enabled on the instance, which is not the default for Cloud SQL.
7194
+ // See https://cloud.google.com/sql/docs/postgres/authentication and
7195
+ // https://cloud.google.com/sql/docs/mysql/authentication.
7196
+ message CloudSqlIamCredential {}
7197
+
7198
+ // Cloud SQL connection properties.
7199
+ message CloudSqlProperties {
7200
+ // Database engine of a Cloud SQL instance.
7201
+ // New values may be added over time.
7202
+ enum DatabaseEngine {
7203
+ // An engine that is not currently supported by SDP.
7204
+ DATABASE_ENGINE_UNKNOWN = 0;
7205
+
7206
+ // Cloud SQL for MySQL instance.
7207
+ DATABASE_ENGINE_MYSQL = 1;
7208
+
7209
+ // Cloud SQL for Postgres instance.
7210
+ DATABASE_ENGINE_POSTGRES = 2;
7211
+ }
7212
+
7213
+ // Optional. Immutable. The Cloud SQL instance for which the connection is
7214
+ // defined. Only one connection per instance is allowed. This can only be set
7215
+ // at creation time, and cannot be updated.
7216
+ //
7217
+ // It is an error to use a connection_name from different project or region
7218
+ // than the one that holds the connection.
7219
+ // For example, a Connection resource for Cloud SQL connection_name
7220
+ // `project-id:us-central1:sql-instance`
7221
+ // must be created under the parent
7222
+ // `projects/project-id/locations/us-central1`
7223
+ string connection_name = 1 [
7224
+ (google.api.field_behavior) = IMMUTABLE,
7225
+ (google.api.field_behavior) = OPTIONAL
7226
+ ];
7227
+
7228
+ // How to authenticate to the instance.
7229
+ oneof credential {
7230
+ // A username and password stored in Secret Manager.
7231
+ SecretManagerCredential username_password = 2;
7232
+
7233
+ // Built-in IAM authentication (must be configured in Cloud SQL).
7234
+ CloudSqlIamCredential cloud_sql_iam = 3;
7235
+ }
7236
+
7237
+ // Required. DLP will limit its connections to max_connections.
7238
+ // Must be 2 or greater.
7239
+ int32 max_connections = 4 [(google.api.field_behavior) = REQUIRED];
7240
+
7241
+ // Required. The database engine used by the Cloud SQL instance that this
7242
+ // connection configures.
7243
+ DatabaseEngine database_engine = 7 [(google.api.field_behavior) = REQUIRED];
7244
+ }
7245
+
7246
+ // Request message for DeleteTableProfile.
7247
+ message DeleteTableDataProfileRequest {
7248
+ // Required. Resource name of the table data profile.
7249
+ string name = 1 [
7250
+ (google.api.field_behavior) = REQUIRED,
7251
+ (google.api.resource_reference) = {
7252
+ type: "dlp.googleapis.com/TableDataProfile"
7253
+ }
7254
+ ];
7255
+ }
7256
+
6713
7257
  // Message used to identify the type of resource being profiled.
6714
7258
  message DataSourceType {
6715
7259
  // Output only. An identifying string to the type of resource being profiled.