Search in sources :

Example 6 with ContainerAnalysisClient

use of com.google.cloud.devtools.containeranalysis.v1.ContainerAnalysisClient in project java-docs-samples by GoogleCloudPlatform.

the class SamplesTest method testFindHighSeverityVulnerabilitiesForImage.

@Test
public void testFindHighSeverityVulnerabilitiesForImage() throws Exception {
    // check before creation
    List<Occurrence> result = HighVulnerabilitiesForImage.findHighSeverityVulnerabilitiesForImage(imageUrl, PROJECT_ID);
    assertEquals(0, result.size());
    // create low severity occurrence
    Occurrence low;
    low = CreateOccurrence.createOccurrence(imageUrl, noteId, PROJECT_ID, PROJECT_ID);
    result = HighVulnerabilitiesForImage.findHighSeverityVulnerabilitiesForImage(imageUrl, PROJECT_ID);
    assertEquals(0, result.size());
    // create high severity note
    Note newNote = Note.newBuilder().setVulnerability(VulnerabilityNote.newBuilder().setSeverity(Severity.CRITICAL).addDetails(VulnerabilityNote.Detail.newBuilder().setAffectedCpeUri("your-uri-here").setAffectedPackage("your-package-here").setAffectedVersionStart(Version.newBuilder().setKind(Version.VersionKind.MINIMUM)).setAffectedVersionEnd(Version.newBuilder().setKind(Version.VersionKind.MAXIMUM)))).build();
    String vulnNoteId = "severe-note-" + (new Date()).getTime();
    ContainerAnalysisClient client = ContainerAnalysisClient.create();
    client.getGrafeasClient().createNote(ProjectName.format(PROJECT_ID), vulnNoteId, newNote);
    // create high severity occurrence
    Occurrence critical = Occurrence.newBuilder().setNoteName(NoteName.of(PROJECT_ID, vulnNoteId).toString()).setResourceUri(imageUrl).setVulnerability(VulnerabilityOccurrence.newBuilder().setEffectiveSeverity(Severity.CRITICAL).addPackageIssue(PackageIssue.newBuilder().setAffectedCpeUri("your-uri-here").setAffectedPackage("your-package-here").setAffectedVersion(Version.newBuilder().setKind(Version.VersionKind.MINIMUM)).setFixedVersion(Version.newBuilder().setKind(Version.VersionKind.MAXIMUM)))).build();
    critical = client.getGrafeasClient().createOccurrence(ProjectName.format(PROJECT_ID), critical);
    // check again
    int tries = 0;
    do {
        result = HighVulnerabilitiesForImage.findHighSeverityVulnerabilitiesForImage(imageUrl, PROJECT_ID);
        sleep(SLEEP_TIME);
        tries += 1;
    } while (result.size() != 1 && tries < TRY_LIMIT);
    assertEquals(1, result.size());
    // clean up
    String[] lowNameArr = low.getName().split("/");
    String lowId = lowNameArr[lowNameArr.length - 1];
    DeleteOccurrence.deleteOccurrence(lowId, PROJECT_ID);
    String[] nameArr = critical.getName().split("/");
    String occId = nameArr[nameArr.length - 1];
    DeleteOccurrence.deleteOccurrence(occId, PROJECT_ID);
    DeleteNote.deleteNote(vulnNoteId, PROJECT_ID);
}
Also used : VulnerabilityNote(io.grafeas.v1.VulnerabilityNote) DiscoveryNote(io.grafeas.v1.DiscoveryNote) Note(io.grafeas.v1.Note) Occurrence(io.grafeas.v1.Occurrence) VulnerabilityOccurrence(io.grafeas.v1.VulnerabilityOccurrence) DiscoveryOccurrence(io.grafeas.v1.DiscoveryOccurrence) ContainerAnalysisClient(com.google.cloud.devtools.containeranalysis.v1.ContainerAnalysisClient) Date(java.util.Date) Test(org.junit.Test)

Example 7 with ContainerAnalysisClient

use of com.google.cloud.devtools.containeranalysis.v1.ContainerAnalysisClient in project java-docs-samples by GoogleCloudPlatform.

the class Samples method createOccurrence.

// [END create_note]
// [START create_occurrence]
/**
 * Creates and returns a new occurrence
 *
 * @param imageUrl the Container Registry URL associated with the image
 *                 example: "https://gcr.io/project/image@sha256:foo"
 * @param parentNoteId the identifier of the note associated with this occurrence
 * @param projectId the GCP project the occurrence will be created under
 * @return an Occurrence object representing the new occurrence
 * @throws Exception on errors while closing the client
 */
