Example #1
0
        public static async Task ProcessImages(DirectoryInfo logDir)
        {
            var imageSet = await Anchore.GetAggregatedImages();

            foreach (var tagKey in imageSet.Keys.OrderBy(s => s))
            {
                var images = imageSet[tagKey];

                for (int i = 0; i < images.Count; i++)
                {
                    var image           = images[i];
                    var vulnerabilities = await Anchore.GetVulnerabilitiesForImage(image);

                    var result = VulnerabilityStore.Save(logDir, image, null, vulnerabilities);
                    WriteLine($"{image.Tag}; {image.Digest}; New: {result}");

                    if (i + 1 >= images.Count)
                    {
                        continue;
                    }

                    for (int j = i + 1; j < images.Count; j++)
                    {
                        var image2           = images[j];
                        var vulnerabilities2 = await Anchore.GetVulnerabilitiesForImage(image);

                        var result2 = VulnerabilityStore.Save(logDir, image2, image, vulnerabilities2);
                    }
                }
            }
        }
Example #2
0
        public static async Task DiffVulnerabilities(DirectoryInfo logDir, string tag)
        {
            var imageDictionary = await Anchore.GetAggregatedImages();

            var selectedTags = new List <string>();

            foreach (var tagKey in imageDictionary.Keys)
            {
                if (tagKey.EndsWith(tag))
                {
                    selectedTags.Clear();
                    selectedTags.Add(tagKey);
                    break;
                }
                else if (tagKey.Contains(tag))
                {
                    selectedTags.Add(tagKey);
                }
            }

            foreach (var selectedTag in selectedTags)
            {
                var images = imageDictionary[selectedTag];
                if (images == null)
                {
                    WriteLine($"No image found for {tag}.");
                }
                else if (images.Count == 1)
                {
                    WriteLine($"Only 1 image found for {selectedTag}.");
                }
                else
                {
                    WriteLine($"Diff {images.Count} images for {selectedTag}.");

                    for (int i = 0; i < images.Count - 1; i++)
                    {
                        await DiffVulnerabilitiesForTwoImages(logDir, images[i], images[i + 1]);

                        WriteLine();
                    }
                }
            }
        }