api/proto/cso/v1/secret.proto (149 lines of code) (raw):

// Licensed to Elasticsearch B.V. under one or more contributor // license agreements. See the NOTICE file distributed with // this work for additional information regarding copyright // ownership. Elasticsearch B.V. licenses this file to you 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 cso.v1; option csharp_namespace = "Cso.V1"; option go_package = "github.com/elastic/harp/api/gen/go/cso/v1;csov1"; option java_multiple_files = true; option java_outer_classname = "SecretProto"; option java_package = "com.github.elastic.cloudsec.cso.v1"; option objc_class_prefix = "CXX"; option php_namespace = "Cso\\V1"; // ----------------------------------------------------------------------------- // RingLevel enumerates all cso ring level values. enum RingLevel { // Default value when no enumeration is specified. RING_LEVEL_INVALID = 0; // Explicitly Unknown object value. RING_LEVEL_UNKNOWN = 1; // Defines secret used by secrets. RING_LEVEL_META = 2; // Defines infrastructure level secrets. RING_LEVEL_INFRASTRUCTURE = 3; // Defines platform level secrets. RING_LEVEL_PLATFORM = 4; // Defines product level secrets. RING_LEVEL_PRODUCT = 5; // Defines application level secrets. RING_LEVEL_APPLICATION = 6; // Defines artifact level secrets. RING_LEVEL_ARTIFACT = 7; } // Secret represents secret value and metadata. message Secret { RingLevel ring_level = 1; Value value = 2; oneof path { Meta meta = 10; Infrastructure infrastructure = 11; Platform platform = 12; Product product = 13; Application application = 14; Artifact artifact = 15; } } // Value represents an encoded secret value. message Value { string type = 1; bytes body = 2; } // ----------------------------------------------------------------------------- // Meta describes secrets of secrets path components. message Meta { string key = 1; } // ----------------------------------------------------------------------------- // Infrastructure describes infrastructure secret path components. message Infrastructure { // Cloud provider name string cloud_provider = 1; // Cloud provider account identifier or alias string account_id = 2; // Cloud provider region string region = 3; // Service name used string service_name = 4; // Key is the free part of the namming specification. string key = 5; } // ----------------------------------------------------------------------------- // QualityLevel enumerates entity quality level values. enum QualityLevel { // Default value when no enumeration is specified. QUALITY_LEVEL_INVALID = 0; // Explicitly Unknown object value. QUALITY_LEVEL_UNKNOWN = 1; // Production grade QUALITY_LEVEL_PRODUCTION = 2; // Staging grade QUALITY_LEVEL_STAGING = 3; // QA Grade QUALITY_LEVEL_QA = 4; // Dev grade QUALITY_LEVEL_DEV = 5; } // Platform describes platform secret path components. message Platform { // Quality level QualityLevel stage = 1; // Paltform name string name = 2; // Platform region string region = 3; // Platform service name string service_name = 4; // Key is the free part of the namming specification. string key = 5; } // ----------------------------------------------------------------------------- // Product describes product secret path components. message Product { // Product name string name = 1; // Product version string version = 2; // Product component name string component_name = 3; // Key is the free part of the namming specification. string key = 4; } // ----------------------------------------------------------------------------- // Application describes application secret path components. message Application { // Quality level QualityLevel stage = 1; // Platform name string platform_name = 2; // Product name string product_name = 3; // Product version string product_version = 4; // Product component name string component_name = 5; // Key is the free part of the namming specification. string key = 6; } // ----------------------------------------------------------------------------- // Artifact describes artifact secret path components. message Artifact { // Artifact type string type = 1; // Artifact id string id = 2; // Key is the free part of the namming specification. string key = 3; }