Skip to content

Commit fda5aff

Browse files
feat: Add connection and description field to finding's list of attributes (#323)
* feat: Add connection and description field to finding's list of attributes PiperOrigin-RevId: 442589635 Source-Link: googleapis/googleapis@50fc834 Source-Link: googleapis/googleapis-gen@86cc920 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiODZjYzkyMDUyOWIwODc3YmE4MTIxNmI1MmQ5OTVjZTRkZDJmOGI0ZiJ9 * 🦉 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 <gcf-owl-bot[bot]@users.noreply.github.com>
1 parent 47d994c commit fda5aff

File tree

8 files changed

+121
-0
lines changed

8 files changed

+121
-0
lines changed

packages/google-cloud-securitycenter/google/cloud/securitycenter/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
from google.cloud.securitycenter_v1.types.access import Geolocation
2626
from google.cloud.securitycenter_v1.types.asset import Asset
2727
from google.cloud.securitycenter_v1.types.bigquery_export import BigQueryExport
28+
from google.cloud.securitycenter_v1.types.connection import Connection
2829
from google.cloud.securitycenter_v1.types.external_system import ExternalSystem
2930
from google.cloud.securitycenter_v1.types.finding import Finding
3031
from google.cloud.securitycenter_v1.types.folder import Folder
@@ -180,6 +181,7 @@
180181
"Geolocation",
181182
"Asset",
182183
"BigQueryExport",
184+
"Connection",
183185
"ExternalSystem",
184186
"Finding",
185187
"Folder",

packages/google-cloud-securitycenter/google/cloud/securitycenter_v1/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from .types.access import Geolocation
2222
from .types.asset import Asset
2323
from .types.bigquery_export import BigQueryExport
24+
from .types.connection import Connection
2425
from .types.external_system import ExternalSystem
2526
from .types.finding import Finding
2627
from .types.folder import Folder
@@ -90,6 +91,7 @@
9091
"BigQueryExport",
9192
"BulkMuteFindingsRequest",
9293
"BulkMuteFindingsResponse",
94+
"Connection",
9395
"CreateBigQueryExportRequest",
9496
"CreateFindingRequest",
9597
"CreateMuteConfigRequest",

packages/google-cloud-securitycenter/google/cloud/securitycenter_v1/services/security_center/async_client.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
from google.cloud.securitycenter_v1.services.security_center import pagers
3737
from google.cloud.securitycenter_v1.types import access
3838
from google.cloud.securitycenter_v1.types import bigquery_export
39+
from google.cloud.securitycenter_v1.types import connection
3940
from google.cloud.securitycenter_v1.types import external_system as gcs_external_system
4041
from google.cloud.securitycenter_v1.types import finding
4142
from google.cloud.securitycenter_v1.types import finding as gcs_finding

packages/google-cloud-securitycenter/google/cloud/securitycenter_v1/services/security_center/client.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
from google.cloud.securitycenter_v1.services.security_center import pagers
4040
from google.cloud.securitycenter_v1.types import access
4141
from google.cloud.securitycenter_v1.types import bigquery_export
42+
from google.cloud.securitycenter_v1.types import connection
4243
from google.cloud.securitycenter_v1.types import external_system as gcs_external_system
4344
from google.cloud.securitycenter_v1.types import finding
4445
from google.cloud.securitycenter_v1.types import finding as gcs_finding

packages/google-cloud-securitycenter/google/cloud/securitycenter_v1/types/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
from .bigquery_export import (
2424
BigQueryExport,
2525
)
26+
from .connection import (
27+
Connection,
28+
)
2629
from .external_system import (
2730
ExternalSystem,
2831
)
@@ -122,6 +125,7 @@
122125
"Geolocation",
123126
"Asset",
124127
"BigQueryExport",
128+
"Connection",
125129
"ExternalSystem",
126130
"Finding",
127131
"Folder",
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# -*- coding: utf-8 -*-
2+
# Copyright 2022 Google LLC
3+
#
4+
# Licensed under the Apache License, Version 2.0 (the "License");
5+
# you may not use this file except in compliance with the License.
6+
# You may obtain a copy of the License at
7+
#
8+
# http://www.apache.org/licenses/LICENSE-2.0
9+
#
10+
# Unless required by applicable law or agreed to in writing, software
11+
# distributed under the License is distributed on an "AS IS" BASIS,
12+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
# See the License for the specific language governing permissions and
14+
# limitations under the License.
15+
#
16+
import proto # type: ignore
17+
18+
19+
__protobuf__ = proto.module(
20+
package="google.cloud.securitycenter.v1",
21+
manifest={
22+
"Connection",
23+
},
24+
)
25+
26+
27+
class Connection(proto.Message):
28+
r"""Contains information about the IP connection associated with
29+
the finding.
30+
31+
Attributes:
32+
destination_ip (str):
33+
Destination IP address. Not present for
34+
sockets that are listening and not connected.
35+
destination_port (int):
36+
Destination port. Not present for sockets
37+
that are listening and not connected.
38+
source_ip (str):
39+
Source IP address.
40+
source_port (int):
41+
Source port.
42+
protocol (google.cloud.securitycenter_v1.types.Connection.Protocol):
43+
IANA Internet Protocol Number such as TCP(6)
44+
and UDP(17).
45+
"""
46+
47+
class Protocol(proto.Enum):
48+
r"""IANA Internet Protocol Number such as TCP(6) and UDP(17)."""
49+
PROTOCOL_UNSPECIFIED = 0
50+
ICMP = 1
51+
TCP = 6
52+
UDP = 17
53+
GRE = 47
54+
ESP = 50
55+
56+
destination_ip = proto.Field(
57+
proto.STRING,
58+
number=1,
59+
)
60+
destination_port = proto.Field(
61+
proto.INT32,
62+
number=2,
63+
)
64+
source_ip = proto.Field(
65+
proto.STRING,
66+
number=3,
67+
)
68+
source_port = proto.Field(
69+
proto.INT32,
70+
number=4,
71+
)
72+
protocol = proto.Field(
73+
proto.ENUM,
74+
number=5,
75+
enum=Protocol,
76+
)
77+
78+
79+
__all__ = tuple(sorted(__protobuf__.manifest))

