|  | syntax = "proto3"; | 
|  | package metropolis.proto.ext; | 
|  | option go_package = "source.monogon.dev/metropolis/proto/ext"; | 
|  |  | 
|  | import "google/protobuf/descriptor.proto"; | 
|  |  | 
|  | extend google.protobuf.MethodOptions { | 
|  | // Set authorization policy for this RPC. If not set but the service is | 
|  | // configured to use authorization, the default/zero value of the | 
|  | // Authorization message will be used (effectively allowing all | 
|  | // authenticated users). | 
|  | Authorization authorization = 1000; | 
|  | } | 
|  |  | 
|  |  | 
|  | // Permission is a combined activity/object that an identity can perform in the | 
|  | // cluster. | 
|  | // | 
|  | // MVP: this might get replaced with a full activity/object split later on. | 
|  | enum Permission { | 
|  | PERMISSION_UNSPECIFIED = 0; | 
|  | PERMISSION_GET_REGISTER_TICKET = 1; | 
|  | PERMISSION_READ_CLUSTER_STATUS = 2; | 
|  | PERMISSION_UPDATE_NODE_SELF = 3; | 
|  | PERMISSION_APPROVE_NODE = 4; | 
|  | } | 
|  |  | 
|  | // Authorization policy for an RPC method. This message/API does not have the | 
|  | // same stability guarantees as the rest of Metropolis APIs - it is internal, | 
|  | // might change in wire and text incompatible ways and should not be used by | 
|  | // consumers of the API. | 
|  | message Authorization { | 
|  | // Set of permissions required from the caller. | 
|  | repeated Permission need = 1; | 
|  | // If set, this API can be called unauthorized and unauthenticated, thereby | 
|  | // allowing full access to anyone, including public access by anyone with | 
|  | // network connectivity to the cluster.. Ignored if `need` is non-empty. | 
|  | bool allow_unauthenticated = 2; | 
|  | } |