From 62c9cb879066162b9f30879cfa63de63ff27c63d Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Tue, 6 Dec 2022 08:28:39 -0500 Subject: [PATCH] feat: add kernel_rootkit field to finding's list of attributes (#413) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add kernel_rootkit field to finding's list of attributes docs: miscellaneous style improvements PiperOrigin-RevId: 493119809 Source-Link: https://github.com/googleapis/googleapis/commit/6aff6786b511f8faaf2fd2288385f4ffc1e33d3c Source-Link: https://github.com/googleapis/googleapis-gen/commit/ee521940a017f393fce7731e4c22a43aff6b000e Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZWU1MjE5NDBhMDE3ZjM5M2ZjZTc3MzFlNGMyMmE0M2FmZjZiMDAwZSJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md Co-authored-by: Owl Bot --- google/cloud/securitycenter/__init__.py | 2 + google/cloud/securitycenter_v1/__init__.py | 2 + .../services/security_center/async_client.py | 68 +++++++----- .../services/security_center/client.py | 68 +++++++----- .../security_center/transports/grpc.py | 6 +- .../transports/grpc_asyncio.py | 6 +- .../cloud/securitycenter_v1/types/__init__.py | 2 + .../types/external_system.py | 9 +- .../cloud/securitycenter_v1/types/finding.py | 12 +- .../securitycenter_v1/types/kernel_rootkit.py | 104 ++++++++++++++++++ .../types/notification_config.py | 5 +- .../types/securitycenter_service.py | 67 ++++++----- securitycenter-v1-py.tar.gz | Bin 0 -> 49152 bytes .../securitycenter_v1/test_security_center.py | 1 + 14 files changed, 250 insertions(+), 102 deletions(-) create mode 100644 google/cloud/securitycenter_v1/types/kernel_rootkit.py create mode 100644 securitycenter-v1-py.tar.gz diff --git a/google/cloud/securitycenter/__init__.py b/google/cloud/securitycenter/__init__.py index 39833c6b..0605464d 100644 --- a/google/cloud/securitycenter/__init__.py +++ b/google/cloud/securitycenter/__init__.py @@ -46,6 +46,7 @@ from google.cloud.securitycenter_v1.types.folder import Folder from google.cloud.securitycenter_v1.types.iam_binding import IamBinding from google.cloud.securitycenter_v1.types.indicator import Indicator +from google.cloud.securitycenter_v1.types.kernel_rootkit import KernelRootkit from google.cloud.securitycenter_v1.types.kubernetes import Kubernetes from google.cloud.securitycenter_v1.types.label import Label from google.cloud.securitycenter_v1.types.mitre_attack import MitreAttack @@ -138,6 +139,7 @@ "Folder", "IamBinding", "Indicator", + "KernelRootkit", "Kubernetes", "Label", "MitreAttack", diff --git a/google/cloud/securitycenter_v1/__init__.py b/google/cloud/securitycenter_v1/__init__.py index df18a2e7..0152ba9b 100644 --- a/google/cloud/securitycenter_v1/__init__.py +++ b/google/cloud/securitycenter_v1/__init__.py @@ -34,6 +34,7 @@ from .types.folder import Folder from .types.iam_binding import IamBinding from .types.indicator import Indicator +from .types.kernel_rootkit import KernelRootkit from .types.kubernetes import Kubernetes from .types.label import Label from .types.mitre_attack import MitreAttack @@ -136,6 +137,7 @@ "GroupResult", "IamBinding", "Indicator", + "KernelRootkit", "Kubernetes", "Label", "ListAssetsRequest", diff --git a/google/cloud/securitycenter_v1/services/security_center/async_client.py b/google/cloud/securitycenter_v1/services/security_center/async_client.py index d9e77b6c..6208332f 100644 --- a/google/cloud/securitycenter_v1/services/security_center/async_client.py +++ b/google/cloud/securitycenter_v1/services/security_center/async_client.py @@ -62,6 +62,7 @@ from google.cloud.securitycenter_v1.types import ( iam_binding, indicator, + kernel_rootkit, kubernetes, mitre_attack, ) @@ -871,9 +872,9 @@ async def sample_create_notification_config(): Required. Unique identifier provided by the client within the parent scope. It must be - between 1 and 128 characters, and - contains alphanumeric characters, - underscores or hyphens only. + between 1 and 128 characters and contain + alphanumeric characters, underscores, or + hyphens only. This corresponds to the ``config_id`` field on the ``request`` instance; if ``request`` is provided, this @@ -1086,7 +1087,10 @@ async def sample_delete_notification_config(): name (:class:`str`): Required. Name of the notification config to delete. Its format is - "organizations/[organization_id]/notificationConfigs/[config_id]". + "organizations/[organization_id]/notificationConfigs/[config_id]", + "folders/[folder_id]/notificationConfigs/[config_id]", + or + "projects/[project_id]/notificationConfigs/[config_id]". This corresponds to the ``name`` field on the ``request`` instance; if ``request`` is provided, this @@ -1147,7 +1151,7 @@ async def get_big_query_export( timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> bigquery_export.BigQueryExport: - r"""Gets a big query export. + r"""Gets a BigQuery export. .. code-block:: python @@ -1177,10 +1181,10 @@ async def sample_get_big_query_export(): Args: request (Optional[Union[google.cloud.securitycenter_v1.types.GetBigQueryExportRequest, dict]]): - The request object. Request message for retrieving a big - query export. + The request object. Request message for retrieving a + BigQuery export. name (:class:`str`): - Required. Name of the big query export to retrieve. Its + Required. Name of the BigQuery export to retrieve. Its format is organizations/{organization}/bigQueryExports/{export_id}, folders/{folder}/bigQueryExports/{export_id}, or @@ -1574,7 +1578,10 @@ async def sample_get_notification_config(): name (:class:`str`): Required. Name of the notification config to get. Its format is - "organizations/[organization_id]/notificationConfigs/[config_id]". + "organizations/[organization_id]/notificationConfigs/[config_id]", + "folders/[folder_id]/notificationConfigs/[config_id]", + or + "projects/[project_id]/notificationConfigs/[config_id]". This corresponds to the ``name`` field on the ``request`` instance; if ``request`` is provided, this @@ -2526,8 +2533,8 @@ async def sample_list_notification_configs(): The request object. Request message for listing notification configs. parent (:class:`str`): - Required. Name of the organization to list notification - configs. Its format is + Required. The name of the parent in which to list the + notification configurations. Its format is "organizations/[organization_id]", "folders/[folder_id]", or "projects/[project_id]". @@ -2909,11 +2916,12 @@ async def sample_set_finding_state(): The request object. Request message for updating a finding's state. name (:class:`str`): - Required. The relative resource name of the finding. - See: - https://cloud.google.com/apis/design/resource_names#relative_resource_name - Example: - "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}". + Required. The `relative resource + name `__ + of the finding. Example: + "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}", + "folders/{folder_id}/sources/{source_id}/findings/{finding_id}", + "projects/{project_id}/sources/{source_id}/findings/{finding_id}". This corresponds to the ``name`` field on the ``request`` instance; if ``request`` is provided, this @@ -3041,10 +3049,9 @@ async def sample_set_mute(): The request object. Request message for updating a finding's mute status. name (:class:`str`): - Required. The relative resource name of the finding. - See: - https://cloud.google.com/apis/design/resource_names#relative_resource_name - Example: + Required. The `relative resource + name `__ + of the finding. Example: "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}", "folders/{folder_id}/sources/{source_id}/findings/{finding_id}", "projects/{project_id}/sources/{source_id}/findings/{finding_id}". @@ -4238,7 +4245,7 @@ async def create_big_query_export( timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> bigquery_export.BigQueryExport: - r"""Creates a big query export. + r"""Creates a BigQuery export. .. code-block:: python @@ -4269,18 +4276,19 @@ async def sample_create_big_query_export(): Args: request (Optional[Union[google.cloud.securitycenter_v1.types.CreateBigQueryExportRequest, dict]]): - The request object. Request message for creating a big - query export. + The request object. Request message for creating a + BigQuery export. parent (:class:`str`): - Required. Resource name of the new big query export's - parent. Its format is "organizations/[organization_id]", + Required. The name of the parent resource of the new + BigQuery export. Its format is + "organizations/[organization_id]", "folders/[folder_id]", or "projects/[project_id]". This corresponds to the ``parent`` field on the ``request`` instance; if ``request`` is provided, this should not be set. big_query_export (:class:`google.cloud.securitycenter_v1.types.BigQueryExport`): - Required. The big query export being + Required. The BigQuery export being created. This corresponds to the ``big_query_export`` field @@ -4366,7 +4374,7 @@ async def delete_big_query_export( timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> None: - r"""Deletes an existing big query export. + r"""Deletes an existing BigQuery export. .. code-block:: python @@ -4393,10 +4401,10 @@ async def sample_delete_big_query_export(): Args: request (Optional[Union[google.cloud.securitycenter_v1.types.DeleteBigQueryExportRequest, dict]]): - The request object. Request message for deleting a big - query export. + The request object. Request message for deleting a + BigQuery export. name (:class:`str`): - Required. Name of the big query export to delete. Its + Required. The name of the BigQuery export to delete. Its format is organizations/{organization}/bigQueryExports/{export_id}, folders/{folder}/bigQueryExports/{export_id}, or diff --git a/google/cloud/securitycenter_v1/services/security_center/client.py b/google/cloud/securitycenter_v1/services/security_center/client.py index 51be2298..b1c45bd9 100644 --- a/google/cloud/securitycenter_v1/services/security_center/client.py +++ b/google/cloud/securitycenter_v1/services/security_center/client.py @@ -66,6 +66,7 @@ from google.cloud.securitycenter_v1.types import ( iam_binding, indicator, + kernel_rootkit, kubernetes, mitre_attack, ) @@ -1244,9 +1245,9 @@ def sample_create_notification_config(): Required. Unique identifier provided by the client within the parent scope. It must be - between 1 and 128 characters, and - contains alphanumeric characters, - underscores or hyphens only. + between 1 and 128 characters and contain + alphanumeric characters, underscores, or + hyphens only. This corresponds to the ``config_id`` field on the ``request`` instance; if ``request`` is provided, this @@ -1463,7 +1464,10 @@ def sample_delete_notification_config(): name (str): Required. Name of the notification config to delete. Its format is - "organizations/[organization_id]/notificationConfigs/[config_id]". + "organizations/[organization_id]/notificationConfigs/[config_id]", + "folders/[folder_id]/notificationConfigs/[config_id]", + or + "projects/[project_id]/notificationConfigs/[config_id]". This corresponds to the ``name`` field on the ``request`` instance; if ``request`` is provided, this @@ -1528,7 +1532,7 @@ def get_big_query_export( timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> bigquery_export.BigQueryExport: - r"""Gets a big query export. + r"""Gets a BigQuery export. .. code-block:: python @@ -1558,10 +1562,10 @@ def sample_get_big_query_export(): Args: request (Union[google.cloud.securitycenter_v1.types.GetBigQueryExportRequest, dict]): - The request object. Request message for retrieving a big - query export. + The request object. Request message for retrieving a + BigQuery export. name (str): - Required. Name of the big query export to retrieve. Its + Required. Name of the BigQuery export to retrieve. Its format is organizations/{organization}/bigQueryExports/{export_id}, folders/{folder}/bigQueryExports/{export_id}, or @@ -1942,7 +1946,10 @@ def sample_get_notification_config(): name (str): Required. Name of the notification config to get. Its format is - "organizations/[organization_id]/notificationConfigs/[config_id]". + "organizations/[organization_id]/notificationConfigs/[config_id]", + "folders/[folder_id]/notificationConfigs/[config_id]", + or + "projects/[project_id]/notificationConfigs/[config_id]". This corresponds to the ``name`` field on the ``request`` instance; if ``request`` is provided, this @@ -2831,8 +2838,8 @@ def sample_list_notification_configs(): The request object. Request message for listing notification configs. parent (str): - Required. Name of the organization to list notification - configs. Its format is + Required. The name of the parent in which to list the + notification configurations. Its format is "organizations/[organization_id]", "folders/[folder_id]", or "projects/[project_id]". @@ -3198,11 +3205,12 @@ def sample_set_finding_state(): The request object. Request message for updating a finding's state. name (str): - Required. The relative resource name of the finding. - See: - https://cloud.google.com/apis/design/resource_names#relative_resource_name - Example: - "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}". + Required. The `relative resource + name `__ + of the finding. Example: + "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}", + "folders/{folder_id}/sources/{source_id}/findings/{finding_id}", + "projects/{project_id}/sources/{source_id}/findings/{finding_id}". This corresponds to the ``name`` field on the ``request`` instance; if ``request`` is provided, this @@ -3330,10 +3338,9 @@ def sample_set_mute(): The request object. Request message for updating a finding's mute status. name (str): - Required. The relative resource name of the finding. - See: - https://cloud.google.com/apis/design/resource_names#relative_resource_name - Example: + Required. The `relative resource + name `__ + of the finding. Example: "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}", "folders/{folder_id}/sources/{source_id}/findings/{finding_id}", "projects/{project_id}/sources/{source_id}/findings/{finding_id}". @@ -4520,7 +4527,7 @@ def create_big_query_export( timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> bigquery_export.BigQueryExport: - r"""Creates a big query export. + r"""Creates a BigQuery export. .. code-block:: python @@ -4551,18 +4558,19 @@ def sample_create_big_query_export(): Args: request (Union[google.cloud.securitycenter_v1.types.CreateBigQueryExportRequest, dict]): - The request object. Request message for creating a big - query export. + The request object. Request message for creating a + BigQuery export. parent (str): - Required. Resource name of the new big query export's - parent. Its format is "organizations/[organization_id]", + Required. The name of the parent resource of the new + BigQuery export. Its format is + "organizations/[organization_id]", "folders/[folder_id]", or "projects/[project_id]". This corresponds to the ``parent`` field on the ``request`` instance; if ``request`` is provided, this should not be set. big_query_export (google.cloud.securitycenter_v1.types.BigQueryExport): - Required. The big query export being + Required. The BigQuery export being created. This corresponds to the ``big_query_export`` field @@ -4648,7 +4656,7 @@ def delete_big_query_export( timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> None: - r"""Deletes an existing big query export. + r"""Deletes an existing BigQuery export. .. code-block:: python @@ -4675,10 +4683,10 @@ def sample_delete_big_query_export(): Args: request (Union[google.cloud.securitycenter_v1.types.DeleteBigQueryExportRequest, dict]): - The request object. Request message for deleting a big - query export. + The request object. Request message for deleting a + BigQuery export. name (str): - Required. Name of the big query export to delete. Its + Required. The name of the BigQuery export to delete. Its format is organizations/{organization}/bigQueryExports/{export_id}, folders/{folder}/bigQueryExports/{export_id}, or diff --git a/google/cloud/securitycenter_v1/services/security_center/transports/grpc.py b/google/cloud/securitycenter_v1/services/security_center/transports/grpc.py index 5b8ef58a..180962c2 100644 --- a/google/cloud/securitycenter_v1/services/security_center/transports/grpc.py +++ b/google/cloud/securitycenter_v1/services/security_center/transports/grpc.py @@ -468,7 +468,7 @@ def get_big_query_export( ]: r"""Return a callable for the get big query export method over gRPC. - Gets a big query export. + Gets a BigQuery export. Returns: Callable[[~.GetBigQueryExportRequest], @@ -1189,7 +1189,7 @@ def create_big_query_export( ]: r"""Return a callable for the create big query export method over gRPC. - Creates a big query export. + Creates a BigQuery export. Returns: Callable[[~.CreateBigQueryExportRequest], @@ -1217,7 +1217,7 @@ def delete_big_query_export( ]: r"""Return a callable for the delete big query export method over gRPC. - Deletes an existing big query export. + Deletes an existing BigQuery export. Returns: Callable[[~.DeleteBigQueryExportRequest], diff --git a/google/cloud/securitycenter_v1/services/security_center/transports/grpc_asyncio.py b/google/cloud/securitycenter_v1/services/security_center/transports/grpc_asyncio.py index b5b8f2d4..5997a063 100644 --- a/google/cloud/securitycenter_v1/services/security_center/transports/grpc_asyncio.py +++ b/google/cloud/securitycenter_v1/services/security_center/transports/grpc_asyncio.py @@ -482,7 +482,7 @@ def get_big_query_export( ]: r"""Return a callable for the get big query export method over gRPC. - Gets a big query export. + Gets a BigQuery export. Returns: Callable[[~.GetBigQueryExportRequest], @@ -1211,7 +1211,7 @@ def create_big_query_export( ]: r"""Return a callable for the create big query export method over gRPC. - Creates a big query export. + Creates a BigQuery export. Returns: Callable[[~.CreateBigQueryExportRequest], @@ -1239,7 +1239,7 @@ def delete_big_query_export( ]: r"""Return a callable for the delete big query export method over gRPC. - Deletes an existing big query export. + Deletes an existing BigQuery export. Returns: Callable[[~.DeleteBigQueryExportRequest], diff --git a/google/cloud/securitycenter_v1/types/__init__.py b/google/cloud/securitycenter_v1/types/__init__.py index 3c6a6227..5d902c0f 100644 --- a/google/cloud/securitycenter_v1/types/__init__.py +++ b/google/cloud/securitycenter_v1/types/__init__.py @@ -28,6 +28,7 @@ from .folder import Folder from .iam_binding import IamBinding from .indicator import Indicator +from .kernel_rootkit import KernelRootkit from .kubernetes import Kubernetes from .label import Label from .mitre_attack import MitreAttack @@ -107,6 +108,7 @@ "Folder", "IamBinding", "Indicator", + "KernelRootkit", "Kubernetes", "Label", "MitreAttack", diff --git a/google/cloud/securitycenter_v1/types/external_system.py b/google/cloud/securitycenter_v1/types/external_system.py index bc4ab5b4..0dc9880a 100644 --- a/google/cloud/securitycenter_v1/types/external_system.py +++ b/google/cloud/securitycenter_v1/types/external_system.py @@ -31,10 +31,11 @@ class ExternalSystem(proto.Message): Attributes: name (str): - External System Name e.g. jira, demisto, etc. e.g.: - ``organizations/1234/sources/5678/findings/123456/externalSystems/jira`` - ``folders/1234/sources/5678/findings/123456/externalSystems/jira`` - ``projects/1234/sources/5678/findings/123456/externalSystems/jira`` + Full resource name of the external system, + for example: + "organizations/1234/sources/5678/findings/123456/externalSystems/jira", + "folders/1234/sources/5678/findings/123456/externalSystems/jira", + "projects/1234/sources/5678/findings/123456/externalSystems/jira". assignees (MutableSequence[str]): References primary/secondary etc assignees in the external system. diff --git a/google/cloud/securitycenter_v1/types/finding.py b/google/cloud/securitycenter_v1/types/finding.py index 36de4fb3..c8594d2a 100644 --- a/google/cloud/securitycenter_v1/types/finding.py +++ b/google/cloud/securitycenter_v1/types/finding.py @@ -27,6 +27,7 @@ ) from google.cloud.securitycenter_v1.types import external_system, file, iam_binding from google.cloud.securitycenter_v1.types import exfiltration as gcs_exfiltration +from google.cloud.securitycenter_v1.types import kernel_rootkit as gcs_kernel_rootkit from google.cloud.securitycenter_v1.types import mitre_attack as gcs_mitre_attack from google.cloud.securitycenter_v1.types import security_marks as gcs_security_marks from google.cloud.securitycenter_v1.types import vulnerability as gcs_vulnerability @@ -133,8 +134,8 @@ class Finding(proto.Message): high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise vulnerability (google.cloud.securitycenter_v1.types.Vulnerability): - Represents vulnerability specific fields like - cve, cvss scores etc. CVE stands for Common + Represents vulnerability-specific fields like + CVE and CVS scores. CVE stands for Common Vulnerabilities and Exposures (https://cve.mitre.org/about/) mute_update_time (google.protobuf.timestamp_pb2.Timestamp): @@ -212,6 +213,8 @@ class Finding(proto.Message): Database associated with the finding. files (MutableSequence[google.cloud.securitycenter_v1.types.File]): File associated with the finding. + kernel_rootkit (google.cloud.securitycenter_v1.types.KernelRootkit): + Kernel Rootkit signature. """ class State(proto.Enum): @@ -409,6 +412,11 @@ class FindingClass(proto.Enum): number=46, message=file.File, ) + kernel_rootkit: gcs_kernel_rootkit.KernelRootkit = proto.Field( + proto.MESSAGE, + number=50, + message=gcs_kernel_rootkit.KernelRootkit, + ) __all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/google/cloud/securitycenter_v1/types/kernel_rootkit.py b/google/cloud/securitycenter_v1/types/kernel_rootkit.py new file mode 100644 index 00000000..a177766e --- /dev/null +++ b/google/cloud/securitycenter_v1/types/kernel_rootkit.py @@ -0,0 +1,104 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +from typing import MutableMapping, MutableSequence + +import proto # type: ignore + +__protobuf__ = proto.module( + package="google.cloud.securitycenter.v1", + manifest={ + "KernelRootkit", + }, +) + + +class KernelRootkit(proto.Message): + r"""Kernel mode rootkit signatures. + + Attributes: + name (str): + Rootkit name when available. + unexpected_code_modification (bool): + True if unexpected modifications of kernel + code memory are present. + unexpected_read_only_data_modification (bool): + True if unexpected modifications of kernel + read-only data memory are present. + unexpected_ftrace_handler (bool): + True if ``ftrace`` points are present with callbacks + pointing to regions that are not in the expected kernel or + module code range. + unexpected_kprobe_handler (bool): + True if ``kprobe`` points are present with callbacks + pointing to regions that are not in the expected kernel or + module code range. + unexpected_kernel_code_pages (bool): + True if kernel code pages that are not in the + expected kernel or module code regions are + present. + unexpected_system_call_handler (bool): + True if system call handlers that are are not + in the expected kernel or module code regions + are present. + unexpected_interrupt_handler (bool): + True if interrupt handlers that are are not + in the expected kernel or module code regions + are present. + unexpected_processes_in_runqueue (bool): + True if unexpected processes in the scheduler + run queue are present. Such processes are in the + run queue, but not in the process task list. + """ + + name: str = proto.Field( + proto.STRING, + number=1, + ) + unexpected_code_modification: bool = proto.Field( + proto.BOOL, + number=2, + ) + unexpected_read_only_data_modification: bool = proto.Field( + proto.BOOL, + number=3, + ) + unexpected_ftrace_handler: bool = proto.Field( + proto.BOOL, + number=4, + ) + unexpected_kprobe_handler: bool = proto.Field( + proto.BOOL, + number=5, + ) + unexpected_kernel_code_pages: bool = proto.Field( + proto.BOOL, + number=6, + ) + unexpected_system_call_handler: bool = proto.Field( + proto.BOOL, + number=7, + ) + unexpected_interrupt_handler: bool = proto.Field( + proto.BOOL, + number=8, + ) + unexpected_processes_in_runqueue: bool = proto.Field( + proto.BOOL, + number=9, + ) + + +__all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/google/cloud/securitycenter_v1/types/notification_config.py b/google/cloud/securitycenter_v1/types/notification_config.py index 2eec73ca..fdc7e57b 100644 --- a/google/cloud/securitycenter_v1/types/notification_config.py +++ b/google/cloud/securitycenter_v1/types/notification_config.py @@ -40,7 +40,10 @@ class NotificationConfig(proto.Message): The relative resource name of this notification config. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: - "organizations/{organization_id}/notificationConfigs/notify_public_bucket". + "organizations/{organization_id}/notificationConfigs/notify_public_bucket", + "folders/{folder_id}/notificationConfigs/notify_public_bucket", + or + "projects/{project_id}/notificationConfigs/notify_public_bucket". description (str): The description of the notification config (max of 1024 characters). diff --git a/google/cloud/securitycenter_v1/types/securitycenter_service.py b/google/cloud/securitycenter_v1/types/securitycenter_service.py index 4ad91ea7..f85c3384 100644 --- a/google/cloud/securitycenter_v1/types/securitycenter_service.py +++ b/google/cloud/securitycenter_v1/types/securitycenter_service.py @@ -228,8 +228,8 @@ class CreateNotificationConfigRequest(proto.Message): Required. Unique identifier provided by the client within the parent scope. It must be between 1 and 128 - characters, and contains alphanumeric - characters, underscores or hyphens only. + characters and contain alphanumeric characters, + underscores, or hyphens only. notification_config (google.cloud.securitycenter_v1.types.NotificationConfig): Required. The notification config being created. The name and the service account will @@ -300,7 +300,9 @@ class DeleteNotificationConfigRequest(proto.Message): name (str): Required. Name of the notification config to delete. Its format is - "organizations/[organization_id]/notificationConfigs/[config_id]". + "organizations/[organization_id]/notificationConfigs/[config_id]", + "folders/[folder_id]/notificationConfigs/[config_id]", or + "projects/[project_id]/notificationConfigs/[config_id]". """ name: str = proto.Field( @@ -310,11 +312,11 @@ class DeleteNotificationConfigRequest(proto.Message): class GetBigQueryExportRequest(proto.Message): - r"""Request message for retrieving a big query export. + r"""Request message for retrieving a BigQuery export. Attributes: name (str): - Required. Name of the big query export to retrieve. Its + Required. Name of the BigQuery export to retrieve. Its format is organizations/{organization}/bigQueryExports/{export_id}, folders/{folder}/bigQueryExports/{export_id}, or @@ -351,7 +353,9 @@ class GetNotificationConfigRequest(proto.Message): name (str): Required. Name of the notification config to get. Its format is - "organizations/[organization_id]/notificationConfigs/[config_id]". + "organizations/[organization_id]/notificationConfigs/[config_id]", + "folders/[folder_id]/notificationConfigs/[config_id]", or + "projects/[project_id]/notificationConfigs/[config_id]". """ name: str = proto.Field( @@ -396,9 +400,9 @@ class GroupAssetsRequest(proto.Message): Attributes: parent (str): - Required. Name of the organization to groupBy. Its format is - "organizations/[organization_id], folders/[folder_id], or - projects/[project_id]". + Required. The name of the parent to group the assets by. Its + format is "organizations/[organization_id], + folders/[folder_id], or projects/[project_id]". filter (str): Expression that defines the filter to apply across assets. The expression is a list of zero or more restrictions @@ -959,9 +963,10 @@ class ListNotificationConfigsRequest(proto.Message): Attributes: parent (str): - Required. Name of the organization to list notification - configs. Its format is "organizations/[organization_id]", - "folders/[folder_id]", or "projects/[project_id]". + Required. The name of the parent in which to list the + notification configurations. Its format is + "organizations/[organization_id]", "folders/[folder_id]", or + "projects/[project_id]". page_token (str): The value returned by the last ``ListNotificationConfigsResponse``; indicates that this is @@ -1080,8 +1085,8 @@ class ListAssetsRequest(proto.Message): Attributes: parent (str): - Required. Name of the organization assets should belong to. - Its format is "organizations/[organization_id], + Required. The name of the parent that the listed assets + belong to. Its format is "organizations/[organization_id], folders/[folder_id], or projects/[project_id]". filter (str): Expression that defines the filter to apply across assets. @@ -1702,10 +1707,12 @@ class SetFindingStateRequest(proto.Message): Attributes: name (str): - Required. The relative resource name of the finding. See: - https://cloud.google.com/apis/design/resource_names#relative_resource_name - Example: - "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}". + Required. The `relative resource + name `__ + of the finding. Example: + "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}", + "folders/{folder_id}/sources/{source_id}/findings/{finding_id}", + "projects/{project_id}/sources/{source_id}/findings/{finding_id}". state (google.cloud.securitycenter_v1.types.Finding.State): Required. The desired State of the finding. start_time (google.protobuf.timestamp_pb2.Timestamp): @@ -1734,9 +1741,9 @@ class SetMuteRequest(proto.Message): Attributes: name (str): - Required. The relative resource name of the finding. See: - https://cloud.google.com/apis/design/resource_names#relative_resource_name - Example: + Required. The `relative resource + name `__ + of the finding. Example: "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}", "folders/{folder_id}/sources/{source_id}/findings/{finding_id}", "projects/{project_id}/sources/{source_id}/findings/{finding_id}". @@ -1967,15 +1974,16 @@ class UpdateSecurityMarksRequest(proto.Message): class CreateBigQueryExportRequest(proto.Message): - r"""Request message for creating a big query export. + r"""Request message for creating a BigQuery export. Attributes: parent (str): - Required. Resource name of the new big query export's - parent. Its format is "organizations/[organization_id]", - "folders/[folder_id]", or "projects/[project_id]". + Required. The name of the parent resource of the new + BigQuery export. Its format is + "organizations/[organization_id]", "folders/[folder_id]", or + "projects/[project_id]". big_query_export (google.cloud.securitycenter_v1.types.BigQueryExport): - Required. The big query export being created. + Required. The BigQuery export being created. big_query_export_id (str): Required. Unique identifier provided by the client within the parent scope. It must consist @@ -2090,12 +2098,13 @@ def raw_page(self): class DeleteBigQueryExportRequest(proto.Message): - r"""Request message for deleting a big query export. + r"""Request message for deleting a BigQuery export. Attributes: name (str): - Required. Name of the big query export to delete. Its format - is organizations/{organization}/bigQueryExports/{export_id}, + Required. The name of the BigQuery export to delete. Its + format is + organizations/{organization}/bigQueryExports/{export_id}, folders/{folder}/bigQueryExports/{export_id}, or projects/{project}/bigQueryExports/{export_id} """ diff --git a/securitycenter-v1-py.tar.gz b/securitycenter-v1-py.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..23c452a77c776833f97346954867f7a0c6f0197e GIT binary patch literal 49152 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