mirror of
https://github.com/sourcegraph/sourcegraph.git
synced 2026-02-06 15:31:48 +00:00
Closes CORE-99, closes CORE-176 This PR is based off (and was also served as PoC of) [RFC 962: MSP IAM framework](https://docs.google.com/document/d/1ItJlQnpR5AHbrfAholZqjH8-8dPF1iQcKh99gE6SSjs/edit). It comes with two main parts: 1. The initial version of the MSP IAM SDK: `lib/managedservicesplatform/iam` - Embeds the [OpenFGA server implementation](https://github.com/openfga/openfga/tree/main/pkg/server) and exposes the a `ClientV1` for interacting with it. - Automagically manages the both MSP IAM's and OpenFGA's database migrations upon initializing the `ClientV1`.  - Ensures the specified OpenFGA's store and automatization model DSL exists. - Utility types and helpers to avoid easy mistakes (i.e. make the relation tuples a bit more strongly-typed). - Decided to put all types and pre-defined values together to simulate a "central registry" and acting as a forcing function for services to form some sort of convention. Then when we migrate the OpenFGA server to a separate standalone service, it will be less headache about consolidating similar meaning types/relations but different string literals. 1. The first use case of the MSP IAM: `cmd/enterprise-portal/internal/subscriptionsservice` - Added/updated RPCs: - Listing enterprise subscriptions via permissions - Update enterprise subscriptions to assign instance domains - Update enterprise subscriptions membership to assign roles (and permissions) - A database table for enterprise subscriptions, only storing the extra instance domains as Enterprise Portal is not the writeable-source-of-truth. ## Other minor changes - Moved `internal/redislock` to `lib/redislock` to be used in MSP IAM SDK. - Call `createdb ...` as part of `enterprise-portal` install script in `sg.config.yaml` (`msp_iam` database is a hard requirement of MSP IAM framework). ## Test plan Tested with gRPC UI: - `UpdateEnterpriseSubscription` to assign an instance domain - `UpdateEnterpriseSubscriptionMembership` to assign roles - `ListEnterpriseSubscriptions`: - List by subscription ID - List by instance domain - List by view cody analytics permissions --------- Co-authored-by: Robert Lin <robert@bobheadxi.dev>
86 lines
2.0 KiB
Diff
86 lines
2.0 KiB
Diff
diff --git a/cel/BUILD.bazel b/cel/BUILD.bazel
|
|
index 6e2fc07..002b59e 100644
|
|
--- a/cel/BUILD.bazel
|
|
+++ b/cel/BUILD.bazel
|
|
@@ -4,6 +4,12 @@ package(
|
|
licenses = ["notice"], # Apache 2.0
|
|
)
|
|
|
|
+alias(
|
|
+ name = "cel",
|
|
+ actual = ":go_default_library",
|
|
+ visibility = ["//visibility:public"],
|
|
+)
|
|
+
|
|
go_library(
|
|
name = "go_default_library",
|
|
srcs = [
|
|
diff --git a/common/BUILD.bazel b/common/BUILD.bazel
|
|
index eef7f28..10b57a2 100644
|
|
--- a/common/BUILD.bazel
|
|
+++ b/common/BUILD.bazel
|
|
@@ -5,6 +5,12 @@ package(
|
|
licenses = ["notice"], # Apache 2.0
|
|
)
|
|
|
|
+alias(
|
|
+ name = "common",
|
|
+ actual = ":go_default_library",
|
|
+ visibility = ["//visibility:public"],
|
|
+)
|
|
+
|
|
go_library(
|
|
name = "go_default_library",
|
|
srcs = [
|
|
diff --git a/common/types/BUILD.bazel b/common/types/BUILD.bazel
|
|
index b5e44ff..ae133b3 100644
|
|
--- a/common/types/BUILD.bazel
|
|
+++ b/common/types/BUILD.bazel
|
|
@@ -5,6 +5,12 @@ package(
|
|
licenses = ["notice"], # Apache 2.0
|
|
)
|
|
|
|
+alias(
|
|
+ name = "types",
|
|
+ actual = ":go_default_library",
|
|
+ visibility = ["//visibility:public"],
|
|
+)
|
|
+
|
|
go_library(
|
|
name = "go_default_library",
|
|
srcs = [
|
|
diff --git a/common/types/ref/BUILD.bazel b/common/types/ref/BUILD.bazel
|
|
index 79330c3..1260306 100644
|
|
--- a/common/types/ref/BUILD.bazel
|
|
+++ b/common/types/ref/BUILD.bazel
|
|
@@ -5,6 +5,12 @@ package(
|
|
licenses = ["notice"], # Apache 2.0
|
|
)
|
|
|
|
+alias(
|
|
+ name = "ref",
|
|
+ actual = ":go_default_library",
|
|
+ visibility = ["//visibility:public"],
|
|
+)
|
|
+
|
|
go_library(
|
|
name = "go_default_library",
|
|
srcs = [
|
|
diff --git a/common/types/traits/BUILD.bazel b/common/types/traits/BUILD.bazel
|
|
index b19eb83..5c54558 100644
|
|
--- a/common/types/traits/BUILD.bazel
|
|
+++ b/common/types/traits/BUILD.bazel
|
|
@@ -5,6 +5,12 @@ package(
|
|
licenses = ["notice"], # Apache 2.0
|
|
)
|
|
|
|
+alias(
|
|
+ name = "traits",
|
|
+ actual = ":go_default_library",
|
|
+ visibility = ["//visibility:public"],
|
|
+)
|
|
+
|
|
go_library(
|
|
name = "go_default_library",
|
|
srcs = [
|