blob: 42beb886e5c8e8663e31713eeea3eff154b36a25 [file] [log] [blame]
Serge Bazanski9ffa1f92021-09-01 15:42:23 +02001syntax = "proto3";
2package metropolis.proto.ext;
3option go_package = "source.monogon.dev/metropolis/proto/ext";
4
5import "google/protobuf/descriptor.proto";
6
7extend google.protobuf.MethodOptions {
8 // Set authorization policy for this RPC. If not set but the service is
9 // configured to use authorization, the default/zero value of the
10 // Authorization message will be used (effectively allowing all
11 // authenticated users).
12 Authorization authorization = 1000;
13}
14
15
16// Permission is a combined activity/object that an identity can perform in the
17// cluster.
18//
19// MVP: this might get replaced with a full activity/object split later on.
20enum Permission {
21 PERMISSION_UNSPECIFIED = 0;
22 PERMISSION_GET_REGISTER_TICKET = 1;
Serge Bazanskid7d6e022021-09-01 15:03:06 +020023 PERMISSION_READ_CLUSTER_STATUS = 2;
Serge Bazanski2893e982021-09-09 13:06:16 +020024 PERMISSION_UPDATE_NODE_SELF = 3;
Serge Bazanski9ffa1f92021-09-01 15:42:23 +020025}
26
27// Authorization policy for an RPC method. This message/API does not have the
28// same stability guarantees as the rest of Metropolis APIs - it is internal,
29// might change in wire and text incompatible ways and should not be used by
30// consumers of the API.
31message Authorization {
32 // Set of permissions required from the caller.
33 repeated Permission need = 1;
34 // If set, this API can be called unauthorized and unauthenticated, thereby
35 // allowing full access to anyone, including public access by anyone with
36 // network connectivity to the cluster.. Ignored if `need` is non-empty.
37 bool allow_unauthenticated = 2;
38}