Skip to content

Commit

Permalink
evaluator: use impersonate groups if impersonate email is set (#1701)
Browse files Browse the repository at this point in the history
  • Loading branch information
calebdoxsey committed Dec 21, 2020
1 parent c367498 commit 4eec2ed
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 10 deletions.
11 changes: 8 additions & 3 deletions authorize/evaluator/opa/policy/authz.rego
Expand Up @@ -14,6 +14,8 @@ all_allowed_groups := get_allowed_groups(route_policy)
all_allowed_users := get_allowed_users(route_policy)
all_allowed_idp_claims := get_allowed_idp_claims(route_policy)

is_impersonating := count(input.session.impersonate_email) > 0

# allow public
allow {
route_policy.AllowPublicUnauthenticatedAccess == true
Expand All @@ -35,39 +37,42 @@ allow {

# allow by email
allow {
not is_impersonating
user.email == all_allowed_users[_]
input.session.impersonate_email == ""
}

# allow group
allow {
not is_impersonating
some group
groups[_] = group
all_allowed_groups[_] = group
input.session.impersonate_groups == null
}

# allow by impersonate email
allow {
is_impersonating
all_allowed_users[_] = input.session.impersonate_email
}

# allow by impersonate group
allow {
is_impersonating
some group
input.session.impersonate_groups[_] = group
all_allowed_groups[_] = group
}

# allow by domain
allow {
not is_impersonating
some domain
email_in_domain(user.email, all_allowed_domains[domain])
input.session.impersonate_email == ""
}

# allow by impersonate domain
allow {
is_impersonating
some domain
email_in_domain(input.session.impersonate_email, all_allowed_domains[domain])
}
Expand Down
10 changes: 4 additions & 6 deletions authorize/evaluator/opa/policy/authz_test.rego
Expand Up @@ -70,7 +70,7 @@ test_group_allowed {
"groups": ["1"]
} with
input.http as { "url": "http://example.com" } with
input.session as { "id": "session1", "impersonate_groups": null }
input.session as { "id": "session1" }
}

test_impersonate_groups_not_allowed {
Expand All @@ -86,12 +86,10 @@ test_impersonate_groups_not_allowed {
"user": {
"email": "x@example.com"
},
"directory_user": {
"groups": ["1"]
}
"groups": ["1"]
} with
input.http as { "url": "http://example.com" } with
input.session as { "id": "session1", "impersonate_groups": ["2"] }
input.session as { "id": "session1", "impersonate_email": "y@example.com", "impersonate_groups": ["2"] }
}

test_impersonate_groups_allowed {
Expand All @@ -112,7 +110,7 @@ test_impersonate_groups_allowed {
}
} with
input.http as { "url": "http://example.com" } with
input.session as { "id": "session1", "impersonate_groups": ["2"] }
input.session as { "id": "session1", "impersonate_email": "y@example.com", "impersonate_groups": ["2"] }
}

test_domain_allowed {
Expand Down
2 changes: 1 addition & 1 deletion authorize/evaluator/opa/policy/statik.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 4eec2ed

Please sign in to comment.