List findings

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 .

Create a Mobile Website
View Site in Mobile | Classic
Share by: