@google-cloud/dlp 3.4.0 → 3.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.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,13 @@
4
4
 
5
5
  [1]: https://www.npmjs.com/package/PACKAGE NAME?activeTab=versions
6
6
 
7
+ ## [3.5.0](https://github.com/googleapis/nodejs-dlp/compare/v3.4.0...v3.5.0) (2022-04-01)
8
+
9
+
10
+ ### Features
11
+
12
+ * add DataProfilePubSubMessage supporting pub/sub integration ([#695](https://github.com/googleapis/nodejs-dlp/issues/695)) ([918b6cd](https://github.com/googleapis/nodejs-dlp/commit/918b6cd8ba8669e7c029ae7b4d3d01858121b9f6))
13
+
7
14
  ## [3.4.0](https://github.com/googleapis/nodejs-dlp/compare/v3.3.0...v3.4.0) (2022-03-25)
8
15
 
9
16
 
@@ -3586,6 +3586,134 @@ message InspectJobConfig {
3586
3586
  repeated Action actions = 4;
3587
3587
  }
3588
3588
 
3589
+ // A task to execute when a data profile has been generated.
3590
+ message DataProfileAction {
3591
+ // If set, the detailed data profiles will be persisted to the location
3592
+ // of your choice whenever updated.
3593
+ message Export {
3594
+ // Store all table and column profiles in an existing table or a new table
3595
+ // in an existing dataset. Each re-generation will result in a new row in
3596
+ // BigQuery.
3597
+ BigQueryTable profile_table = 1;
3598
+ }
3599
+
3600
+ // Send a Pub/Sub message into the given Pub/Sub topic to connect other
3601
+ // systems to data profile generation. The message payload data will
3602
+ // be the byte serialization of `DataProfilePubSubMessage`.
3603
+ message PubSubNotification {
3604
+ // The levels of detail that can be included in the Pub/Sub message.
3605
+ enum DetailLevel {
3606
+ // Unused.
3607
+ DETAIL_LEVEL_UNSPECIFIED = 0;
3608
+
3609
+ // The full table data profile.
3610
+ TABLE_PROFILE = 1;
3611
+
3612
+ // The resource name of the table.
3613
+ RESOURCE_NAME = 2;
3614
+ }
3615
+
3616
+ // Cloud Pub/Sub topic to send notifications to.
3617
+ // Format is projects/{project}/topics/{topic}.
3618
+ string topic = 1;
3619
+
3620
+ // The type of event that triggers a Pub/Sub. At most one
3621
+ // `PubSubNotification` per EventType is permitted.
3622
+ EventType event = 2;
3623
+
3624
+ // Conditions (e.g., data risk or sensitivity level) for triggering a
3625
+ // Pub/Sub.
3626
+ DataProfilePubSubCondition pubsub_condition = 3;
3627
+
3628
+ // How much data to include in the Pub/Sub message. If the user wishes to
3629
+ // limit the size of the message, they can use resource_name and fetch the
3630
+ // profile fields they wish to. Per table profile (not per column).
3631
+ DetailLevel detail_of_message = 4;
3632
+ }
3633
+
3634
+ // Types of event that can trigger an action.
3635
+ enum EventType {
3636
+ // Unused.
3637
+ EVENT_TYPE_UNSPECIFIED = 0;
3638
+
3639
+ // New profile (not a re-profile).
3640
+ NEW_PROFILE = 1;
3641
+
3642
+ // Changed one of the following profile metrics:
3643
+ // * Table data risk score
3644
+ // * Table sensitivity score
3645
+ // * Table resource visibility
3646
+ // * Table encryption type
3647
+ // * Table predicted infoTypes
3648
+ // * Table other infoTypes
3649
+ CHANGED_PROFILE = 2;
3650
+
3651
+ // Table data risk score or sensitivity score increased.
3652
+ SCORE_INCREASED = 3;
3653
+
3654
+ // A user (non-internal) error occurred.
3655
+ ERROR_CHANGED = 4;
3656
+ }
3657
+
3658
+ oneof action {
3659
+ // Export data profiles into a provided location.
3660
+ Export export_data = 1;
3661
+
3662
+ // Publish a message into the Pub/Sub topic.
3663
+ PubSubNotification pub_sub_notification = 2;
3664
+ }
3665
+ }
3666
+
3667
+ // Configuration for setting up a job to scan resources for profile generation.
3668
+ // Only one data profile configuration may exist per organization, folder,
3669
+ // or project.
3670
+ //
3671
+ // The generated data profiles are retained according to the
3672
+ // [data retention policy]
3673
+ // (https://cloud.google.com/dlp/docs/data-profiles#retention).
3674
+ message DataProfileJobConfig {
3675
+ // The data to scan.
3676
+ DataProfileLocation location = 1;
3677
+
3678
+ // The project that will run the scan. The DLP service
3679
+ // account that exists within this project must have access to all resources
3680
+ // that are profiled, and the Cloud DLP API must be enabled.
3681
+ string project_id = 5;
3682
+
3683
+ // Detection logic for profile generation.
3684
+ //
3685
+ // Not all template features are used by profiles. FindingLimits,
3686
+ // include_quote and exclude_info_types have no impact on
3687
+ // data profiling.
3688
+ //
3689
+ // Multiple templates may be provided if there is data in multiple regions.
3690
+ // At most one template must be specified per-region (including "global").
3691
+ // Each region is scanned using the applicable template. If no region-specific
3692
+ // template is specified, but a "global" template is specified, it will be
3693
+ // copied to that region and used instead. If no global or region-specific
3694
+ // template is provided for a region with data, that region's data will not be
3695
+ // scanned.
3696
+ //
3697
+ // For more information, see
3698
+ // https://cloud.google.com/dlp/docs/data-profiles#data_residency.
3699
+ repeated string inspect_templates = 7;
3700
+
3701
+ // Actions to execute at the completion of the job.
3702
+ repeated DataProfileAction data_profile_actions = 6;
3703
+ }
3704
+
3705
+ // The data that will be profiled.
3706
+ message DataProfileLocation {
3707
+ // The location to be scanned.
3708
+ oneof location {
3709
+ // The ID of an organization to scan.
3710
+ int64 organization_id = 1;
3711
+
3712
+ // The ID of the Folder within an organization to scan.
3713
+ int64 folder_id = 2;
3714
+ }
3715
+ }
3716
+
3589
3717
  // Combines all of the information about a DLP job.
3590
3718
  message DlpJob {
3591
3719
  option (google.api.resource) = {
@@ -4425,3 +4553,274 @@ enum StoredInfoTypeState {
4425
4553
  // use the `UpdateStoredInfoType` method to create a new version.
4426
4554
  INVALID = 4;
4427
4555
  }
4556
+
4557
+ // Score is a summary of all elements in the data profile.
4558
+ // A higher number means more sensitive.
4559
+ message SensitivityScore {
4560
+ // Various score levels for resources.
4561
+ enum SensitivityScoreLevel {
4562
+ // Unused.
4563
+ SENSITIVITY_SCORE_UNSPECIFIED = 0;
4564
+
4565
+ // No sensitive information detected. Limited access.
4566
+ SENSITIVITY_LOW = 10;
4567
+
4568
+ // Medium risk - PII, potentially sensitive data, or fields with free-text
4569
+ // data that are at higher risk of having intermittent sensitive data.
4570
+ // Consider limiting access.
4571
+ SENSITIVITY_MODERATE = 20;
4572
+
4573
+ // High risk – SPII may be present. Exfiltration of data may lead to user
4574
+ // data loss. Re-identification of users may be possible. Consider limiting
4575
+ // usage and or removing SPII.
4576
+ SENSITIVITY_HIGH = 30;
4577
+ }
4578
+
4579
+ // The score applied to the resource.
4580
+ SensitivityScoreLevel score = 1;
4581
+ }
4582
+
4583
+ // Score is a summary of all elements in the data profile.
4584
+ // A higher number means more risky.
4585
+ message DataRiskLevel {
4586
+ // Various score levels for resources.
4587
+ enum DataRiskLevelScore {
4588
+ // Unused.
4589
+ RISK_SCORE_UNSPECIFIED = 0;
4590
+
4591
+ // Low risk - Lower indication of sensitive data that appears to have
4592
+ // additional access restrictions in place or no indication of sensitive
4593
+ // data found.
4594
+ RISK_LOW = 10;
4595
+
4596
+ // Medium risk - Sensitive data may be present but additional access or fine
4597
+ // grain access restrictions appears to be present. Consider limiting
4598
+ // access even further or transforming data to mask.
4599
+ RISK_MODERATE = 20;
4600
+
4601
+ // High risk – SPII may be present. Access controls may include public
4602
+ // ACLs. Exfiltration of data may lead to user data loss. Re-identification
4603
+ // of users may be possible. Consider limiting usage and or removing SPII.
4604
+ RISK_HIGH = 30;
4605
+ }
4606
+
4607
+ // The score applied to the resource.
4608
+ DataRiskLevelScore score = 1;
4609
+ }
4610
+
4611
+ // How broadly a resource has been shared. New items may be added over time.
4612
+ // A higher number means more restricted.
4613
+ enum ResourceVisibility {
4614
+ // Unused.
4615
+ RESOURCE_VISIBILITY_UNSPECIFIED = 0;
4616
+
4617
+ // Visible to any user.
4618
+ RESOURCE_VISIBILITY_PUBLIC = 10;
4619
+
4620
+ // Visible only to specific users.
4621
+ RESOURCE_VISIBILITY_RESTRICTED = 20;
4622
+ }
4623
+
4624
+ // Snapshot of the configurations used to generate the profile.
4625
+ message DataProfileConfigSnapshot {
4626
+ // A copy of the inspection config used to generate this profile. This
4627
+ // is a copy of the inspect_template specified in `DataProfileJobConfig`.
4628
+ InspectConfig inspect_config = 2;
4629
+
4630
+ // A copy of the configuration used to generate this profile.
4631
+ DataProfileJobConfig data_profile_job = 3;
4632
+ }
4633
+
4634
+ // The profile for a scanned table.
4635
+ message TableDataProfile {
4636
+ // Possible states of a profile. New items may be added.
4637
+ enum State {
4638
+ // Unused.
4639
+ STATE_UNSPECIFIED = 0;
4640
+
4641
+ // The profile is currently running. Once a profile has finished it will
4642
+ // transition to DONE.
4643
+ RUNNING = 1;
4644
+
4645
+ // The profile is no longer generating.
4646
+ // If profile_status.status.code is 0, the profile succeeded, otherwise, it
4647
+ // failed.
4648
+ DONE = 2;
4649
+ }
4650
+
4651
+ // The name of the profile.
4652
+ string name = 1;
4653
+
4654
+ // The resource name to the project data profile for this table.
4655
+ string project_data_profile = 2;
4656
+
4657
+ // The GCP project ID that owns the BigQuery dataset.
4658
+ string dataset_project_id = 24;
4659
+
4660
+ // The BigQuery location where the dataset's data is stored.
4661
+ // See https://cloud.google.com/bigquery/docs/locations for supported
4662
+ // locations.
4663
+ string dataset_location = 29;
4664
+
4665
+ // The BigQuery dataset ID.
4666
+ string dataset_id = 25;
4667
+
4668
+ // The BigQuery table ID.
4669
+ string table_id = 26;
4670
+
4671
+ // The resource name of the table.
4672
+ // https://cloud.google.com/apis/design/resource_names#full_resource_name
4673
+ string full_resource = 3;
4674
+
4675
+ // Success or error status from the most recent profile generation attempt.
4676
+ // May be empty if the profile is still being generated.
4677
+ ProfileStatus profile_status = 21;
4678
+
4679
+ // State of a profile.
4680
+ State state = 22;
4681
+
4682
+ // The sensitivity score of this table.
4683
+ SensitivityScore sensitivity_score = 5;
4684
+
4685
+ // The data risk level of this table.
4686
+ DataRiskLevel data_risk_level = 6;
4687
+
4688
+ // The infoTypes predicted from this table's data.
4689
+ repeated InfoTypeSummary predicted_info_types = 27;
4690
+
4691
+ // Other infoTypes found in this table's data.
4692
+ repeated OtherInfoTypeSummary other_info_types = 28;
4693
+
4694
+ // The snapshot of the configurations used to generate the profile.
4695
+ DataProfileConfigSnapshot config_snapshot = 7;
4696
+
4697
+ // The time when this table was last modified
4698
+ google.protobuf.Timestamp last_modified_time = 8;
4699
+
4700
+ // Optional. The time when this table expires.
4701
+ google.protobuf.Timestamp expiration_time = 9;
4702
+
4703
+ // The number of columns profiled in the table.
4704
+ int64 scanned_column_count = 10;
4705
+
4706
+ // The number of columns skipped in the table because of an error.
4707
+ int64 failed_column_count = 11;
4708
+
4709
+ // The size of the table when the profile was generated.
4710
+ int64 table_size_bytes = 12;
4711
+
4712
+ // Number of rows in the table when the profile was generated.
4713
+ int64 row_count = 13;
4714
+
4715
+ // How the table is encrypted.
4716
+ EncryptionStatus encryption_status = 14;
4717
+
4718
+ // How broadly a resource has been shared.
4719
+ ResourceVisibility resource_visibility = 15;
4720
+
4721
+ // The last time the profile was generated.
4722
+ google.protobuf.Timestamp profile_last_generated = 16;
4723
+
4724
+ // The labels applied to the resource at the time the profile was generated.
4725
+ map<string, string> resource_labels = 17;
4726
+
4727
+ // The time at which the table was created.
4728
+ google.protobuf.Timestamp create_time = 23;
4729
+ }
4730
+
4731
+ message ProfileStatus {
4732
+ // Profiling status code and optional message
4733
+ google.rpc.Status status = 1;
4734
+
4735
+ // Time when the profile generation status was updated
4736
+ google.protobuf.Timestamp timestamp = 3;
4737
+ }
4738
+
4739
+ // How a resource is encrypted.
4740
+ enum EncryptionStatus {
4741
+ // Unused.
4742
+ ENCRYPTION_STATUS_UNSPECIFIED = 0;
4743
+
4744
+ // Google manages server-side encryption keys on your behalf.
4745
+ ENCRYPTION_GOOGLE_MANAGED = 1;
4746
+
4747
+ // Customer provides the key.
4748
+ ENCRYPTION_CUSTOMER_MANAGED = 2;
4749
+ }
4750
+
4751
+ // The infoType details for this column.
4752
+ message InfoTypeSummary {
4753
+ // The infoType.
4754
+ InfoType info_type = 1;
4755
+ }
4756
+
4757
+ // Infotype details for other infoTypes found within a column.
4758
+ message OtherInfoTypeSummary {
4759
+ // The other infoType.
4760
+ InfoType info_type = 1;
4761
+ }
4762
+
4763
+ // A condition for determining whether a PubSub should be triggered.
4764
+ message DataProfilePubSubCondition {
4765
+ // Various score levels for resources.
4766
+ enum ProfileScoreBucket {
4767
+ // Unused.
4768
+ PROFILE_SCORE_BUCKET_UNSPECIFIED = 0;
4769
+
4770
+ // High risk/sensitivity detected.
4771
+ HIGH = 1;
4772
+
4773
+ // Medium or high risk/sensitivity detected.
4774
+ MEDIUM_OR_HIGH = 2;
4775
+ }
4776
+
4777
+ // A condition consisting of a value.
4778
+ message PubSubCondition {
4779
+ // The value for the condition to trigger.
4780
+ oneof value {
4781
+ // The minimum data risk score that triggers the condition.
4782
+ ProfileScoreBucket minimum_risk_score = 1;
4783
+
4784
+ // The minimum sensitivity level that triggers the condition.
4785
+ ProfileScoreBucket minimum_sensitivity_score = 2;
4786
+ }
4787
+ }
4788
+
4789
+ // An expression, consisting of an operator and conditions.
4790
+ message PubSubExpressions {
4791
+ // Logical operators for conditional checks.
4792
+ enum PubSubLogicalOperator {
4793
+ // Unused.
4794
+ LOGICAL_OPERATOR_UNSPECIFIED = 0;
4795
+
4796
+ // Conditional OR.
4797
+ OR = 1;
4798
+
4799
+ // Conditional AND.
4800
+ AND = 2;
4801
+ }
4802
+
4803
+ // The operator to apply to the collection of conditions.
4804
+ PubSubLogicalOperator logical_operator = 1;
4805
+
4806
+ // Conditions to apply to the expression.
4807
+ repeated PubSubCondition conditions = 2;
4808
+ }
4809
+
4810
+ // An expression.
4811
+ PubSubExpressions expressions = 1;
4812
+ }
4813
+
4814
+ // The message that will be published to a Pub/Sub topic.
4815
+ // To receive a message of protocol buffer schema type, convert the message data
4816
+ // to an object of this proto class.
4817
+ // https://cloud.google.com/pubsub/docs/samples/pubsub-subscribe-proto-messages
4818
+ message DataProfilePubSubMessage {
4819
+ // If `DetailLevel` is `TABLE_PROFILE` this will be fully populated.
4820
+ // Otherwise, if `DetailLevel` is `RESOURCE_NAME`, then only `name` and
4821
+ // `full_resource` will be populated.
4822
+ TableDataProfile profile = 1;
4823
+
4824
+ // The event that caused the Pub/Sub message to be sent.
4825
+ DataProfileAction.EventType event = 2;
4826
+ }