packages/google-cloud-securitycenter/google/cloud/securitycenter_v1/types/finding.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import proto # type: ignore
1717

1818
from google.cloud.securitycenter_v1.types import access as gcs_access
19+
from google.cloud.securitycenter_v1.types import connection
1920
from google.cloud.securitycenter_v1.types import external_system
2021
from google.cloud.securitycenter_v1.types import iam_binding
2122
from google.cloud.securitycenter_v1.types import indicator as gcs_indicator
@@ -141,12 +142,17 @@ class Finding(proto.Message):
141142
Access details associated to the Finding,
142143
such as more information on the caller, which
143144
method was accessed, from where, etc.
145+
connections (Sequence[google.cloud.securitycenter_v1.types.Connection]):
146+
Contains information about the IP connection
147+
associated with the finding.
144148
mute_initiator (str):
145149
First known as mute_annotation. Records additional
146150
information about the mute operation e.g. mute config that
147151
muted the finding, user who muted the finding, etc. Unlike
148152
other attributes of a finding, a finding provider shouldn't
149153
set the value of mute.
154+
description (str):
155+
Contains more detail about the finding.
150156
iam_bindings (Sequence[google.cloud.securitycenter_v1.types.IamBinding]):
151157
Represents IAM bindings associated with the
152158
Finding.
@@ -280,10 +286,19 @@ class FindingClass(proto.Enum):
280286
number=26,
281287
message=gcs_access.Access,
282288
)
289+
connections = proto.RepeatedField(
290+
proto.MESSAGE,
291+
number=31,
292+
message=connection.Connection,
293+
)
283294
mute_initiator = proto.Field(
284295
proto.STRING,
285296
number=28,
286297
)
298+
description = proto.Field(
299+
proto.STRING,
300+
number=37,
301+
)
287302
iam_bindings = proto.RepeatedField(
288303
proto.MESSAGE,
289304
number=39,

packages/google-cloud-securitycenter/tests/unit/gapic/securitycenter_v1/test_security_center.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
from google.cloud.securitycenter_v1.services.security_center import transports
4444
from google.cloud.securitycenter_v1.types import access
4545
from google.cloud.securitycenter_v1.types import bigquery_export
46+
from google.cloud.securitycenter_v1.types import connection
4647
from google.cloud.securitycenter_v1.types import external_system
4748
from google.cloud.securitycenter_v1.types import external_system as gcs_external_system
4849
from google.cloud.securitycenter_v1.types import finding
@@ -1209,6 +1210,7 @@ def test_create_finding(request_type, transport: str = "grpc"):
12091210
mute=gcs_finding.Finding.Mute.MUTED,
12101211
finding_class=gcs_finding.Finding.FindingClass.THREAT,
12111212
mute_initiator="mute_initiator_value",
1213+
description="description_value",
12121214
next_steps="next_steps_value",
12131215
)
12141216
response = client.create_finding(request)
@@ -1231,6 +1233,7 @@ def test_create_finding(request_type, transport: str = "grpc"):
12311233
assert response.mute == gcs_finding.Finding.Mute.MUTED
12321234
assert response.finding_class == gcs_finding.Finding.FindingClass.THREAT
12331235
assert response.mute_initiator == "mute_initiator_value"
1236+
assert response.description == "description_value"
12341237
assert response.next_steps == "next_steps_value"
12351238

12361239

