Commit graph

846 commits

Author SHA1 Message Date
bobby
d5433f8431
depedency: bump envoy to 1.15.0 (#1119)
Signed-off-by: Bobby DeSimone <bobbydesimone@gmail.com>
2020-07-21 08:25:37 -07:00
bobby
1912e32927
deps: update envoy to 1.14.4 (#1076)
Signed-off-by: Bobby DeSimone <bobbydesimone@gmail.com>
2020-07-20 21:12:44 -07:00
Travis Groth
75f2ed93ea
Set loopback address by ipv4 IP (#1116) 2020-07-20 22:31:48 -04:00
Travis Groth
bfc726ec3f
prevent dirty git state during release (#1117) 2020-07-20 18:00:03 -04:00
Travis Groth
a1b6bfec56
docs: Cloud Run / GCP Serverless (#1101)
* Add GCP Serverless and Cloud Run docs
2020-07-20 14:00:52 -04:00
Cuong Manh Le
e8d3ce1a2e
authorize,proxy: allow traefik forward auth without uri query (#1103)
In #1030, the fix was done without aware of the context that traefik
forward auth mode did allow request without the "?uri=". Previosuly,
this is done in proxy, and by converting the forward auth request to
actual request. The fix is #1030 prevent this conversion, to makre
authorize service aware of which is forward auth request.

But that causes traefik forward auth without "?uri" stop working. Fixing
it by making the authorize service also honor the forwarded uri header,
too.

Fixes #1096
2020-07-21 00:58:14 +07:00
bobby
e85226b609
grpc: use relative paths in codegen (#1106)
Signed-off-by: Bobby DeSimone <bobbydesimone@gmail.com>
2020-07-20 06:40:11 -07:00
Caleb Doxsey
fff782e04c
authorize: add evaluator store (#1105)
* add evaluator store

* handle arrays
2020-07-20 07:39:34 -06:00
Renovate Bot
d2656ecd67 chore(deps): update google.golang.org/genproto commit hash to 11fb19a 2020-07-20 08:00:29 +00:00
Cuong Manh Le
9dae633fe5
internal/frontend/assets/html: make timestamp human readable (#1107)
Since we switch to use databroker, time in template is now protobuf
timestamp instead of time.Time, that causes it appears in raw form
instead of human-readable format.

Fix this by converting protobuf timestamp to time.Time in template.
There's still a breaking change, though. The time will now appears in
UTC instead of local time.

Fixes #1100
2020-07-20 13:35:57 +07:00
Renovate Bot
0f17fb0d95 chore(deps): update module spf13/cobra to v1 2020-07-20 03:22:08 +00:00
Renovate Bot
2a99088cdf chore(deps): update module open-policy-agent/opa to v0.22.0 2020-07-20 02:27:34 +00:00
Renovate Bot
c2e487a996 chore(deps): update github.com/skratchdot/open-golang commit hash to eef8423 2020-07-20 01:06:57 +00:00
bobby
ffb6b395e2
deployment: fix pomerium-cli release (#1104)
Signed-off-by: Bobby DeSimone <bobbydesimone@gmail.com>
2020-07-17 12:45:16 -07:00
Travis Groth
ca6715d3c5
Move examples repo into main repo (#1102) 2020-07-17 14:23:06 -04:00
Caleb Doxsey
b79e73b8b8
config: add support for policies stored in the databroker (#1099)
* wip

* always use databroker config source

* add test

* valid policy, remove debug lines
2020-07-17 10:35:29 -06:00
Cuong Manh Le
821f2e9000
config: allow setting directory sync interval and timeout (#1098)
Updates #567
2020-07-17 23:11:27 +07:00
Travis Groth
25867501d4
ci: Add cloudrun build (#1097)
* add cloudrun image build
2020-07-17 12:01:30 -04:00
Cuong Manh Le
408f201d16
authorize/evaluator/opa/policy: fix allow rules with impersonate (#1094)
Currently, with impersonated request, the real user email/group still
has effects.

Example:

	data.route_policies as [{
	    "source": "example.com",
	    "allowed_users": ["x@example.com"]
	}] with
	input.databroker_data as {
	    "session": {
	        "user_id": "user1"
	    },
	    "user": {
	        "email": "x@example.com"
	    }
	} with
	input.http as { "url": "http://example.com" } with
	input.session as { "id": "session1", "impersonate_email": "y@example.com" }

Here user "x@example.com" is allowed, but was impersonated as
"y@example.com". As the rules indicated, the request must be denied,
because it only allows "x@example.com", not "y@example.com". The current
bug causes the request is still allowed.

To fix it, when evaluates rules for allowed email/group/domain, we must checking
that the impersonate email/groups is not set/empty.

Fixes #1091
2020-07-17 22:07:11 +07:00
Cuong Manh Le
59c17fb497
internal/directory: improve google user groups list (#1092)
Skip group without members, so it saves us time to handle group members,
and reduce the size of groups.

While at it, also querying API with the fields we need.

Fixes #567
2020-07-17 16:51:26 +07:00
Caleb Doxsey
02b4e4b619
fix deep copy of config (#1089) 2020-07-17 10:42:24 +07:00
Caleb Doxsey
d3a7ee38be
options refactor (#1088)
* refactor config loading

* wip

* move autocert to its own config source

* refactor options updaters

* fix stuttering

* fix autocert validate check
2020-07-16 14:30:15 -06:00
Caleb Doxsey
eef4c6f2c0
kubernetes docs (#1087)
* wip

* wip

* remove dead code

* add logging about errors for caching credentials

* rename subcommand

* add kubernetes docs
2020-07-16 12:15:41 -06:00
Caleb Doxsey
5df10d1539
pomerium-cli k8s exec-credential (#1073)
* wip

* wip

* remove dead code

* add logging about errors for caching credentials

* rename subcommand
2020-07-16 11:40:43 -06:00
Cuong Manh Le
ee1f9093ee
internal/directory: use both id and name for group (#1086)
Fixes #1085
2020-07-17 00:15:11 +07:00
Caleb Doxsey
96424dac0f
implement google cloud serverless authentication (#1080)
* add google cloud serverless support

* force ipv4 for google cloud serverless

* disable long line linting

* fix destination hostname

* add test

* add support for service accounts

* fix utc time in test
2020-07-16 08:25:14 -06:00
Travis Groth
58810cdb52
internal/directory/google: return both group e-mail and id (#1083)
* internal/directory/google: return both group e-mail and id
2020-07-16 07:19:30 -04:00
Cuong Manh Le
8e56db7830
docs/docs: add changelog for #1055 (#1084) 2020-07-16 09:57:25 +07:00
Dmitri Farkov
253addcad6
config: change certificates config key parsing to attempt Base64 decoding first. (#1055) 2020-07-15 21:15:57 +07:00
Cuong Manh Le
a5db94434d
pkg/storage: add package docs (#1078) 2020-07-15 10:30:37 +07:00
Travis Groth
8ebf06dd71
Force redirect scheme to https (#1075) 2020-07-14 23:11:22 -04:00
Cuong Manh Le
2f84dd2aff
Add storage backend interface (#1072)
* pkg: add storage package

Which contains storage.Backend interface to initial support for multiple
backend storage.

* pkg/storage: add inmemory storage

* internal/databroker: use storage.Backend interface

Instead of implementing multiple databroker server implementation for
each kind of storage backend, we use only one databroker server
implementation, which is supported multiple storage backends, which
satisfy storage.Backend interface.
2020-07-15 09:42:01 +07:00
Caleb Doxsey
a70254ab76
kubernetes apiserver integration (#1063)
* sessions: support bearer tokens in authorization

* wip

* remove dead code

* refactor signed jwt code

* use function

* update per comments

* fix test
2020-07-14 08:33:24 -06:00
Caleb Doxsey
5f6a67e6eb
use custom binary for arm64 linux release (#1065) 2020-07-14 07:59:26 -06:00
Renovate Bot
645f0a2ff8 chore(deps): update module google.golang.org/api to v0.29.0 2020-07-14 00:08:55 +00:00
Cuong Manh Le
58fb6ea3c4
proxy: fix invalid session after logout in forward auth mode (#1062)
Currently, authorize service does handle unauthenticated request in
forward auth mode, and return status 401.

But proxy has not handled the response yet, and always returns 403 for
both unauthenticated and unauthorized request. That breaks session
handling in forward auth mode. That said, if user was signed out, or for
any reason, authorize service return 401 status, proxy does not redirect
user to re-signin, but always return 403.

To fix it, proxy is changed to handle envoy check response in more
details, to distinguish between 401 and 403 status.

Thanks to @simbaja for rasing the problem and come up with original fix.

Fixes #1014
Fixes #858
2020-07-14 01:07:49 +07:00
Renovate Bot
7437a4967d chore(deps): update module envoyproxy/go-control-plane to v0.9.6 2020-07-13 11:17:51 +00:00
Renovate Bot
fda39942ad chore(deps): update golang.org/x/net commit hash to ab34263 2020-07-13 09:31:08 +00:00
Renovate Bot
2e763ac289 chore(deps): update google.golang.org/genproto commit hash to 8698661 2020-07-13 06:14:28 +00:00
Renovate Bot
c6bdd0be5e chore(deps): update golang.org/x/crypto commit hash to 948cd5f 2020-07-13 05:14:25 +00:00
renovate[bot]
51c8de70ba
chore(deps): update module open-policy-agent/opa to v0.21.1 (#1061)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2020-07-12 22:13:57 -07:00
Cuong Manh Le
58f39db91d
authorize: clear session state if session was deleted in databroker (#1053)
When user signin to 2 sites "a.example.com" and "b.example.com", we're
using the same session for user when accessing those sites. When user
singout from "a.example.com", that session is marked as deleted, thus
user now can not access "b.example.com" nor re-signin to get new access.
User must wait the cookie is expired, or delete the cookie manually to
re-signin to "b.example.com".

This is also affected if user signout from authenticate service
dashboard page directly.

To fix this, we will clear the session state if the session was deleted,
authorize service will return unauthorized, so the user will be
redirected to re-authenticate.

Updates #1014
Updates #858
2020-07-11 08:46:02 +07:00
Cuong Manh Le
d40f294586
authorize: include "kid" in JWT header (#1049)
Fixes #1046
2020-07-09 12:39:53 +07:00
Cuong Manh Le
6f3817aee5
pkg/grpc: fix wrong audit protoc gen file (#1048) 2020-07-08 22:57:12 +07:00
Caleb Doxsey
73105c0b08
audit: add protobuf definitions (#1047) 2020-07-08 07:23:03 -06:00
Cuong Manh Le
de54e449f0
docs/recipes: add local oidc example (#1045)
docs/recipes: add local oidc example

Closes #1042
2020-07-08 08:59:02 +07:00
Cuong Manh Le
2c3c7b837d
docs/configuration: add doc for trailing slash limitation in "To" field (#1040)
Due to the limitation of envoy, it can't handle rewriting of "From"
field without path to a destination with path.

Updates #880
Updates #1033
2020-07-07 11:35:59 +07:00
Renovate Bot
f80a72d680 chore(deps): update google.golang.org/genproto commit hash to 8e8330b 2020-07-07 01:53:44 +00:00
Cuong Manh Le
9821476086 proxy: fix redirect url with traefik forward auth
With Traefik in forward auth mode, when accessing:

	https://example.com/foo

traefik will send a request like this to proxy:

	https://pomerium?uri=https://example.com

The path "/foo" is passed to proxy via "X-Forwarded-Uri" instead of via
query parameters. When proxy redirects request to authenticate, it only
set the "pomerirum_redirect_url" to the value of "uri".

So after authentication success, the user will be redirected to example.com
instead of example.com/foo. If "X-Forwarded-Uri" is present, we should
add it to redirect uri, so the user will be redirected to right place.
2020-07-04 01:23:44 +07:00
Cuong Manh Le
0ecdbf2db3 authenticate: fix wrong SignIn telemetry name 2020-07-04 00:46:33 +07:00