@google-cloud/dlp 4.1.0 → 4.2.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.
@@ -133,7 +133,7 @@ service DlpService {
133
133
  };
134
134
  }
135
135
 
136
- // Returns a list of the sensitive information types that the DLP API
136
+ // Returns a list of the sensitive information types that DLP API
137
137
  // supports. See https://cloud.google.com/dlp/docs/infotypes-reference to
138
138
  // learn more.
139
139
  rpc ListInfoTypes(ListInfoTypesRequest) returns (ListInfoTypesResponse) {
@@ -146,7 +146,7 @@ service DlpService {
146
146
  option (google.api.method_signature) = "parent";
147
147
  }
148
148
 
149
- // Creates an InspectTemplate for re-using frequently used configuration
149
+ // Creates an InspectTemplate for reusing frequently used configuration
150
150
  // for inspecting content, images, and storage.
151
151
  // See https://cloud.google.com/dlp/docs/creating-templates to learn more.
152
152
  rpc CreateInspectTemplate(CreateInspectTemplateRequest) returns (InspectTemplate) {
@@ -245,7 +245,7 @@ service DlpService {
245
245
  option (google.api.method_signature) = "name";
246
246
  }
247
247
 
248
- // Creates a DeidentifyTemplate for re-using frequently used configuration
248
+ // Creates a DeidentifyTemplate for reusing frequently used configuration
249
249
  // for de-identifying content, images, and storage.
250
250
  // See https://cloud.google.com/dlp/docs/creating-templates-deid to learn
251
251
  // more.
@@ -505,7 +505,7 @@ service DlpService {
505
505
  }
506
506
 
507
507
  // Deletes a long-running DlpJob. This method indicates that the client is
508
- // no longer interested in the DlpJob result. The job will be cancelled if
508
+ // no longer interested in the DlpJob result. The job will be canceled if
509
509
  // possible.
510
510
  // See https://cloud.google.com/dlp/docs/inspecting-storage and
511
511
  // https://cloud.google.com/dlp/docs/compute-risk-analysis to learn more.
@@ -660,7 +660,7 @@ service DlpService {
660
660
  }
661
661
  }
662
662
 
663
- // List of exclude infoTypes.
663
+ // List of excluded infoTypes.
664
664
  message ExcludeInfoTypes {
665
665
  // InfoType list in ExclusionRule rule drops a finding when it overlaps or
666
666
  // contained within with a finding of an infoType from this list. For
@@ -721,6 +721,12 @@ message InspectionRuleSet {
721
721
  message InspectConfig {
722
722
  // Configuration to control the number of findings returned for inspection.
723
723
  // This is not used for de-identification or data profiling.
724
+ //
725
+ // When redacting sensitive data from images, finding limits don't apply. They
726
+ // can cause unexpected or inconsistent results, where only some data is
727
+ // redacted. Don't include finding limits in
728
+ // [RedactImage][google.privacy.dlp.v2.DlpService.RedactImage]
729
+ // requests. Otherwise, Cloud DLP returns an error.
724
730
  message FindingLimits {
725
731
  // Max findings configuration per infoType, per content item or long
726
732
  // running DlpJob.
@@ -770,6 +776,12 @@ message InspectConfig {
770
776
 
771
777
  // Configuration to control the number of findings returned.
772
778
  // This is not used for data profiling.
779
+ //
780
+ // When redacting sensitive data from images, finding limits don't apply. They
781
+ // can cause unexpected or inconsistent results, where only some data is
782
+ // redacted. Don't include finding limits in
783
+ // [RedactImage][google.privacy.dlp.v2.DlpService.RedactImage]
784
+ // requests. Otherwise, Cloud DLP returns an error.
773
785
  FindingLimits limits = 3;
774
786
 
775
787
  // When true, a contextual quote from the data that triggered a finding is
@@ -1006,7 +1018,7 @@ message ContentLocation {
1006
1018
  // * Datastore namespace: {namespace}
1007
1019
  //
1008
1020
  // Nested names could be absent if the embedded object has no string
1009
- // identifier (for an example an image contained within a document).
1021
+ // identifier (for example, an image contained within a document).
1010
1022
  string container_name = 1;
1011
1023
 
1012
1024
  // Type of the container within the file with location of the finding.
@@ -1024,14 +1036,14 @@ message ContentLocation {
1024
1036
  MetadataLocation metadata_location = 8;
1025
1037
  }
1026
1038
 
1027
- // Findings container modification timestamp, if applicable.
1028
- // For Google Cloud Storage contains last file modification timestamp.
1029
- // For BigQuery table contains last_modified_time property.
1030
- // For Datastore - not populated.
1039
+ // Finding container modification timestamp, if applicable. For Cloud Storage,
1040
+ // this field contains the last file modification timestamp. For a BigQuery
1041
+ // table, this field contains the last_modified_time property. For Datastore,
1042
+ // this field isn't populated.
1031
1043
  google.protobuf.Timestamp container_timestamp = 6;
1032
1044
 
1033
- // Findings container version, if available
1034
- // ("generation" for Google Cloud Storage).
1045
+ // Finding container version, if available
1046
+ // ("generation" for Cloud Storage).
1035
1047
  string container_version = 7;
1036
1048
  }
1037
1049
 
@@ -1086,7 +1098,7 @@ message TableLocation {
1086
1098
  // Represents a container that may contain DLP findings.
1087
1099
  // Examples of a container include a file, table, or database record.
1088
1100
  message Container {
1089
- // Container type, for example BigQuery or Google Cloud Storage.
1101
+ // Container type, for example BigQuery or Cloud Storage.
1090
1102
  string type = 1;
1091
1103
 
1092
1104
  // Project where the finding was found.
@@ -1096,33 +1108,35 @@ message Container {
1096
1108
  // A string representation of the full container name.
1097
1109
  // Examples:
1098
1110
  // - BigQuery: 'Project:DataSetId.TableId'
1099
- // - Google Cloud Storage: 'gs://Bucket/folders/filename.txt'
1111
+ // - Cloud Storage: 'gs://Bucket/folders/filename.txt'
1100
1112
  string full_path = 3;
1101
1113
 
1102
1114
  // The root of the container.
1103
1115
  // Examples:
1116
+ //
1104
1117
  // - For BigQuery table `project_id:dataset_id.table_id`, the root is
1105
1118
  // `dataset_id`
1106
- // - For Google Cloud Storage file `gs://bucket/folder/filename.txt`, the root
1119
+ // - For Cloud Storage file `gs://bucket/folder/filename.txt`, the root
1107
1120
  // is `gs://bucket`
1108
1121
  string root_path = 4;
1109
1122
 
1110
1123
  // The rest of the path after the root.
1111
1124
  // Examples:
1125
+ //
1112
1126
  // - For BigQuery table `project_id:dataset_id.table_id`, the relative path is
1113
1127
  // `table_id`
1114
- // - Google Cloud Storage file `gs://bucket/folder/filename.txt`, the relative
1128
+ // - For Cloud Storage file `gs://bucket/folder/filename.txt`, the relative
1115
1129
  // path is `folder/filename.txt`
1116
1130
  string relative_path = 5;
1117
1131
 
1118
- // Findings container modification timestamp, if applicable.
1119
- // For Google Cloud Storage contains last file modification timestamp.
1120
- // For BigQuery table contains last_modified_time property.
1121
- // For Datastore - not populated.
1132
+ // Findings container modification timestamp, if applicable. For Cloud
1133
+ // Storage, this field contains the last file modification timestamp. For a
1134
+ // BigQuery table, this field contains the last_modified_time property. For
1135
+ // Datastore, this field isn't populated.
1122
1136
  google.protobuf.Timestamp update_time = 6;
1123
1137
 
1124
1138
  // Findings container version, if available
1125
- // ("generation" for Google Cloud Storage).
1139
+ // ("generation" for Cloud Storage).
1126
1140
  string version = 7;
1127
1141
  }
1128
1142
 
@@ -1242,7 +1256,7 @@ message RedactImageResponse {
1242
1256
  InspectResult inspect_result = 3;
1243
1257
  }
1244
1258
 
1245
- // Request to de-identify a list of items.
1259
+ // Request to de-identify a ContentItem.
1246
1260
  message DeidentifyContentRequest {
1247
1261
  // Parent resource name.
1248
1262
  //
@@ -1367,7 +1381,7 @@ message ReidentifyContentRequest {
1367
1381
  string location_id = 7;
1368
1382
  }
1369
1383
 
1370
- // Results of re-identifying a item.
1384
+ // Results of re-identifying an item.
1371
1385
  message ReidentifyContentResponse {
1372
1386
  // The re-identified item.
1373
1387
  ContentItem item = 1;
@@ -1434,7 +1448,7 @@ message OutputStorageConfig {
1434
1448
  // `timestamp`.
1435
1449
  BASIC_COLUMNS = 1;
1436
1450
 
1437
- // Schema tailored to findings from scanning Google Cloud Storage.
1451
+ // Schema tailored to findings from scanning Cloud Storage.
1438
1452
  GCS_COLUMNS = 2;
1439
1453
 
1440
1454
  // Schema tailored to findings from scanning Google Datastore.
@@ -1452,8 +1466,8 @@ message OutputStorageConfig {
1452
1466
  // Store findings in an existing table or a new table in an existing
1453
1467
  // dataset. If table_id is not set a new one will be generated
1454
1468
  // for you with the following format:
1455
- // dlp_googleapis_yyyy_mm_dd_[dlp_job_id]. Pacific timezone will be used for
1456
- // generating the date details.
1469
+ // dlp_googleapis_yyyy_mm_dd_[dlp_job_id]. Pacific time zone will be used
1470
+ // for generating the date details.
1457
1471
  //
1458
1472
  // For Inspect, each column in an existing output table must have the same
1459
1473
  // name, type, and mode of a field in the `Finding` object.
@@ -1555,6 +1569,9 @@ message InfoTypeDescription {
1555
1569
  // request.
1556
1570
  string description = 4;
1557
1571
 
1572
+ // A list of available versions for the infotype.
1573
+ repeated VersionDescription versions = 9;
1574
+
1558
1575
  // The category of the infoType.
1559
1576
  repeated InfoTypeCategory categories = 10;
1560
1577
  }
@@ -1751,6 +1768,15 @@ message InfoTypeCategory {
1751
1768
  }
1752
1769
  }
1753
1770
 
1771
+ // Details about each available version for an infotype.
1772
+ message VersionDescription {
1773
+ // Name of the version
1774
+ string version = 1;
1775
+
1776
+ // Description of the version.
1777
+ string description = 2;
1778
+ }
1779
+
1754
1780
  // Request for the list of infoTypes.
1755
1781
  message ListInfoTypesRequest {
1756
1782
  // The parent resource name.
@@ -2202,10 +2228,10 @@ message AnalyzeDataSourceRiskDetails {
2202
2228
  repeated Value quasi_ids_values = 1;
2203
2229
 
2204
2230
  // The estimated probability that a given individual sharing these
2205
- // quasi-identifier values is in the dataset. This value, typically called
2206
- // δ, is the ratio between the number of records in the dataset with these
2207
- // quasi-identifier values, and the total number of individuals (inside
2208
- // *and* outside the dataset) with these quasi-identifier values.
2231
+ // quasi-identifier values is in the dataset. This value, typically
2232
+ // called δ, is the ratio between the number of records in the dataset
2233
+ // with these quasi-identifier values, and the total number of individuals
2234
+ // (inside *and* outside the dataset) with these quasi-identifier values.
2209
2235
  // For example, if there are 15 individuals in the dataset who share the
2210
2236
  // same quasi-identifier values, and an estimated 100 people in the entire
2211
2237
  // population with these values, then δ is 0.15.
@@ -2375,6 +2401,9 @@ message DeidentifyConfig {
2375
2401
  // specific locations within structured datasets, such as transforming
2376
2402
  // a column within a table.
2377
2403
  RecordTransformations record_transformations = 2;
2404
+
2405
+ // Treat the dataset as an image and redact.
2406
+ ImageTransformations image_transformations = 4;
2378
2407
  }
2379
2408
 
2380
2409
  // Mode for handling transformation errors. If left unspecified, the default
@@ -2382,6 +2411,49 @@ message DeidentifyConfig {
2382
2411
  TransformationErrorHandling transformation_error_handling = 3;
2383
2412
  }
2384
2413
 
2414
+ // A type of transformation that is applied over images.
2415
+ message ImageTransformations {
2416
+ // Configuration for determining how redaction of images should occur.
2417
+ message ImageTransformation {
2418
+ // Apply transformation to the selected info_types.
2419
+ message SelectedInfoTypes {
2420
+ // Required. InfoTypes to apply the transformation to. Required. Provided InfoType
2421
+ // must be unique within the ImageTransformations message.
2422
+ repeated InfoType info_types = 5 [(google.api.field_behavior) = REQUIRED];
2423
+ }
2424
+
2425
+ // Apply transformation to all findings.
2426
+ message AllInfoTypes {
2427
+
2428
+ }
2429
+
2430
+ // Apply to all text.
2431
+ message AllText {
2432
+
2433
+ }
2434
+
2435
+ oneof target {
2436
+ // Apply transformation to the selected info_types.
2437
+ SelectedInfoTypes selected_info_types = 4;
2438
+
2439
+ // Apply transformation to all findings not specified in other
2440
+ // ImageTransformation's selected_info_types. Only one instance is allowed
2441
+ // within the ImageTransformations message.
2442
+ AllInfoTypes all_info_types = 5;
2443
+
2444
+ // Apply transformation to all text that doesn't match an infoType. Only
2445
+ // one instance is allowed within the ImageTransformations message.
2446
+ AllText all_text = 6;
2447
+ }
2448
+
2449
+ // The color to use when redacting content from an image. If not
2450
+ // specified, the default is black.
2451
+ Color redaction_color = 3;
2452
+ }
2453
+
2454
+ repeated ImageTransformation transforms = 2;
2455
+ }
2456
+
2385
2457
  // How to handle transformation errors during de-identification. A
2386
2458
  // transformation error occurs when the requested transformation is incompatible
2387
2459
  // with the data. For example, trying to de-identify an IP address using a
@@ -2558,7 +2630,7 @@ message CryptoDeterministicConfig {
2558
2630
  // plaintext would be used as is for encryption.
2559
2631
  //
2560
2632
  // Note that case (1) is expected when an `InfoTypeTransformation` is
2561
- // applied to both structured and non-structured `ContentItem`s.
2633
+ // applied to both structured and unstructured `ContentItem`s.
2562
2634
  FieldId context = 3;
2563
2635
  }
2564
2636
 
@@ -2593,7 +2665,7 @@ message RedactConfig {
2593
2665
  // Characters to skip when doing deidentification of a value. These will be left
2594
2666
  // alone and skipped.
2595
2667
  message CharsToIgnore {
2596
- // Convenience enum for indication common characters to not transform.
2668
+ // Convenience enum for indicating common characters to not transform.
2597
2669
  enum CommonCharsToIgnore {
2598
2670
  // Unused.
2599
2671
  COMMON_CHARS_TO_IGNORE_UNSPECIFIED = 0;
@@ -2639,6 +2711,21 @@ message CharacterMaskConfig {
2639
2711
 
2640
2712
  // Number of characters to mask. If not set, all matching chars will be
2641
2713
  // masked. Skipped characters do not count towards this tally.
2714
+ //
2715
+ // If `number_to_mask` is negative, this denotes inverse masking. Cloud DLP
2716
+ // masks all but a number of characters.
2717
+ // For example, suppose you have the following values:
2718
+ //
2719
+ // - `masking_character` is `*`
2720
+ // - `number_to_mask` is `-4`
2721
+ // - `reverse_order` is `false`
2722
+ // - `CharsToIgnore` includes `-`
2723
+ // - Input string is `1234-5678-9012-3456`
2724
+ //
2725
+ // The resulting de-identified string is
2726
+ // `****-****-****-3456`. Cloud DLP masks all but the last four characters.
2727
+ // If `reverse_order` is `true`, all but the first four characters are masked
2728
+ // as `1234-****-****-****`.
2642
2729
  int32 number_to_mask = 2;
2643
2730
 
2644
2731
  // Mask characters in reverse order. For example, if `masking_character` is
@@ -2732,7 +2819,7 @@ message BucketingConfig {
2732
2819
  message CryptoReplaceFfxFpeConfig {
2733
2820
  // These are commonly used subsets of the alphabet that the FFX mode
2734
2821
  // natively supports. In the algorithm, the alphabet is selected using
2735
- // the "radix". Therefore each corresponds to particular radix.
2822
+ // the "radix". Therefore each corresponds to a particular radix.
2736
2823
  enum FfxCommonNativeAlphabet {
2737
2824
  // Unused.
2738
2825
  FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED = 0;
@@ -2765,7 +2852,7 @@ message CryptoReplaceFfxFpeConfig {
2765
2852
  // a default tweak will be used.
2766
2853
  //
2767
2854
  // Note that case (1) is expected when an `InfoTypeTransformation` is
2768
- // applied to both structured and non-structured `ContentItem`s.
2855
+ // applied to both structured and unstructured `ContentItem`s.
2769
2856
  // Currently, the referenced field may be of value type integer or string.
2770
2857
  //
2771
2858
  // The tweak is constructed as a sequence of bytes in big endian byte order
@@ -3021,7 +3108,7 @@ message RecordCondition {
3021
3108
  repeated Condition conditions = 1;
3022
3109
  }
3023
3110
 
3024
- // An expression, consisting or an operator and conditions.
3111
+ // An expression, consisting of an operator and conditions.
3025
3112
  message Expressions {
3026
3113
  // Logical operators for conditional checks.
3027
3114
  enum LogicalOperator {
@@ -3110,10 +3197,209 @@ message TransformationSummary {
3110
3197
  int64 transformed_bytes = 7;
3111
3198
  }
3112
3199
 
3200
+ // A flattened description of a `PrimitiveTransformation` or
3201
+ // `RecordSuppression`.
3202
+ message TransformationDescription {
3203
+ // The transformation type.
3204
+ TransformationType type = 1;
3205
+
3206
+ // A description of the transformation. This is empty for a
3207
+ // RECORD_SUPPRESSION, or is the output of calling toString() on the
3208
+ // `PrimitiveTransformation` protocol buffer message for any other type of
3209
+ // transformation.
3210
+ string description = 2;
3211
+
3212
+ // A human-readable string representation of the `RecordCondition`
3213
+ // corresponding to this transformation. Set if a `RecordCondition` was used
3214
+ // to determine whether or not to apply this transformation.
3215
+ //
3216
+ // Examples:
3217
+ // * (age_field > 85)
3218
+ // * (age_field <= 18)
3219
+ // * (zip_field exists)
3220
+ // * (zip_field == 01234) && (city_field != "Springville")
3221
+ // * (zip_field == 01234) && (age_field <= 18) && (city_field exists)
3222
+ string condition = 3;
3223
+
3224
+ // Set if the transformation was limited to a specific `InfoType`.
3225
+ InfoType info_type = 4;
3226
+ }
3227
+
3228
+ // Details about a single transformation. This object contains a description of
3229
+ // the transformation, information about whether the transformation was
3230
+ // successfully applied, and the precise location where the transformation
3231
+ // occurred. These details are stored in a user-specified BigQuery table.
3232
+ message TransformationDetails {
3233
+ // The name of the job that completed the transformation.
3234
+ string resource_name = 1;
3235
+
3236
+ // The top level name of the container where the transformation is located
3237
+ // (this will be the source file name or table name).
3238
+ string container_name = 2;
3239
+
3240
+ // Description of transformation. This would only contain more than one
3241
+ // element if there were multiple matching transformations and which one to
3242
+ // apply was ambiguous. Not set for states that contain no transformation,
3243
+ // currently only state that contains no transformation is
3244
+ // TransformationResultStateType.METADATA_UNRETRIEVABLE.
3245
+ repeated TransformationDescription transformation = 3;
3246
+
3247
+ // Status of the transformation, if transformation was not successful, this
3248
+ // will specify what caused it to fail, otherwise it will show that the
3249
+ // transformation was successful.
3250
+ TransformationResultStatus status_details = 4;
3251
+
3252
+ // The number of bytes that were transformed. If transformation was
3253
+ // unsuccessful or did not take place because there was no content to
3254
+ // transform, this will be zero.
3255
+ int64 transformed_bytes = 5;
3256
+
3257
+ // The precise location of the transformed content in the original container.
3258
+ TransformationLocation transformation_location = 6;
3259
+ }
3260
+
3261
+ // Specifies the location of a transformation.
3262
+ message TransformationLocation {
3263
+ oneof location_type {
3264
+ // For infotype transformations, link to the corresponding findings ID so
3265
+ // that location information does not need to be duplicated. Each findings
3266
+ // ID correlates to an entry in the findings output table, this table only
3267
+ // gets created when users specify to save findings (add the save findings
3268
+ // action to the request).
3269
+ string finding_id = 1;
3270
+
3271
+ // For record transformations, provide a field and container information.
3272
+ RecordTransformation record_transformation = 2;
3273
+ }
3274
+
3275
+ // Information about the functionality of the container where this finding
3276
+ // occurred, if available.
3277
+ TransformationContainerType container_type = 3;
3278
+ }
3279
+
3280
+ message RecordTransformation {
3281
+ // For record transformations, provide a field.
3282
+ FieldId field_id = 1;
3283
+
3284
+ // Findings container modification timestamp, if applicable.
3285
+ google.protobuf.Timestamp container_timestamp = 2;
3286
+
3287
+ // Container version, if available ("generation" for Cloud Storage).
3288
+ string container_version = 3;
3289
+ }
3290
+
3291
+ message TransformationResultStatus {
3292
+ // Transformation result status type, this will be either SUCCESS, or it will
3293
+ // be the reason for why the transformation was not completely successful.
3294
+ TransformationResultStatusType result_status_type = 1;
3295
+
3296
+ // Detailed error codes and messages
3297
+ google.rpc.Status details = 2;
3298
+ }
3299
+
3300
+ // Enum of possible outcomes of transformations. SUCCESS if transformation and
3301
+ // storing of transformation was successful, otherwise, reason for not
3302
+ // transforming.
3303
+ enum TransformationResultStatusType {
3304
+ STATE_TYPE_UNSPECIFIED = 0;
3305
+
3306
+ // This will be set when a finding could not be transformed (i.e. outside user
3307
+ // set bucket range).
3308
+ INVALID_TRANSFORM = 1;
3309
+
3310
+ // This will be set when a BigQuery transformation was successful but could
3311
+ // not be stored back in BigQuery because the transformed row exceeds
3312
+ // BigQuery's max row size.
3313
+ BIGQUERY_MAX_ROW_SIZE_EXCEEDED = 2;
3314
+
3315
+ // This will be set when there is a finding in the custom metadata of a file,
3316
+ // but at the write time of the transformed file, this key / value pair is
3317
+ // unretrievable.
3318
+ METADATA_UNRETRIEVABLE = 3;
3319
+
3320
+ // This will be set when the transformation and storing of it is successful.
3321
+ SUCCESS = 4;
3322
+ }
3323
+
3324
+ // Describes functionality of a given container in its original format.
3325
+ enum TransformationContainerType {
3326
+ TRANSFORM_UNKNOWN_CONTAINER = 0;
3327
+
3328
+ TRANSFORM_BODY = 1;
3329
+
3330
+ TRANSFORM_METADATA = 2;
3331
+
3332
+ TRANSFORM_TABLE = 3;
3333
+ }
3334
+
3335
+ // An enum of rules that can be used to transform a value. Can be a
3336
+ // record suppression, or one of the transformation rules specified under
3337
+ // `PrimitiveTransformation`.
3338
+ enum TransformationType {
3339
+ // Unused
3340
+ TRANSFORMATION_TYPE_UNSPECIFIED = 0;
3341
+
3342
+ // Record suppression
3343
+ RECORD_SUPPRESSION = 1;
3344
+
3345
+ // Replace value
3346
+ REPLACE_VALUE = 2;
3347
+
3348
+ // Replace value using a dictionary.
3349
+ REPLACE_DICTIONARY = 15;
3350
+
3351
+ // Redact
3352
+ REDACT = 3;
3353
+
3354
+ // Character mask
3355
+ CHARACTER_MASK = 4;
3356
+
3357
+ // FFX-FPE
3358
+ CRYPTO_REPLACE_FFX_FPE = 5;
3359
+
3360
+ // Fixed size bucketing
3361
+ FIXED_SIZE_BUCKETING = 6;
3362
+
3363
+ // Bucketing
3364
+ BUCKETING = 7;
3365
+
3366
+ // Replace with info type
3367
+ REPLACE_WITH_INFO_TYPE = 8;
3368
+
3369
+ // Time part
3370
+ TIME_PART = 9;
3371
+
3372
+ // Crypto hash
3373
+ CRYPTO_HASH = 10;
3374
+
3375
+ // Date shift
3376
+ DATE_SHIFT = 12;
3377
+
3378
+ // Deterministic crypto
3379
+ CRYPTO_DETERMINISTIC_CONFIG = 13;
3380
+
3381
+ // Redact image
3382
+ REDACT_IMAGE = 14;
3383
+ }
3384
+
3385
+ // Config for storing transformation details.
3386
+ message TransformationDetailsStorageConfig {
3387
+ // Location to store the transformation summary.
3388
+ oneof type {
3389
+ // The BigQuery table in which to store the output. This may be an existing
3390
+ // table or in a new table in an existing dataset.
3391
+ // If table_id is not set a new one will be generated for you with the
3392
+ // following format:
3393
+ // dlp_googleapis_transformation_details_yyyy_mm_dd_[dlp_job_id]. Pacific
3394
+ // time zone will be used for generating the date details.
3395
+ BigQueryTable table = 1;
3396
+ }
3397
+ }
3398
+
3113
3399
  // Schedule for inspect job triggers.
3114
3400
  message Schedule {
3115
3401
  oneof option {
3116
- // With this option a job is started a regular periodic basis. For
3402
+ // With this option a job is started on a regular periodic basis. For
3117
3403
  // example: every day (86400 seconds).
3118
3404
  //
3119
3405
  // A scheduled start time will be skipped if the previous
@@ -3302,7 +3588,7 @@ message Action {
3302
3588
  OutputStorageConfig output_config = 1;
3303
3589
  }
3304
3590
 
3305
- // Publish a message into given Pub/Sub topic when DlpJob has completed. The
3591
+ // Publish a message into a given Pub/Sub topic when DlpJob has completed. The
3306
3592
  // message contains a single field, `DlpJobName`, which is equal to the
3307
3593
  // finished job's
3308
3594
  // [`DlpJob.name`](https://cloud.google.com/dlp/docs/reference/rest/v2/projects.dlpJobs#DlpJob).
@@ -3320,31 +3606,88 @@ message Action {
3320
3606
  // This action is only available for projects which are parts of
3321
3607
  // an organization and whitelisted for the alpha Cloud Security Command
3322
3608
  // Center.
3323
- // The action will publish count of finding instances and their info types.
3324
- // The summary of findings will be persisted in CSCC and are governed by CSCC
3325
- // service-specific policy, see https://cloud.google.com/terms/service-terms
3326
- // Only a single instance of this action can be specified.
3327
- // Compatible with: Inspect
3609
+ // The action will publish the count of finding instances and their info
3610
+ // types. The summary of findings will be persisted in CSCC and are governed
3611
+ // by CSCC service-specific policy, see
3612
+ // https://cloud.google.com/terms/service-terms Only a single instance of this
3613
+ // action can be specified. Compatible with: Inspect
3328
3614
  message PublishSummaryToCscc {
3329
3615
 
3330
3616
  }
3331
3617
 
3332
- // Publish findings of a DlpJob to Data Catalog. Labels summarizing the
3333
- // results of the DlpJob will be applied to the entry for the resource scanned
3334
- // in Data Catalog. Any labels previously written by another DlpJob will
3335
- // be deleted. InfoType naming patterns are strictly enforced when using this
3336
- // feature. Note that the findings will be persisted in Data Catalog
3337
- // storage and are governed by Data Catalog service-specific policy, see
3338
- // https://cloud.google.com/terms/service-terms
3339
- // Only a single instance of this action can be specified and only allowed if
3340
- // all resources being scanned are BigQuery tables.
3618
+ // Publish findings of a DlpJob to Data Catalog. In Data Catalog, tag
3619
+ // templates are applied to the resource that Cloud DLP scanned. Data
3620
+ // Catalog tag templates are stored in the same project and region where the
3621
+ // BigQuery table exists. For Cloud DLP to create and apply the tag template,
3622
+ // the Cloud DLP service agent must have the
3623
+ // `roles/datacatalog.tagTemplateOwner` permission on the project. The tag
3624
+ // template contains fields summarizing the results of the DlpJob. Any field
3625
+ // values previously written by another DlpJob are deleted. [InfoType naming
3626
+ // patterns][google.privacy.dlp.v2.InfoType] are strictly enforced when using
3627
+ // this feature.
3628
+ //
3629
+ // Findings are persisted in Data Catalog storage and are governed by
3630
+ // service-specific policies for Data Catalog. For more information, see
3631
+ // [Service Specific Terms](https://cloud.google.com/terms/service-terms).
3632
+ //
3633
+ // Only a single instance of this action can be specified. This action is
3634
+ // allowed only if all resources being scanned are BigQuery tables.
3341
3635
  // Compatible with: Inspect
3342
3636
  message PublishFindingsToCloudDataCatalog {
3343
3637
 
3344
3638
  }
3345
3639
 
3346
- // Enable email notification to project owners and editors on jobs's
3347
- // completion/failure.
3640
+ // Create a de-identified copy of the requested table or files.
3641
+ //
3642
+ // A TransformationDetail will be created for each transformation.
3643
+ //
3644
+ // If any rows in BigQuery are skipped during de-identification
3645
+ // (transformation errors or row size exceeds BigQuery insert API limits) they
3646
+ // are placed in the failure output table. If the original row exceeds
3647
+ // the BigQuery insert API limit it will be truncated when written to the
3648
+ // failure output table. The failure output table can be set in the
3649
+ // action.deidentify.output.big_query_output.deidentified_failure_output_table
3650
+ // field, if no table is set, a table will be automatically created in the
3651
+ // same project and dataset as the original table.
3652
+ //
3653
+ // Compatible with: Inspect
3654
+ message Deidentify {
3655
+ // User specified deidentify templates and configs for structured,
3656
+ // unstructured, and image files.
3657
+ TransformationConfig transformation_config = 7;
3658
+
3659
+ // Config for storing transformation details. This is separate from the
3660
+ // de-identified content, and contains metadata about the successful
3661
+ // transformations and/or failures that occurred while de-identifying. This
3662
+ // needs to be set in order for users to access information about the status
3663
+ // of each transformation (see
3664
+ // [TransformationDetails][google.privacy.dlp.v2.TransformationDetails]
3665
+ // message for more information about what is noted).
3666
+ TransformationDetailsStorageConfig transformation_details_storage_config = 3;
3667
+
3668
+ oneof output {
3669
+ // Required. User settable Cloud Storage bucket and folders to store de-identified
3670
+ // files. This field must be set for cloud storage deidentification. The
3671
+ // output Cloud Storage bucket must be different from the input bucket.
3672
+ // De-identified files will overwrite files in the output path.
3673
+ //
3674
+ // Form of: gs://bucket/folder/ or gs://bucket
3675
+ string cloud_storage_output = 9 [(google.api.field_behavior) = REQUIRED];
3676
+ }
3677
+
3678
+ // List of user-specified file type groups to transform. If specified, only
3679
+ // the files with these filetypes will be transformed. If empty, all
3680
+ // supported files will be transformed. Supported types may be automatically
3681
+ // added over time. If a file type is set in this field that isn't supported
3682
+ // by the Deidentify action then the job will fail and will not be
3683
+ // successfully created/started. Currently the only filetypes supported are:
3684
+ // IMAGES, TEXT_FILES, CSV, TSV.
3685
+ repeated FileType file_types_to_transform = 8;
3686
+ }
3687
+
3688
+ // Sends an email when the job completes. The email goes to IAM project owners
3689
+ // and technical [Essential
3690
+ // Contacts](https://cloud.google.com/resource-manager/docs/managing-notification-contacts).
3348
3691
  message JobNotificationEmails {
3349
3692
 
3350
3693
  }
@@ -3361,7 +3704,7 @@ message Action {
3361
3704
  // Save resulting findings in a provided location.
3362
3705
  SaveFindings save_findings = 1;
3363
3706
 
3364
- // Publish a notification to a pubsub topic.
3707
+ // Publish a notification to a Pub/Sub topic.
3365
3708
  PublishToPubSub pub_sub = 2;
3366
3709
 
3367
3710
  // Publish summary to Cloud Security Command Center (Alpha).
@@ -3370,6 +3713,9 @@ message Action {
3370
3713
  // Publish findings to Cloud Datahub.
3371
3714
  PublishFindingsToCloudDataCatalog publish_findings_to_cloud_data_catalog = 5;
3372
3715
 
3716
+ // Create a de-identified copy of the input data.
3717
+ Deidentify deidentify = 7;
3718
+
3373
3719
  // Enable email notification for project owners and editors on job's
3374
3720
  // completion/failure.
3375
3721
  JobNotificationEmails job_notification_emails = 8;
@@ -3379,6 +3725,34 @@ message Action {
3379
3725
  }
3380
3726
  }
3381
3727
 
3728
+ // User specified templates and configs for how to deidentify structured,
3729
+ // unstructures, and image files. User must provide either a unstructured
3730
+ // deidentify template or at least one redact image config.
3731
+ message TransformationConfig {
3732
+ // De-identify template.
3733
+ // If this template is specified, it will serve as the default de-identify
3734
+ // template. This template cannot contain `record_transformations` since it
3735
+ // can be used for unstructured content such as free-form text files. If this
3736
+ // template is not set, a default `ReplaceWithInfoTypeConfig` will be used to
3737
+ // de-identify unstructured content.
3738
+ string deidentify_template = 1;
3739
+
3740
+ // Structured de-identify template.
3741
+ // If this template is specified, it will serve as the de-identify template
3742
+ // for structured content such as delimited files and tables. If this template
3743
+ // is not set but the `deidentify_template` is set, then `deidentify_template`
3744
+ // will also apply to the structured content. If neither template is set, a
3745
+ // default `ReplaceWithInfoTypeConfig` will be used to de-identify structured
3746
+ // content.
3747
+ string structured_deidentify_template = 2;
3748
+
3749
+ // Image redact template.
3750
+ // If this template is specified, it will serve as the de-identify template
3751
+ // for images. If this template is not set, all findings in the image will be
3752
+ // redacted with a black box.
3753
+ string image_redact_template = 4;
3754
+ }
3755
+
3382
3756
  // Request message for CreateInspectTemplate.
3383
3757
  message CreateInspectTemplateRequest {
3384
3758
  // Required. Parent resource name.
@@ -3486,7 +3860,7 @@ message ListInspectTemplatesRequest {
3486
3860
  // to `ListInspectTemplates`.
3487
3861
  string page_token = 2;
3488
3862
 
3489
- // Size of the page, can be limited by server. If zero server returns
3863
+ // Size of the page, can be limited by the server. If zero server returns
3490
3864
  // a page of max size 100.
3491
3865
  int32 page_size = 3;
3492
3866
 
@@ -3499,10 +3873,10 @@ message ListInspectTemplatesRequest {
3499
3873
  //
3500
3874
  // Supported fields are:
3501
3875
  //
3502
- // - `create_time`: corresponds to time the template was created.
3503
- // - `update_time`: corresponds to time the template was last updated.
3504
- // - `name`: corresponds to template's name.
3505
- // - `display_name`: corresponds to template's display name.
3876
+ // - `create_time`: corresponds to the time the template was created.
3877
+ // - `update_time`: corresponds to the time the template was last updated.
3878
+ // - `name`: corresponds to the template's name.
3879
+ // - `display_name`: corresponds to the template's display name.
3506
3880
  string order_by = 4;
3507
3881
 
3508
3882
  // Deprecated. This field has no effect.
@@ -3701,11 +4075,11 @@ message ListJobTriggersRequest {
3701
4075
  //
3702
4076
  // Supported fields are:
3703
4077
  //
3704
- // - `create_time`: corresponds to time the JobTrigger was created.
3705
- // - `update_time`: corresponds to time the JobTrigger was last updated.
4078
+ // - `create_time`: corresponds to the time the JobTrigger was created.
4079
+ // - `update_time`: corresponds to the time the JobTrigger was last updated.
3706
4080
  // - `last_run_time`: corresponds to the last time the JobTrigger ran.
3707
- // - `name`: corresponds to JobTrigger's name.
3708
- // - `display_name`: corresponds to JobTrigger's display name.
4081
+ // - `name`: corresponds to the JobTrigger's name.
4082
+ // - `display_name`: corresponds to the JobTrigger's display name.
3709
4083
  // - `status`: corresponds to JobTrigger's status.
3710
4084
  string order_by = 4;
3711
4085
 
@@ -3932,7 +4306,7 @@ message DlpJob {
3932
4306
  // The job is no longer running.
3933
4307
  DONE = 3;
3934
4308
 
3935
- // The job was canceled before it could complete.
4309
+ // The job was canceled before it could be completed.
3936
4310
  CANCELED = 4;
3937
4311
 
3938
4312
  // The job had an error and did not complete.
@@ -3940,7 +4314,7 @@ message DlpJob {
3940
4314
 
3941
4315
  // The job is currently accepting findings via hybridInspect.
3942
4316
  // A hybrid job in ACTIVE state may continue to have findings added to it
3943
- // through calling of hybridInspect. After the job has finished no more
4317
+ // through the calling of hybridInspect. After the job has finished no more
3944
4318
  // calls to hybridInspect may be made. ACTIVE jobs can transition to DONE.
3945
4319
  ACTIVE = 6;
3946
4320
  }
@@ -4026,13 +4400,13 @@ message ListDlpJobsRequest {
4026
4400
  // * Supported fields/values for inspect jobs:
4027
4401
  // - `state` - PENDING|RUNNING|CANCELED|FINISHED|FAILED
4028
4402
  // - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY
4029
- // - `trigger_name` - The resource name of the trigger that created job.
4030
- // - 'end_time` - Corresponds to time the job finished.
4031
- // - 'start_time` - Corresponds to time the job finished.
4403
+ // - `trigger_name` - The name of the trigger that created the job.
4404
+ // - 'end_time` - Corresponds to the time the job finished.
4405
+ // - 'start_time` - Corresponds to the time the job finished.
4032
4406
  // * Supported fields for risk analysis jobs:
4033
4407
  // - `state` - RUNNING|CANCELED|FINISHED|FAILED
4034
- // - 'end_time` - Corresponds to time the job finished.
4035
- // - 'start_time` - Corresponds to time the job finished.
4408
+ // - 'end_time` - Corresponds to the time the job finished.
4409
+ // - 'start_time` - Corresponds to the time the job finished.
4036
4410
  // * The operator must be `=` or `!=`.
4037
4411
  //
4038
4412
  // Examples:
@@ -4063,9 +4437,9 @@ message ListDlpJobsRequest {
4063
4437
  //
4064
4438
  // Supported fields are:
4065
4439
  //
4066
- // - `create_time`: corresponds to time the job was created.
4067
- // - `end_time`: corresponds to time the job ended.
4068
- // - `name`: corresponds to job's name.
4440
+ // - `create_time`: corresponds to the time the job was created.
4441
+ // - `end_time`: corresponds to the time the job ended.
4442
+ // - `name`: corresponds to the job's name.
4069
4443
  // - `state`: corresponds to `state`
4070
4444
  string order_by = 6;
4071
4445
 
@@ -4222,7 +4596,7 @@ message ListDeidentifyTemplatesRequest {
4222
4596
  // to `ListDeidentifyTemplates`.
4223
4597
  string page_token = 2;
4224
4598
 
4225
- // Size of the page, can be limited by server. If zero server returns
4599
+ // Size of the page, can be limited by the server. If zero server returns
4226
4600
  // a page of max size 100.
4227
4601
  int32 page_size = 3;
4228
4602
 
@@ -4235,10 +4609,10 @@ message ListDeidentifyTemplatesRequest {
4235
4609
  //
4236
4610
  // Supported fields are:
4237
4611
  //
4238
- // - `create_time`: corresponds to time the template was created.
4239
- // - `update_time`: corresponds to time the template was last updated.
4240
- // - `name`: corresponds to template's name.
4241
- // - `display_name`: corresponds to template's display name.
4612
+ // - `create_time`: corresponds to the time the template was created.
4613
+ // - `update_time`: corresponds to the time the template was last updated.
4614
+ // - `name`: corresponds to the template's name.
4615
+ // - `display_name`: corresponds to the template's display name.
4242
4616
  string order_by = 4;
4243
4617
 
4244
4618
  // Deprecated. This field has no effect.
@@ -4272,11 +4646,11 @@ message DeleteDeidentifyTemplateRequest {
4272
4646
  // Configuration for a custom dictionary created from a data source of any size
4273
4647
  // up to the maximum size defined in the
4274
4648
  // [limits](https://cloud.google.com/dlp/limits) page. The artifacts of
4275
- // dictionary creation are stored in the specified Google Cloud Storage
4649
+ // dictionary creation are stored in the specified Cloud Storage
4276
4650
  // location. Consider using `CustomInfoType.Dictionary` for smaller dictionaries
4277
4651
  // that satisfy the size requirements.
4278
4652
  message LargeCustomDictionaryConfig {
4279
- // Location to store dictionary artifacts in Google Cloud Storage. These files
4653
+ // Location to store dictionary artifacts in Cloud Storage. These files
4280
4654
  // will only be accessible by project owners and the DLP API. If any of these
4281
4655
  // artifacts are modified, the dictionary is considered invalid and can no
4282
4656
  // longer be used.
@@ -4349,7 +4723,7 @@ message StoredInfoTypeVersion {
4349
4723
  // appearing first.
4350
4724
  //
4351
4725
  // For example, some of the data for stored custom dictionaries is put in
4352
- // the user's Google Cloud Storage bucket, and if this data is modified or
4726
+ // the user's Cloud Storage bucket, and if this data is modified or
4353
4727
  // deleted by the user or another system, the dictionary becomes invalid.
4354
4728
  //
4355
4729
  // If any errors occur, fix the problem indicated by the error message and
@@ -4472,10 +4846,6 @@ message ListStoredInfoTypesRequest {
4472
4846
  // `projects/`<var>PROJECT_ID</var>`/locations/`<var>LOCATION_ID</var>
4473
4847
  // + Projects scope, no location specified (defaults to global):<br/>
4474
4848
  // `projects/`<var>PROJECT_ID</var>
4475
- // + Organizations scope, location specified:<br/>
4476
- // `organizations/`<var>ORG_ID</var>`/locations/`<var>LOCATION_ID</var>
4477
- // + Organizations scope, no location specified (defaults to global):<br/>
4478
- // `organizations/`<var>ORG_ID</var>
4479
4849
  //
4480
4850
  // The following example `parent` string specifies a parent project with the
4481
4851
  // identifier `example-project`, and specifies the `europe-west3` location
@@ -4493,7 +4863,7 @@ message ListStoredInfoTypesRequest {
4493
4863
  // to `ListStoredInfoTypes`.
4494
4864
  string page_token = 2;
4495
4865
 
4496
- // Size of the page, can be limited by server. If zero server returns
4866
+ // Size of the page, can be limited by the server. If zero server returns
4497
4867
  // a page of max size 100.
4498
4868
  int32 page_size = 3;
4499
4869
 
@@ -4506,7 +4876,7 @@ message ListStoredInfoTypesRequest {
4506
4876
  //
4507
4877
  // Supported fields are:
4508
4878
  //
4509
- // - `create_time`: corresponds to time the most recent version of the
4879
+ // - `create_time`: corresponds to the time the most recent version of the
4510
4880
  // resource was created.
4511
4881
  // - `state`: corresponds to the state of the resource.
4512
4882
  // - `name`: corresponds to resource name.
@@ -4750,33 +5120,7 @@ enum StoredInfoTypeState {
4750
5120
  }
4751
5121
 
4752
5122
  // Score is a summary of all elements in the data profile.
4753
- // A higher number means more sensitive.
4754
- message SensitivityScore {
4755
- // Various score levels for resources.
4756
- enum SensitivityScoreLevel {
4757
- // Unused.
4758
- SENSITIVITY_SCORE_UNSPECIFIED = 0;
4759
-
4760
- // No sensitive information detected. Limited access.
4761
- SENSITIVITY_LOW = 10;
4762
-
4763
- // Medium risk - PII, potentially sensitive data, or fields with free-text
4764
- // data that are at higher risk of having intermittent sensitive data.
4765
- // Consider limiting access.
4766
- SENSITIVITY_MODERATE = 20;
4767
-
4768
- // High risk – SPII may be present. Exfiltration of data may lead to user
4769
- // data loss. Re-identification of users may be possible. Consider limiting
4770
- // usage and or removing SPII.
4771
- SENSITIVITY_HIGH = 30;
4772
- }
4773
-
4774
- // The score applied to the resource.
4775
- SensitivityScoreLevel score = 1;
4776
- }
4777
-
4778
- // Score is a summary of all elements in the data profile.
4779
- // A higher number means more risky.
5123
+ // A higher number means more risk.
4780
5124
  message DataRiskLevel {
4781
5125
  // Various score levels for resources.
4782
5126
  enum DataRiskLevelScore {
@@ -4789,8 +5133,8 @@ message DataRiskLevel {
4789
5133
  RISK_LOW = 10;
4790
5134
 
4791
5135
  // Medium risk - Sensitive data may be present but additional access or fine
4792
- // grain access restrictions appears to be present. Consider limiting
4793
- // access even further or transforming data to mask.
5136
+ // grain access restrictions appear to be present. Consider limiting
5137
+ // access even further or transform data to mask.
4794
5138
  RISK_MODERATE = 20;
4795
5139
 
4796
5140
  // High risk – SPII may be present. Access controls may include public
@@ -4947,15 +5291,23 @@ enum EncryptionStatus {
4947
5291
  message InfoTypeSummary {
4948
5292
  // The infoType.
4949
5293
  InfoType info_type = 1;
5294
+
5295
+ // Approximate percentage of non-null rows that contained data detected by
5296
+ // this infotype.
5297
+ int32 estimated_prevalence = 2;
4950
5298
  }
4951
5299
 
4952
5300
  // Infotype details for other infoTypes found within a column.
4953
5301
  message OtherInfoTypeSummary {
4954
5302
  // The other infoType.
4955
5303
  InfoType info_type = 1;
5304
+
5305
+ // Approximate percentage of non-null rows that contained data detected by
5306
+ // this infotype.
5307
+ int32 estimated_prevalence = 2;
4956
5308
  }
4957
5309
 
4958
- // A condition for determining whether a PubSub should be triggered.
5310
+ // A condition for determining whether a Pub/Sub should be triggered.
4959
5311
  message DataProfilePubSubCondition {
4960
5312
  // Various score levels for resources.
4961
5313
  enum ProfileScoreBucket {
@@ -5006,10 +5358,9 @@ message DataProfilePubSubCondition {
5006
5358
  PubSubExpressions expressions = 1;
5007
5359
  }
5008
5360
 
5009
- // The message that will be published to a Pub/Sub topic.
5361
+ // Pub/Sub topic message for a DataProfileAction.PubSubNotification event.
5010
5362
  // To receive a message of protocol buffer schema type, convert the message data
5011
5363
  // to an object of this proto class.
5012
- // https://cloud.google.com/pubsub/docs/samples/pubsub-subscribe-proto-messages
5013
5364
  message DataProfilePubSubMessage {
5014
5365
  // If `DetailLevel` is `TABLE_PROFILE` this will be fully populated.
5015
5366
  // Otherwise, if `DetailLevel` is `RESOURCE_NAME`, then only `name` and