| /* |
| * Copyright 2021 Google LLC |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| syntax = "proto3"; |
| |
| package localtoast; |
| |
| import "google/protobuf/duration.proto"; |
| import "google/protobuf/timestamp.proto"; |
| import "proto/v1/compliance.proto"; |
| |
| option go_package = "github.com/google/localtoast/scannerlib/proto/api_go_proto"; |
| |
| message ScanConfig { |
| // The maximum amount of time the entire scan can run for. |
| google.protobuf.Duration scan_timeout = 1; |
| // The maximum amout of time each individual benchmark check can run for. |
| google.protobuf.Duration benchmark_check_timeout = 2; |
| // A list of files to opt out of being displayed in the scan results. |
| OptOutConfig opt_out_config = 3; |
| // A list of replacements to apply to the benchmark config used. |
| ReplacementConfig replacement_config = 5; |
| repeated BenchmarkConfig benchmark_configs = 4; |
| } |
| |
| message OptOutConfig { |
| // Don't display the file content / filename of the files whose path matches |
| // a regex in the list. |
| repeated string content_optout_regexes = 1; |
| repeated string filename_optout_regexes = 2; |
| // Skip the files/directories when traversing the filesystem recursively if |
| // they match a regex in the list. |
| repeated string traversal_optout_regexes = 3; |
| } |
| |
| message ReplacementConfig { |
| // Replace paths starting with the specified prefixes. |
| map<string, string> path_prefix_replacements = 1; |
| } |
| |
| message BenchmarkConfig { |
| string id = 1; |
| grafeas.v1.ComplianceNote compliance_note = 2; |
| } |
| |
| message ScanResults { |
| google.protobuf.Timestamp start_time = 1; |
| google.protobuf.Timestamp end_time = 2; |
| string scanner_version = 3; |
| string benchmark_version = 4; |
| string benchmark_document = 8; |
| ScanStatus status = 5; |
| repeated ComplianceResult compliant_benchmarks = 6; |
| repeated ComplianceResult non_compliant_benchmarks = 7; |
| } |
| |
| message ScanStatus { |
| ScanStatusEnum status = 1; |
| string failure_reason = 2; |
| enum ScanStatusEnum { |
| UNSPECIFIED = 0; |
| FAILED = 1; |
| SUCCEEDED = 2; |
| } |
| } |
| |
| message ComplianceResult { |
| reserved 2; |
| // ID of the Compliance Note associated with the Compliance Occurrence. |
| // This is used to identify which benchmark failed. |
| string id = 1; |
| grafeas.v1.ComplianceOccurrence compliance_occurrence = 3; |
| } |
| |
| // Messages used by the ScanApiProvider to interact with the file system. |
| message DirContent { |
| string name = 1; |
| bool is_dir = 2; |
| bool is_symlink = 3; |
| } |
| message PosixPermissions { |
| // File permissions represented by 4 octal digits |
| // (flags, owner, group, other), e.g. 1744 |
| int32 permission_num = 1; |
| int32 uid = 2; |
| string user = 3; // "" if unowned |
| int32 gid = 4; |
| string group = 5; // "" if unowned |
| } |
| |
| // Per-OS benchmark configs are stored in .textproto files using this format. |
| message PerOsBenchmarkConfig { |
| // The OS and config versions the benchmarks applies to. |
| grafeas.v1.ComplianceVersion version = 1; |
| // The benchmark IDs that apply to this OS. The referenced benchmarks are |
| // defined in separate benchmark definition files. |
| repeated string benchmark_id = 2; |
| // Overrides the default profile level for specific benchmarks. |
| repeated ProfileLevelOverride profile_level_override = 3; |
| } |
| |
| message ProfileLevelOverride { |
| int32 level = 1; |
| repeated string benchmark_id = 2; |
| } |