Demonstrates how to list all findings in an organization
Code sample
Go
To authenticate to Security Command Center, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
import
(
"context"
"fmt"
"io"
securitycenter
"cloud.google.com/go/securitycenter/apiv1"
"cloud.google.com/go/securitycenter/apiv1/securitycenterpb"
"google.golang.org/api/iterator"
)
// listFindings prints all findings in orgID to w. orgID is the numeric
// identifier of the organization.
func
listFindings
(
w
io
.
Writer
,
orgID
string
)
error
{
// orgID := "12321311"
// Instantiate a context and a security service client to make API calls.
ctx
:=
context
.
Background
()
client
,
err
:=
securitycenter
.
NewClient
(
ctx
)
if
err
!=
nil
{
return
fmt
.
Errorf
(
"securitycenter.NewClient: %w"
,
err
)
}
defer
client
.
Close
()
// Closing the client safely cleans up background resources.
req
:=
& securitycenterpb
.
ListFindingsRequest
{
// List findings across all sources.
// Parent must be in one of the following formats:
// "organizations/{orgId}/sources/-"
// "projects/{projectId}/sources/-"
// "folders/{folderId}/sources/-"
Parent
:
fmt
.
Sprintf
(
"organizations/%s/sources/-"
,
orgID
),
}
it
:=
client
.
ListFindings
(
ctx
,
req
)
for
{
result
,
err
:=
it
.
Next
()
if
err
==
iterator
.
Done
{
break
}
if
err
!=
nil
{
return
fmt
.
Errorf
(
"it.Next: %w"
,
err
)
}
finding
:=
result
.
Finding
fmt
.
Fprintf
(
w
,
"Finding Name: %s, "
,
finding
.
Name
)
fmt
.
Fprintf
(
w
,
"Resource Name %s, "
,
finding
.
ResourceName
)
fmt
.
Fprintf
(
w
,
"Category: %s\n"
,
finding
.
Category
)
}
return
nil
}
Java
To authenticate to Security Command Center, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
static
ImmutableList<ListFindingsResult>
listAllFindings
(
OrganizationName
organizationName
)
{
try
(
SecurityCenterClient
client
=
SecurityCenterClient
.
create
())
{
// Input parameters for SourceName must be in one of the following formats:
// * OrganizationName organizationName = OrganizationName.of("organization-id");
// organizationName.getOrganization();
// * ProjectName projectName = ProjectName.of("project-id");
// projectName.getProject();
// * FolderName folderName = FolderName.of("folder-id");
// folderName.getFolder();
//
// "-" Indicates listing across all sources.
SourceName
sourceName
=
SourceName
.
of
(
organizationName
.
getOrganization
(),
"-"
);
ListFindingsRequest
.
Builder
request
=
ListFindingsRequest
.
newBuilder
().
setParent
(
sourceName
.
toString
());
// Call the API.
ListFindingsPagedResponse
response
=
client
.
listFindings
(
request
.
build
());
// This creates one list for all findings. If your organization has a large number of
// findings this can cause out of memory issues. You can process them in incrementally
// by returning the Iterable returned response.iterateAll() directly.
ImmutableList<ListFindingsResult>
results
=
ImmutableList
.
copyOf
(
response
.
iterateAll
());
System
.
out
.
println
(
"Findings:"
);
System
.
out
.
println
(
results
);
return
results
;
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
"Couldn't create client."
,
e
);
}
}
Node.js
To authenticate to Security Command Center, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
// Imports the Google Cloud client library.
const
{
SecurityCenterClient
}
=
require
(
' @google-cloud/security-center
'
);
// Creates a new client.
const
client
=
new
SecurityCenterClient
();
// organizationId is the numeric ID of the organization.
/*
* TODO(developer): Uncomment the following lines
*/
// const organizationId = "1234567777";
async
function
listAllFindings
()
{
const
[
response
]
=
await
client
.
listFindings
({
// List findings across all sources.
// parent: must be in one of the following formats:
// `organizations/${organization_id}/sources/-`
// `projects/${project_id}/sources/-`
// `folders/${folder_id}/sources/-`
parent
:
`organizations/
${
organizationId
}
/sources/-`
,
});
let
count
=
0
;
Array
.
from
(
response
).
forEach
(
result
=
>
console
.
log
(
`
${
++
count
}
${
result
.
finding
.
name
}
${
result
.
finding
.
resourceName
}
`
)
);
}
await
listAllFindings
();
Python
To authenticate to Security Command Center, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
from
google.cloud
import
securitycenter_v1
# Create a client.
client
=
securitycenter_v1
.
SecurityCenterClient
()
# 'parent' must be in one of the following formats:
# "organizations/{organization_id}"
# "projects/{project_id}"
# "folders/{folder_id}"
parent
=
f
"organizations/
{
organization_id
}
"
# The "sources/-" suffix lists findings across all sources. You
# also use a specific source_name instead.
all_sources
=
f
"
{
parent
}
/sources/-"
finding_result_iterator
=
client
.
list_findings
(
request
=
{
"parent"
:
all_sources
})
for
i
,
finding_result
in
enumerate
(
finding_result_iterator
):
print
(
"
{}
: name:
{}
resource:
{}
"
.
format
(
i
,
finding_result
.
finding
.
name
,
finding_result
.
finding
.
resource_name
)
)
What's next
To search and filter code samples for other Google Cloud products, see the Google Cloud sample browser .