@@ -1280,6 +1283,7 @@ async def test_create_finding_async(
12801283
mute=gcs_finding.Finding.Mute.MUTED,
12811284
finding_class=gcs_finding.Finding.FindingClass.THREAT,
12821285
mute_initiator="mute_initiator_value",
1286+
description="description_value",
12831287
next_steps="next_steps_value",
12841288
)
12851289
)
@@ -1303,6 +1307,7 @@ async def test_create_finding_async(
13031307
assert response.mute == gcs_finding.Finding.Mute.MUTED
13041308
assert response.finding_class == gcs_finding.Finding.FindingClass.THREAT
13051309
assert response.mute_initiator == "mute_initiator_value"
1310+
assert response.description == "description_value"
13061311
assert response.next_steps == "next_steps_value"
13071312

13081313

@@ -7098,6 +7103,7 @@ def test_set_finding_state(request_type, transport: str = "grpc"):
70987103
mute=finding.Finding.Mute.MUTED,
70997104
finding_class=finding.Finding.FindingClass.THREAT,
71007105
mute_initiator="mute_initiator_value",
7106+
description="description_value",
71017107
next_steps="next_steps_value",
71027108
)
71037109
response = client.set_finding_state(request)
@@ -7120,6 +7126,7 @@ def test_set_finding_state(request_type, transport: str = "grpc"):
71207126
assert response.mute == finding.Finding.Mute.MUTED
71217127
assert response.finding_class == finding.Finding.FindingClass.THREAT
71227128
assert response.mute_initiator == "mute_initiator_value"
7129+
assert response.description == "description_value"
71237130
assert response.next_steps == "next_steps_value"
71247131

71257132

@@ -7173,6 +7180,7 @@ async def test_set_finding_state_async(
71737180
mute=finding.Finding.Mute.MUTED,
71747181
finding_class=finding.Finding.FindingClass.THREAT,
71757182
mute_initiator="mute_initiator_value",
7183+
description="description_value",
71767184
next_steps="next_steps_value",
71777185
)
71787186
)
@@ -7196,6 +7204,7 @@ async def test_set_finding_state_async(
71967204
assert response.mute == finding.Finding.Mute.MUTED
71977205
assert response.finding_class == finding.Finding.FindingClass.THREAT
71987206
assert response.mute_initiator == "mute_initiator_value"
7207+
assert response.description == "description_value"
71997208
assert response.next_steps == "next_steps_value"
72007209

72017210

@@ -7403,6 +7412,7 @@ def test_set_mute(request_type, transport: str = "grpc"):
74037412
mute=finding.Finding.Mute.MUTED,
74047413
finding_class=finding.Finding.FindingClass.THREAT,
74057414
mute_initiator="mute_initiator_value",
7415+
description="description_value",
74067416
next_steps="next_steps_value",
74077417
)
74087418
response = client.set_mute(request)
@@ -7425,6 +7435,7 @@ def test_set_mute(request_type, transport: str = "grpc"):
74257435
assert response.mute == finding.Finding.Mute.MUTED
74267436
assert response.finding_class == finding.Finding.FindingClass.THREAT
74277437
assert response.mute_initiator == "mute_initiator_value"
7438+
assert response.description == "description_value"
74287439
assert response.next_steps == "next_steps_value"
74297440

74307441

@@ -7473,6 +7484,7 @@ async def test_set_mute_async(
74737484
mute=finding.Finding.Mute.MUTED,
74747485
finding_class=finding.Finding.FindingClass.THREAT,
74757486
mute_initiator="mute_initiator_value",
7487+
description="description_value",
74767488
next_steps="next_steps_value",
74777489
)
74787490
)
@@ -7496,6 +7508,7 @@ async def test_set_mute_async(
74967508
assert response.mute == finding.Finding.Mute.MUTED
74977509
assert response.finding_class == finding.Finding.FindingClass.THREAT
74987510
assert response.mute_initiator == "mute_initiator_value"
7511+
assert response.description == "description_value"
74997512
assert response.next_steps == "next_steps_value"
75007513

75017514

@@ -8480,6 +8493,7 @@ def test_update_finding(request_type, transport: str = "grpc"):
84808493
mute=gcs_finding.Finding.Mute.MUTED,
84818494
finding_class=gcs_finding.Finding.FindingClass.THREAT,
84828495
mute_initiator="mute_initiator_value",
8496+
description="description_value",
84838497
next_steps="next_steps_value",
84848498
)
84858499
response = client.update_finding(request)
@@ -8502,6 +8516,7 @@ def test_update_finding(request_type, transport: str = "grpc"):
85028516
assert response.mute == gcs_finding.Finding.Mute.MUTED
85038517
assert response.finding_class == gcs_finding.Finding.FindingClass.THREAT
85048518
assert response.mute_initiator == "mute_initiator_value"
8519+
assert response.description == "description_value"
85058520
assert response.next_steps == "next_steps_value"
85068521

85078522

@@ -8551,6 +8566,7 @@ async def test_update_finding_async(
85518566
mute=gcs_finding.Finding.Mute.MUTED,
85528567
finding_class=gcs_finding.Finding.FindingClass.THREAT,
85538568
mute_initiator="mute_initiator_value",
8569+
description="description_value",
85548570
next_steps="next_steps_value",
85558571
)
85568572
)
@@ -8574,6 +8590,7 @@ async def test_update_finding_async(
85748590
assert response.mute == gcs_finding.Finding.Mute.MUTED
85758591
assert response.finding_class == gcs_finding.Finding.FindingClass.THREAT
85768592
assert response.mute_initiator == "mute_initiator_value"
8593+
assert response.description == "description_value"
85778594
assert response.next_steps == "next_steps_value"
85788595

85798596

0 commit comments

Comments
 (0)