public static Occurrence createOccurrence(String imageUrl, String parentNoteId, String projectId) throws Exception {
    try (ContainerAnalysisClient client = ContainerAnalysisClient.create()) {
        final String parentNoteName = client.formatNoteName(projectId, parentNoteId);
        final String projectName = client.formatProjectName(projectId);
        Occurrence.Builder occBuilder = Occurrence.newBuilder();
        occBuilder.setNoteName(parentNoteName);
        occBuilder.setResourceUrl(imageUrl);
        VulnerabilityDetails vd = VulnerabilityType.VulnerabilityDetails.newBuilder().build();
        occBuilder.setVulnerabilityDetails(vd);
        Occurrence newOcc = occBuilder.build();
        return client.createOccurrence(projectName, newOcc);
    }
}
Also used : VulnerabilityDetails(com.google.containeranalysis.v1alpha1.VulnerabilityType.VulnerabilityDetails) ContainerAnalysisClient(com.google.cloud.devtools.containeranalysis.v1alpha1.ContainerAnalysisClient) Occurrence(com.google.containeranalysis.v1alpha1.Occurrence)

Example 8 with ContainerAnalysisClient

use of com.google.cloud.devtools.containeranalysis.v1.ContainerAnalysisClient in project java-docs-samples by GoogleCloudPlatform.

the class Samples method getDiscoveryInfo.

// [END get_note]
// [START discovery_info]
/**
 * Retrieves the Discovery occurrence created for a specified image
 * This occurrence contains information about the initial scan on the image
 *
 * @param imageUrl the Container Registry URL associated with the image
 *                 example: "https://gcr.io/project/image@sha256:foo"
 * @param projectId the GCP project the occurrence will be created under
 * @throws Exception on errors while closing the client
 */
public static void getDiscoveryInfo(String imageUrl, String projectId) throws Exception {
    String filterStr = "kind=\"DISCOVERY\" AND resourceUrl=\"" + imageUrl + "\"";
    try (ContainerAnalysisClient client = ContainerAnalysisClient.create()) {
        final String projectName = client.formatProjectName(projectId);
        ListOccurrencesRequest.Builder req = ListOccurrencesRequest.newBuilder();
        req.setFilter(filterStr).setParent(projectName);
        ListOccurrencesPagedResponse response = client.listOccurrences(req.build());
        for (Occurrence o : response.iterateAll()) {
            System.out.println(o);
        }
    }
}
Also used : ListOccurrencesRequest(com.google.containeranalysis.v1alpha1.ListOccurrencesRequest) ContainerAnalysisClient(com.google.cloud.devtools.containeranalysis.v1alpha1.ContainerAnalysisClient) Occurrence(com.google.containeranalysis.v1alpha1.Occurrence) ListOccurrencesPagedResponse(com.google.cloud.devtools.containeranalysis.v1alpha1.PagedResponseWrappers.ListOccurrencesPagedResponse)

Aggregations

ContainerAnalysisClient (com.google.cloud.devtools.containeranalysis.v1alpha1.ContainerAnalysisClient)7 Occurrence (com.google.containeranalysis.v1alpha1.Occurrence)4 ListOccurrencesPagedResponse (com.google.cloud.devtools.containeranalysis.v1alpha1.PagedResponseWrappers.ListOccurrencesPagedResponse)2 ListOccurrencesRequest (com.google.containeranalysis.v1alpha1.ListOccurrencesRequest)2 ContainerAnalysisClient (com.google.cloud.devtools.containeranalysis.v1.ContainerAnalysisClient)1 ListNoteOccurrencesPagedResponse (com.google.cloud.devtools.containeranalysis.v1alpha1.PagedResponseWrappers.ListNoteOccurrencesPagedResponse)1 Note (com.google.containeranalysis.v1alpha1.Note)1 VulnerabilityDetails (com.google.containeranalysis.v1alpha1.VulnerabilityType.VulnerabilityDetails)1 DiscoveryNote (io.grafeas.v1.DiscoveryNote)1 DiscoveryOccurrence (io.grafeas.v1.DiscoveryOccurrence)1 Note (io.grafeas.v1.Note)1 Occurrence (io.grafeas.v1.Occurrence)1 VulnerabilityNote (io.grafeas.v1.VulnerabilityNote)1 VulnerabilityOccurrence (io.grafeas.v1.VulnerabilityOccurrence)1 Date (java.util.Date)1 Test (org.junit.Test)1