aws-container-image-scanner
Version:
AWS Container Image Scanner - Enterprise tool for scanning EKS clusters, analyzing Bitnami container dependencies, and generating migration guidance for AWS ECR alternatives with security best practices.
118 lines • 3.43 kB
TypeScript
export interface ScanOptions {
accounts?: string;
regions: string;
orgScan?: boolean;
roleArn?: string;
output?: string;
criticalOnly?: boolean;
verbose?: boolean;
}
export interface ContainerImage {
account: string;
accountName: string;
region: string;
cluster: string;
namespace: string;
workload: string;
workloadType: 'deployment' | 'statefulset' | 'daemonset' | 'pod' | 'job' | 'cronjob';
container: string;
image: string;
tag: string;
isLatest: boolean;
riskLevel: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW';
category: string;
ecrAlternative: string;
replicas: number;
lastScanned: string;
pullPolicy?: string;
resources?: {
requests?: {
cpu?: string;
memory?: string;
};
limits?: {
cpu?: string;
memory?: string;
};
};
}
export interface ScanResults {
metadata: {
scanId: string;
timestamp: string;
version: string;
totalAccounts: number;
totalClusters: number;
daysUntilDeadline: number;
broadcomDeadline: string;
scanDuration: number;
};
summary: {
totalImages: number;
criticalRisk: number;
highRisk: number;
mediumRisk: number;
lowRisk: number;
categorizedImages: Record<string, number>;
topRiskClusters: Array<{
cluster: string;
account: string;
region: string;
bitnamiCount: number;
criticalCount: number;
}>;
};
images: ContainerImage[];
clusters: Array<{
account: string;
region: string;
name: string;
status: string;
version?: string;
bitnamiImageCount: number;
totalImageCount: number;
}>;
errors: Array<{
account: string;
region?: string;
cluster?: string;
error: string;
timestamp: string;
errorType: 'AUTH' | 'NETWORK' | 'KUBECTL' | 'PARSING' | 'OTHER';
}>;
}
export declare class ContainerImageScanner {
results: ScanResults;
private startTime;
private bitnamiImages;
constructor();
isBitnamiImage(imageName: string): boolean;
assessRiskLevel(imageName: string): 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
getAwsAlternative(imageName: string): string | undefined;
searchImages(searchText: string, fields?: string[]): ContainerImage[];
filterImages(filters: {
field: string;
operator: string;
value: any;
}[]): ContainerImage[];
getClusterSummary(): any[];
startInteractiveMode(): Promise<void>;
displayResults(images?: ContainerImage[]): void;
displayClusterSummary(): void;
processScanResults(scanData: any): any;
processCluster(cluster: any): any;
private getRiskPriority;
validateAccountId(accountId: string): boolean;
validateRegion(region: string): boolean;
private initializeResults;
performScan(options: ScanOptions): Promise<void>;
discoverOrganizationAccounts(): Promise<Array<{
id: string;
name: string;
}>>;
private calculateSummary;
private saveResults;
scanAccount(accountId: string, accountName: string, regions: string[]): Promise<void>;
generateRoleSetupInstructions(_options: any): Promise<void>;
}
//# sourceMappingURL=scanner.d.ts.map