Add security marks to assets

Demonstrates adding security marks to assets

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/genproto/protobuf/field_mask" 
 ) 
 // addSecurityMarks adds/updates the security marks for the assetName. 
 // Specifically, it sets "key_a" and "key_b" to "value_a" and "value_b" 
 // respectively.  assetName is the resource path for an asset. 
 func 
  
 addSecurityMarks 
 ( 
 w 
  
 io 
 . 
 Writer 
 , 
  
 assetName 
  
 string 
 ) 
  
 error 
  
 { 
  
 // Specify the value of 'assetName' in one of the following formats: 
  
 // 		assetName := "organizations/{org_id}/assets/{asset_id}" 
  
 //		assetName := "projects/{project_id}/assets/{asset_id}" 
  
 //		assetName := "folders/{folder_id}/assets/{asset_id}" 
  
 // 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 
 . 
 UpdateSecurityMarksRequest 
 { 
  
 // If not set or empty, all marks would be cleared before 
  
 // adding the new marks below. 
  
 UpdateMask 
 : 
  
& field_mask 
 . 
 FieldMask 
 { 
  
 Paths 
 : 
  
 [] 
 string 
 { 
 "marks.key_a" 
 , 
  
 "marks.key_b" 
 }, 
  
 }, 
  
 SecurityMarks 
 : 
  
& securitycenterpb 
 . 
 SecurityMarks 
 { 
  
 Name 
 : 
  
 fmt 
 . 
 Sprintf 
 ( 
 "%s/securityMarks" 
 , 
  
 assetName 
 ), 
  
 // Note keys correspond to the last part of each path. 
  
 Marks 
 : 
  
 map 
 [ 
 string 
 ] 
 string 
 { 
 "key_a" 
 : 
  
 "value_a" 
 , 
  
 "key_b" 
 : 
  
 "value_b" 
 }, 
  
 }, 
  
 } 
  
 updatedMarks 
 , 
  
 err 
  
 := 
  
 client 
 . 
 UpdateSecurityMarks 
 ( 
 ctx 
 , 
  
 req 
 ) 
  
 if 
  
 err 
  
 != 
  
 nil 
  
 { 
  
 return 
  
 fmt 
 . 
 Errorf 
 ( 
 "UpdateSecurityMarks: %w" 
 , 
  
 err 
 ) 
  
 } 
  
 fmt 
 . 
 Fprintf 
 ( 
 w 
 , 
  
 "Updated marks: %s\n" 
 , 
  
 updatedMarks 
 . 
 Name 
 ) 
  
 for 
  
 k 
 , 
  
 v 
  
 := 
  
 range 
  
 updatedMarks 
 . 
 Marks 
  
 { 
  
 fmt 
 . 
 Fprintf 
 ( 
 w 
 , 
  
 "%s = %s\n" 
 , 
  
 k 
 , 
  
 v 
 ) 
  
 } 
  
 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 
  
 SecurityMarks 
  
 addToAsset 
 ( 
 String 
  
 assetName 
 ) 
  
 { 
  
 try 
  
 ( 
 SecurityCenterClient 
  
 client 
  
 = 
  
 SecurityCenterClient 
 . 
 create 
 ()) 
  
 { 
  
 // Specify the value of 'assetName' in one of the following formats: 
  
 //    String assetName = "organizations/{org-id}/assets/{asset-id}"; 
  
 //    String assetName = "projects/{project-id}/assets/{asset-id}"; 
  
 //    String assetName = "folders/{folder-id}/assets/{asset-id}"; 
  
 // 
  
 // Start setting up a request to add security marks for an asset. 
  
 ImmutableMap 
  
 markMap 
  
 = 
  
 ImmutableMap 
 . 
 of 
 ( 
 "key_a" 
 , 
  
 "value_a" 
 , 
  
 "key_b" 
 , 
  
 "value_b" 
 ); 
  
 // Add security marks and field mask for security marks. 
  
 SecurityMarks 
  
 securityMarks 
  
 = 
  
 SecurityMarks 
 . 
 newBuilder 
 () 
  
 . 
 setName 
 ( 
 assetName 
  
 + 
  
 "/securityMarks" 
 ) 
  
 . 
 putAllMarks 
 ( 
 markMap 
 ) 
  
 . 
 build 
 (); 
  
 FieldMask 
  
 updateMask 
  
 = 
  
 FieldMask 
 . 
 newBuilder 
 (). 
 addPaths 
 ( 
 "marks.key_a" 
 ). 
 addPaths 
 ( 
 "marks.key_b" 
 ). 
 build 
 (); 
  
 UpdateSecurityMarksRequest 
  
 request 
  
 = 
  
 UpdateSecurityMarksRequest 
 . 
 newBuilder 
 () 
  
 . 
 setSecurityMarks 
 ( 
 securityMarks 
 ) 
  
 . 
 setUpdateMask 
 ( 
 updateMask 
 ) 
  
 . 
 build 
 (); 
  
 // Call the API. 
  
 SecurityMarks 
  
 response 
  
 = 
  
 client 
 . 
 updateSecurityMarks 
 ( 
 request 
 ); 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 "Security Marks:" 
 ); 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 response 
 ); 
  
 return 
  
 response 
 ; 
  
 } 
  
 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 
 
 (); 
 async 
  
 function 
  
 addSecurityMarks 
 () 
  
 { 
  
 // assetName is the full resource path for the asset to update. 
  
 /* 
 * TODO(developer): Uncomment the following lines 
 */ 
  
 // Specify the value of 'assetName' in one of the following formats: 
  
 //    `organizations/${org-id}/assets/${asset-id}`; 
  
 //    `projects/${project-id}/assets/${asset-id}`; 
  
 //    `folders/${folder-id}/assets/${asset-id}`; 
  
 // const assetName = "organizations/123123342/assets/12312321"; 
  
 const 
  
 [ 
 newMarks 
 ] 
  
 = 
  
 await 
  
 client 
 . 
 updateSecurityMarks 
 ({ 
  
 securityMarks 
 : 
  
 { 
  
 name 
 : 
  
 ` 
 ${ 
 assetName 
 } 
 /securityMarks` 
 , 
  
 marks 
 : 
  
 { 
 key_a 
 : 
  
 'value_a' 
 , 
  
 key_b 
 : 
  
 'value_b' 
 }, 
  
 }, 
  
 // Only update the marks with these keys. 
  
 updateMask 
 : 
  
 { 
 paths 
 : 
  
 [ 
 'marks.key_a' 
 , 
  
 'marks.key_b' 
 ]}, 
  
 }); 
  
 console 
 . 
 log 
 ( 
 'New marks: %' 
 , 
  
 newMarks 
 ); 
 } 
 addSecurityMarks 
 (); 
 

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 
 from 
  
 google.protobuf 
  
 import 
 field_mask_pb2 
 # Create a new client. 
 client 
 = 
 securitycenter 
 . 
 SecurityCenterClient 
 () 
 # 'asset_name' is the resource path for an asset that exists in SCC. 
 # Specify the value of 'asset_name' in one of the following formats: 
 #   f"organizations/{org_id}/assets/{asset_id}" 
 #   f"projects/{project_id}/assets/{asset_id}" 
 #   f"folders/{folder_id}/assets/{asset_id}" 
 # asset_name = organizations/123123342/assets/12312321 
 marks_name 
 = 
 f 
 " 
 { 
 asset_name 
 } 
 /securityMarks" 
 # Notice the suffix after "marks." in the field mask matches the keys 
 # in marks. 
 field_mask 
 = 
 field_mask_pb2 
 . 
 FieldMask 
 ( 
 paths 
 = 
 [ 
 "marks.key_a" 
 , 
 "marks.key_b" 
 ]) 
 marks 
 = 
 { 
 "key_a" 
 : 
 "value_a" 
 , 
 "key_b" 
 : 
 "value_b" 
 } 
 updated_marks 
 = 
 client 
 . 
  update_security_marks 
 
 ( 
 request 
 = 
 { 
 "security_marks" 
 : 
 { 
 "name" 
 : 
 marks_name 
 , 
 "marks" 
 : 
 marks 
 }, 
 "update_mask" 
 : 
 field_mask 
 , 
 } 
 ) 
 print 
 ( 
 updated_marks 
 ) 
 

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: