@@ -4897,6 +4897,12 @@ message DataProfileAction {
48974897 ERROR_CHANGED = 4 ;
48984898 }
48994899
4900+ // Message expressing intention to publish to Google Security Operations.
4901+ message PublishToChronicle {}
4902+
4903+ // If set, a summary finding will be created/updated in SCC for each profile.
4904+ message PublishToSecurityCommandCenter {}
4905+
49004906 // If set, attaches the [tags]
49014907 // (https://cloud.google.com/resource-manager/docs/tags/tags-overview)
49024908 // provided to profiled resources. Tags support [access
@@ -4959,6 +4965,15 @@ message DataProfileAction {
49594965 // Publish a message into the Pub/Sub topic.
49604966 PubSubNotification pub_sub_notification = 2 ;
49614967
4968+ // Publishes generated data profiles to Google Security Operations.
4969+ // For more information, see [Use Sensitive Data Protection data in
4970+ // context-aware
4971+ // analytics](https://cloud.google.com/chronicle/docs/detection/usecase-dlp-high-risk-user-download).
4972+ PublishToChronicle publish_to_chronicle = 3 ;
4973+
4974+ // Publishes findings to SCC for each data profile.
4975+ PublishToSecurityCommandCenter publish_to_scc = 4 ;
4976+
49624977 // Tags the profiled resources with the specified tag values.
49634978 TagResources tag_resources = 8 ;
49644979 }
@@ -4980,6 +4995,9 @@ message DataProfileJobConfig {
49804995 // that are profiled, and the Cloud DLP API must be enabled.
49814996 string project_id = 5 ;
49824997
4998+ // Must be set only when scanning other clouds.
4999+ OtherCloudDiscoveryStartingLocation other_cloud_starting_location = 8 ;
5000+
49835001 // Detection logic for profile generation.
49845002 //
49855003 // Not all template features are used by profiles. FindingLimits,
@@ -5144,6 +5162,9 @@ message DiscoveryConfig {
51445162 // Only set when the parent is an org.
51455163 OrgConfig org_config = 2 ;
51465164
5165+ // Must be set only when scanning other clouds.
5166+ OtherCloudDiscoveryStartingLocation other_cloud_starting_location = 12 ;
5167+
51475168 // Detection logic for profile generation.
51485169 //
51495170 // Not all template features are used by Discovery. FindingLimits,
@@ -5210,6 +5231,10 @@ message DiscoveryTarget {
52105231 // Cloud Storage target for Discovery. The first target to match a table
52115232 // will be the one applied.
52125233 CloudStorageDiscoveryTarget cloud_storage_target = 4 ;
5234+
5235+ // Other clouds target for discovery. The first target to match a resource
5236+ // will be the one applied.
5237+ OtherCloudDiscoveryTarget other_cloud_target = 5 ;
52135238 }
52145239}
52155240
@@ -5821,6 +5846,208 @@ message DiscoveryFileStoreConditions {
58215846 }
58225847}
58235848
5849+ // Target used to match against for discovery of resources from other clouds.
5850+ // An [AWS connector in Security Command Center
5851+ // (Enterprise](https://cloud.google.com/security-command-center/docs/connect-scc-to-aws)
5852+ // is required to use this feature.
5853+ message OtherCloudDiscoveryTarget {
5854+ // Required. The type of data profiles generated by this discovery target.
5855+ // Supported values are:
5856+ // * aws/s3/bucket
5857+ DataSourceType data_source_type = 1 [(google.api.field_behavior ) = REQUIRED ];
5858+
5859+ // Required. The resources that the discovery cadence applies to. The
5860+ // first target with a matching filter will be the one to apply to a resource.
5861+ DiscoveryOtherCloudFilter filter = 2 [(google.api.field_behavior ) = REQUIRED ];
5862+
5863+ // Optional. In addition to matching the filter, these conditions must be true
5864+ // before a profile is generated.
5865+ DiscoveryOtherCloudConditions conditions = 3
5866+ [(google.api.field_behavior ) = OPTIONAL ];
5867+
5868+ // Type of cadence.
5869+ oneof cadence {
5870+ // How often and when to update data profiles. New resources that match both
5871+ // the filter and conditions are scanned as quickly as possible depending on
5872+ // system capacity.
5873+ DiscoveryOtherCloudGenerationCadence generation_cadence = 4 ;
5874+
5875+ // Disable profiling for resources that match this filter.
5876+ Disabled disabled = 5 ;
5877+ }
5878+ }
5879+
5880+ // Determines which resources from the other cloud will have profiles generated.
5881+ // Includes the ability to filter by resource names.
5882+ message DiscoveryOtherCloudFilter {
5883+ // Whether the filter applies to a specific set of resources or all
5884+ // other resources. The first filter to match will be applied, regardless of
5885+ // the condition. Defaults to `others` if none is set.
5886+ oneof filter {
5887+ // A collection of resources for this filter to apply to.
5888+ OtherCloudResourceCollection collection = 1 ;
5889+
5890+ // The resource to scan. Configs using this filter can only have one target
5891+ // (the target with this single resource reference).
5892+ OtherCloudSingleResourceReference single_resource = 2 ;
5893+
5894+ // Optional. Catch-all. This should always be the last target in the list
5895+ // because anything above it will apply first. Should only appear once in a
5896+ // configuration. If none is specified, a default one will be added
5897+ // automatically.
5898+ AllOtherResources others = 100 [(google.api.field_behavior ) = OPTIONAL ];
5899+ }
5900+ }
5901+
5902+ // Match resources using regex filters.
5903+ message OtherCloudResourceCollection {
5904+ // The first filter containing a pattern that matches a resource will be used.
5905+ oneof pattern {
5906+ // A collection of regular expressions to match a resource against.
5907+ OtherCloudResourceRegexes include_regexes = 1 ;
5908+ }
5909+ }
5910+
5911+ // A collection of regular expressions to determine what resources to match
5912+ // against.
5913+ message OtherCloudResourceRegexes {
5914+ // A group of regular expression patterns to match against one or more
5915+ // resources.
5916+ // Maximum of 100 entries. The sum of all regular expression's length can't
5917+ // exceed 10 KiB.
5918+ repeated OtherCloudResourceRegex patterns = 1 ;
5919+ }
5920+
5921+ // A pattern to match against one or more resources. At least one pattern must
5922+ // be specified. Regular expressions use RE2
5923+ // [syntax](https://github.com/google/re2/wiki/Syntax); a guide can be found
5924+ // under the google/re2 repository on GitHub.
5925+ message OtherCloudResourceRegex {
5926+ // The type of resource regex to use.
5927+ oneof resource_regex {
5928+ // Regex for Amazon S3 buckets.
5929+ AmazonS3BucketRegex amazon_s3_bucket_regex = 1 ;
5930+ }
5931+ }
5932+
5933+ // AWS account regex.
5934+ message AwsAccountRegex {
5935+ // Optional. Regex to test the AWS account ID against.
5936+ // If empty, all accounts match.
5937+ string account_id_regex = 1 [(google.api.field_behavior ) = OPTIONAL ];
5938+ }
5939+
5940+ // Amazon S3 bucket regex.
5941+ message AmazonS3BucketRegex {
5942+ // The AWS account regex.
5943+ AwsAccountRegex aws_account_regex = 1 ;
5944+
5945+ // Optional. Regex to test the bucket name against.
5946+ // If empty, all buckets match.
5947+ string bucket_name_regex = 2 [(google.api.field_behavior ) = OPTIONAL ];
5948+ }
5949+
5950+ // Identifies a single resource, like a single Amazon S3 bucket.
5951+ message OtherCloudSingleResourceReference {
5952+ // The resource to scan.
5953+ oneof resource {
5954+ // Amazon S3 bucket.
5955+ AmazonS3Bucket amazon_s3_bucket = 1 ;
5956+ }
5957+ }
5958+
5959+ // AWS account.
5960+ message AwsAccount {
5961+ // Required. AWS account ID.
5962+ string account_id = 1 [(google.api.field_behavior ) = REQUIRED ];
5963+ }
5964+
5965+ // Amazon S3 bucket.
5966+ message AmazonS3Bucket {
5967+ // The AWS account.
5968+ AwsAccount aws_account = 1 ;
5969+
5970+ // Required. The bucket name.
5971+ string bucket_name = 2 [(google.api.field_behavior ) = REQUIRED ];
5972+ }
5973+
5974+ // Requirements that must be true before a resource is profiled for the first
5975+ // time.
5976+ message DiscoveryOtherCloudConditions {
5977+ // Minimum age a resource must be before Cloud DLP can profile it. Value must
5978+ // be 1 hour or greater.
5979+ google.protobuf.Duration min_age = 1 ;
5980+
5981+ // The conditions to apply.
5982+ oneof conditions {
5983+ // Amazon S3 bucket conditions.
5984+ AmazonS3BucketConditions amazon_s3_bucket_conditions = 2 ;
5985+ }
5986+ }
5987+
5988+ // Amazon S3 bucket conditions.
5989+ message AmazonS3BucketConditions {
5990+ // Supported Amazon S3 bucket types.
5991+ // Defaults to TYPE_ALL_SUPPORTED.
5992+ enum BucketType {
5993+ // Unused.
5994+ TYPE_UNSPECIFIED = 0 ;
5995+
5996+ // All supported classes.
5997+ TYPE_ALL_SUPPORTED = 1 ;
5998+
5999+ // A general purpose Amazon S3 bucket.
6000+ TYPE_GENERAL_PURPOSE = 2 ;
6001+ }
6002+
6003+ // Supported Amazon S3 object storage classes.
6004+ // Defaults to ALL_SUPPORTED_CLASSES.
6005+ enum ObjectStorageClass {
6006+ // Unused.
6007+ UNSPECIFIED = 0 ;
6008+
6009+ // All supported classes.
6010+ ALL_SUPPORTED_CLASSES = 1 ;
6011+
6012+ // Standard object class.
6013+ STANDARD = 2 ;
6014+
6015+ // Standard - infrequent access object class.
6016+ STANDARD_INFREQUENT_ACCESS = 4 ;
6017+
6018+ // Glacier - instant retrieval object class.
6019+ GLACIER_INSTANT_RETRIEVAL = 6 ;
6020+
6021+ // Objects in the S3 Intelligent-Tiering access tiers.
6022+ INTELLIGENT_TIERING = 7 ;
6023+ }
6024+
6025+ // Optional. Bucket types that should be profiled.
6026+ // Optional. Defaults to TYPE_ALL_SUPPORTED if unspecified.
6027+ repeated BucketType bucket_types = 1 [(google.api.field_behavior ) = OPTIONAL ];
6028+
6029+ // Optional. Object classes that should be profiled.
6030+ // Optional. Defaults to ALL_SUPPORTED_CLASSES if unspecified.
6031+ repeated ObjectStorageClass object_storage_classes = 2
6032+ [(google.api.field_behavior ) = OPTIONAL ];
6033+ }
6034+
6035+ // How often existing resources should have their profiles refreshed.
6036+ // New resources are scanned as quickly as possible depending on system
6037+ // capacity.
6038+ message DiscoveryOtherCloudGenerationCadence {
6039+ // Optional. Frequency to update profiles regardless of whether the underlying
6040+ // resource has changes. Defaults to never.
6041+ DataProfileUpdateFrequency refresh_frequency = 1
6042+ [(google.api.field_behavior ) = OPTIONAL ];
6043+
6044+ // Optional. Governs when to update data profiles when the inspection rules
6045+ // defined by the `InspectTemplate` change.
6046+ // If not set, changing the template will not cause a data profile to update.
6047+ DiscoveryInspectTemplateModifiedCadence inspect_template_modified_cadence = 2
6048+ [(google.api.field_behavior ) = OPTIONAL ];
6049+ }
6050+
58246051// The location to begin a discovery scan. Denotes an organization ID or folder
58256052// ID within an organization.
58266053message DiscoveryStartingLocation {
@@ -5834,6 +6061,31 @@ message DiscoveryStartingLocation {
58346061 }
58356062}
58366063
6064+ // The other cloud starting location for discovery.
6065+ message OtherCloudDiscoveryStartingLocation {
6066+ // The AWS starting location for discovery.
6067+ message AwsDiscoveryStartingLocation {
6068+ // The scope of this starting location.
6069+ oneof scope {
6070+ // The AWS account ID that this discovery config applies to.
6071+ // Within an AWS organization, you can find the AWS account ID inside an
6072+ // AWS account ARN. Example:
6073+ // arn:{partition}:organizations::{management_account_id}:account/{org_id}/{account_id}
6074+ string account_id = 2 ;
6075+
6076+ // All AWS assets stored in Asset Inventory that didn't match other AWS
6077+ // discovery configs.
6078+ bool all_asset_inventory_assets = 3 ;
6079+ }
6080+ }
6081+
6082+ // The other cloud starting location for discovery.
6083+ oneof location {
6084+ // The AWS starting location for discovery.
6085+ AwsDiscoveryStartingLocation aws_location = 1 ;
6086+ }
6087+ }
6088+
58376089// Match discovery resources not covered by any other filter.
58386090message AllOtherResources {}
58396091
@@ -6946,7 +7198,7 @@ message ProjectDataProfile {
69467198 // The resource name of the profile.
69477199 string name = 1 ;
69487200
6949- // Project ID that was profiled.
7201+ // Project ID or account that was profiled.
69507202 string project_id = 2 ;
69517203
69527204 // The last time the profile was generated.
@@ -7364,6 +7616,7 @@ message ColumnDataProfile {
73647616// The profile for a file store.
73657617//
73667618// * Cloud Storage: maps 1:1 with a bucket.
7619+ // * Amazon S3: maps 1:1 with a bucket.
73677620message FileStoreDataProfile {
73687621 option (google.api.resource ) = {
73697622 type : "dlp.googleapis.com/FileStoreDataProfile"
@@ -7396,12 +7649,15 @@ message FileStoreDataProfile {
73967649 string project_data_profile = 3 ;
73977650
73987651 // The Google Cloud project ID that owns the resource.
7652+ // For Amazon S3 buckets, this is the AWS Account Id.
73997653 string project_id = 4 ;
74007654
74017655 // The location of the file store.
74027656 //
74037657 // * Cloud Storage:
74047658 // https://cloud.google.com/storage/docs/locations#available-locations
7659+ // * Amazon S3:
7660+ // https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints
74057661 string file_store_location = 5 ;
74067662
74077663 // For resources that have multiple storage locations, these are those
@@ -7419,10 +7675,14 @@ message FileStoreDataProfile {
74197675 // The file store path.
74207676 //
74217677 // * Cloud Storage: `gs://{bucket}`
7678+ // * Amazon S3: `s3://{bucket}`
74227679 string file_store_path = 6 ;
74237680
74247681 // The resource name of the resource profiled.
74257682 // https://cloud.google.com/apis/design/resource_names#full_resource_name
7683+ //
7684+ // Example format of an S3 bucket full resource name:
7685+ // `//cloudasset.googleapis.com/organizations/{org_id}/otherCloudConnections/aws/arn:aws:s3:::{bucket_name}`
74267686 string full_resource = 24 ;
74277687
74287688 // The snapshot of the configurations used to generate the profile.
@@ -7599,6 +7859,7 @@ message ListFileStoreDataProfilesRequest {
75997859 // * A restriction has the form of `{field} {operator} {value}`.
76007860 // * Supported fields/values:
76017861 // - `project_id` - The Google Cloud project ID.
7862+ // - `account_id` - The AWS account ID.
76027863 // - `file_store_path` - The path like "gs://bucket".
76037864 // - `data_source_type` - The profile's data source type, like
76047865 // "google/storage/bucket".
@@ -7995,7 +8256,12 @@ message DeleteTableDataProfileRequest {
79958256// Message used to identify the type of resource being profiled.
79968257message DataSourceType {
79978258 // Output only. An identifying string to the type of resource being profiled.
7998- // Current values: google/bigquery/table, google/project
8259+ // Current values:
8260+ //
8261+ // * google/bigquery/table
8262+ // * google/project
8263+ // * google/sql/table
8264+ // * google/gcs/bucket
79998265 string data_source = 1 [(google.api.field_behavior ) = OUTPUT_ONLY ];
80008266}
80018267
0 commit comments