Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
Config is a typed wrapper around a Spec. In the future Spec may be exposed as a real kube api; this type is meant for an on-disk representation given to the proxy on start and omits spec/status and other common kube trimmings.
type Match ¶
type Match struct {
GroupVersion string `json:"apiVersion"`
Resource string `json:"resource"`
Verbs []string `json:"verbs"`
}
Match determines which requests the rule applies to
type ObjectTemplate ¶
type ObjectTemplate struct {
Type string `json:"type"`
ID string `json:"id"`
Relation string `json:"relation,omitempty"`
}
ObjectTemplate represents a component of a relationship where some fields may be omitted or templated.
type PreFilter ¶
type PreFilter struct {
// Name is a jmespath defining how to construct an allowed Name from an
// LR or LS response.
Name string `json:"name"`
// Namespace is a jmespath defining how to construct an allowed Namespace
// from an LR or LS response.
Namespace string `json:"namespace,omitempty"`
// ByResource is a template defining a LookupResources request to filter on.
// The resourceID will be ignored; unused fields should be set to `*`.
ByResource *StringOrTemplate `json:"byResource,optional"`
// BySubject is a template defining a LookupSubjects request to filter on.
// The subjectID will be ignored; unused fields should be set to `*`.
BySubject *StringOrTemplate `json:"bySubject,optional"`
}
PreFilter defines a LookupResources or LookupSubjects request the results of which are used to filter responses. Prefilters work by generating a list of allowed object (name, namespace) pairs ahead of / in parallel with the kube request.
type RelationshipTemplate ¶
type RelationshipTemplate struct {
Resource ObjectTemplate `json:"resource"`
Subject ObjectTemplate `json:"subject"`
}
RelationshipTemplate represents a relationship where some fields may be omitted or templated.
type Spec ¶
type Spec struct {
Locking LockMode `json:"lock,omitempty"`
Matches []Match `json:"match"`
Checks []StringOrTemplate `json:"check,omitempty"`
Must []StringOrTemplate `json:"must,omitempty"`
MustNot []StringOrTemplate `json:"mustNot,omitempty"`
Writes []StringOrTemplate `json:"write,omitempty"`
PreFilters []PreFilter `json:"prefilter,omitempty"`
}
Spec defines a single rule for the proxy that matches incoming requests to an optional set of checks, an optional set of writes, and an optional filter.
type StringOrTemplate ¶
type StringOrTemplate struct {
Template string `json:"tpl,inline"`
*RelationshipTemplate `json:",inline"`
}
StringOrTemplate either contains a string representing a relationship template, or a full RelationshipTemplate definition.