blob: 0275bba062142819346fbd35b43b05792895cba1 [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 Bazanski1612d4b2021-11-12 13:54:15 +010025 PERMISSION_APPROVE_NODE = 4;
Mateusz Zalegabb2edbe2022-06-08 11:57:09 +020026 PERMISSION_UPDATE_NODE_ROLES = 5;
Serge Bazanski9ffa1f92021-09-01 15:42:23 +020027}
28
29// Authorization policy for an RPC method. This message/API does not have the
30// same stability guarantees as the rest of Metropolis APIs - it is internal,
31// might change in wire and text incompatible ways and should not be used by
32// consumers of the API.
33message Authorization {
34 // Set of permissions required from the caller.
35 repeated Permission need = 1;
36 // If set, this API can be called unauthorized and unauthenticated, thereby
37 // allowing full access to anyone, including public access by anyone with
38 // network connectivity to the cluster.. Ignored if `need` is non-empty.
39 bool allow_unauthenticated = 2;
40}