Documentation
¶
Index ¶
- Constants
- func BuiltIn() catalog.Plugin
- type AttestedNode
- type Bundle
- type DNSName
- type JoinToken
- type Migration
- type Model
- type NodeSelector
- type Plugin
- func (ds *Plugin) AppendBundle(ctx context.Context, req *datastore.AppendBundleRequest) (resp *datastore.AppendBundleResponse, err error)
- func (ds *Plugin) Configure(ctx context.Context, req *spi.ConfigureRequest) (*spi.ConfigureResponse, error)
- func (ds *Plugin) CountAttestedNodes(ctx context.Context, req *datastore.CountAttestedNodesRequest) (resp *datastore.CountAttestedNodesResponse, err error)
- func (ds *Plugin) CountBundles(ctx context.Context, req *datastore.CountBundlesRequest) (resp *datastore.CountBundlesResponse, err error)
- func (ds *Plugin) CountRegistrationEntries(ctx context.Context, req *datastore.CountRegistrationEntriesRequest) (resp *datastore.CountRegistrationEntriesResponse, err error)
- func (ds *Plugin) CreateAttestedNode(ctx context.Context, req *datastore.CreateAttestedNodeRequest) (resp *datastore.CreateAttestedNodeResponse, err error)
- func (ds *Plugin) CreateBundle(ctx context.Context, req *datastore.CreateBundleRequest) (resp *datastore.CreateBundleResponse, err error)
- func (ds *Plugin) CreateJoinToken(ctx context.Context, req *datastore.CreateJoinTokenRequest) (resp *datastore.CreateJoinTokenResponse, err error)
- func (ds *Plugin) CreateRegistrationEntry(ctx context.Context, req *datastore.CreateRegistrationEntryRequest) (resp *datastore.CreateRegistrationEntryResponse, err error)
- func (ds *Plugin) DeleteAttestedNode(ctx context.Context, req *datastore.DeleteAttestedNodeRequest) (resp *datastore.DeleteAttestedNodeResponse, err error)
- func (ds *Plugin) DeleteBundle(ctx context.Context, req *datastore.DeleteBundleRequest) (resp *datastore.DeleteBundleResponse, err error)
- func (ds *Plugin) DeleteJoinToken(ctx context.Context, req *datastore.DeleteJoinTokenRequest) (resp *datastore.DeleteJoinTokenResponse, err error)
- func (ds *Plugin) DeleteRegistrationEntry(ctx context.Context, req *datastore.DeleteRegistrationEntryRequest) (resp *datastore.DeleteRegistrationEntryResponse, err error)
- func (ds *Plugin) FetchAttestedNode(ctx context.Context, req *datastore.FetchAttestedNodeRequest) (resp *datastore.FetchAttestedNodeResponse, err error)
- func (ds *Plugin) FetchBundle(ctx context.Context, req *datastore.FetchBundleRequest) (resp *datastore.FetchBundleResponse, err error)
- func (ds *Plugin) FetchJoinToken(ctx context.Context, req *datastore.FetchJoinTokenRequest) (resp *datastore.FetchJoinTokenResponse, err error)
- func (ds *Plugin) FetchRegistrationEntry(ctx context.Context, req *datastore.FetchRegistrationEntryRequest) (resp *datastore.FetchRegistrationEntryResponse, err error)
- func (ds *Plugin) GetNodeSelectors(ctx context.Context, req *datastore.GetNodeSelectorsRequest) (resp *datastore.GetNodeSelectorsResponse, err error)
- func (*Plugin) GetPluginInfo(context.Context, *spi.GetPluginInfoRequest) (*spi.GetPluginInfoResponse, error)
- func (ds *Plugin) ListAttestedNodes(ctx context.Context, req *datastore.ListAttestedNodesRequest) (resp *datastore.ListAttestedNodesResponse, err error)
- func (ds *Plugin) ListBundles(ctx context.Context, req *datastore.ListBundlesRequest) (resp *datastore.ListBundlesResponse, err error)
- func (ds *Plugin) ListNodeSelectors(ctx context.Context, req *datastore.ListNodeSelectorsRequest) (resp *datastore.ListNodeSelectorsResponse, err error)
- func (ds *Plugin) ListRegistrationEntries(ctx context.Context, req *datastore.ListRegistrationEntriesRequest) (resp *datastore.ListRegistrationEntriesResponse, err error)
- func (ds *Plugin) PruneBundle(ctx context.Context, req *datastore.PruneBundleRequest) (resp *datastore.PruneBundleResponse, err error)
- func (ds *Plugin) PruneJoinTokens(ctx context.Context, req *datastore.PruneJoinTokensRequest) (resp *datastore.PruneJoinTokensResponse, err error)
- func (ds *Plugin) PruneRegistrationEntries(ctx context.Context, req *datastore.PruneRegistrationEntriesRequest) (resp *datastore.PruneRegistrationEntriesResponse, err error)
- func (ds *Plugin) SetBundle(ctx context.Context, req *datastore.SetBundleRequest) (resp *datastore.SetBundleResponse, err error)
- func (ds *Plugin) SetLogger(logger hclog.Logger)
- func (ds *Plugin) SetNodeSelectors(ctx context.Context, req *datastore.SetNodeSelectorsRequest) (resp *datastore.SetNodeSelectorsResponse, err error)
- func (ds *Plugin) UpdateAttestedNode(ctx context.Context, req *datastore.UpdateAttestedNodeRequest) (resp *datastore.UpdateAttestedNodeResponse, err error)
- func (ds *Plugin) UpdateBundle(ctx context.Context, req *datastore.UpdateBundleRequest) (resp *datastore.UpdateBundleResponse, err error)
- func (ds *Plugin) UpdateRegistrationEntry(ctx context.Context, req *datastore.UpdateRegistrationEntryRequest) (resp *datastore.UpdateRegistrationEntryResponse, err error)
- type RegisteredEntry
- type Selector
- type V10RegisteredEntry
- type V11Migration
- type V3AttestedNode
- type V3Bundle
- type V3CACert
- type V4RegisteredEntry
- type V5RegisteredEntry
- type V6RegisteredEntry
- type V7RegisteredEntry
- type V8RegisteredEntry
- type V8Selector
- type V9RegisteredEntry
Constants ¶
const ( PluginName = "sql" // MySQL database type MySQL = "mysql" // PostgreSQL database type PostgreSQL = "postgres" // SQLite database type SQLite = "sqlite3" )
Variables ¶
This section is empty.
Functions ¶
Types ¶
type AttestedNode ¶
type AttestedNode struct {
Model
SpiffeID string `gorm:"unique_index"`
DataType string
SerialNumber string
ExpiresAt time.Time `gorm:"index"`
NewSerialNumber string
NewExpiresAt *time.Time
Selectors []*NodeSelector
}
AttestedNode holds an attested node (agent)
func (AttestedNode) TableName ¶
func (AttestedNode) TableName() string
TableName gets table name of AttestedNode
type Bundle ¶
type Bundle struct {
Model
TrustDomain string `gorm:"not null;unique_index"`
Data []byte `gorm:"size:16777215"` // make MySQL to use MEDIUMBLOB (max 24MB) - doesn't affect PostgreSQL/SQLite
FederatedEntries []RegisteredEntry `gorm:"many2many:federated_registration_entries;"`
}
Bundle holds a trust bundle.
type DNSName ¶
type DNSName struct {
Model
RegisteredEntryID uint `gorm:"unique_index:idx_dns_entry"`
Value string `gorm:"unique_index:idx_dns_entry"`
}
DNSName holds a DNS for a registration entry
type Migration ¶
type Migration struct {
Model
// Database version
Version int
// SPIRE Code versioning
CodeVersion string
}
Migration holds database schema version number, and the SPIRE Code version number
type Model ¶
Model is used as a base for other models. Similar to gorm.Model without `DeletedAt`. We don't want soft-delete support.
type NodeSelector ¶
type NodeSelector struct {
Model
SpiffeID string `gorm:"unique_index:idx_node_resolver_map"`
Type string `gorm:"unique_index:idx_node_resolver_map"`
Value string `gorm:"unique_index:idx_node_resolver_map"`
}
NodeSelector holds a node selector by spiffe ID
func (NodeSelector) TableName ¶
func (NodeSelector) TableName() string
TableName gets table name of NodeSelector
type Plugin ¶
type Plugin struct {
datastore.UnsafeDataStoreServer
// contains filtered or unexported fields
}
Plugin is a DataStore plugin implemented via a SQL database
func New ¶
func New() *Plugin
New creates a new sql plugin struct. Configure must be called in order to start the db.
func (*Plugin) AppendBundle ¶
func (ds *Plugin) AppendBundle(ctx context.Context, req *datastore.AppendBundleRequest) (resp *datastore.AppendBundleResponse, err error)
AppendBundle append bundle contents to the existing bundle (by trust domain). If no existing one is present, create it.
func (*Plugin) Configure ¶
func (ds *Plugin) Configure(ctx context.Context, req *spi.ConfigureRequest) (*spi.ConfigureResponse, error)
Configure parses HCL config payload into config struct, and opens new DB based on the result
func (*Plugin) CountAttestedNodes ¶ added in v0.12.0
func (ds *Plugin) CountAttestedNodes(ctx context.Context, req *datastore.CountAttestedNodesRequest) (resp *datastore.CountAttestedNodesResponse, err error)
CountAttestedNodes counts all attested nodes
func (*Plugin) CountBundles ¶ added in v0.12.0
func (ds *Plugin) CountBundles(ctx context.Context, req *datastore.CountBundlesRequest) (resp *datastore.CountBundlesResponse, err error)
CountBundles can be used to count all existing bundles.
func (*Plugin) CountRegistrationEntries ¶ added in v0.12.0
func (ds *Plugin) CountRegistrationEntries(ctx context.Context, req *datastore.CountRegistrationEntriesRequest) (resp *datastore.CountRegistrationEntriesResponse, err error)
CounCountRegistrationEntries counts all registrations (pagination available)
func (*Plugin) CreateAttestedNode ¶
func (ds *Plugin) CreateAttestedNode(ctx context.Context, req *datastore.CreateAttestedNodeRequest) (resp *datastore.CreateAttestedNodeResponse, err error)
CreateAttestedNode stores the given attested node
func (*Plugin) CreateBundle ¶
func (ds *Plugin) CreateBundle(ctx context.Context, req *datastore.CreateBundleRequest) (resp *datastore.CreateBundleResponse, err error)
CreateBundle stores the given bundle
func (*Plugin) CreateJoinToken ¶
func (ds *Plugin) CreateJoinToken(ctx context.Context, req *datastore.CreateJoinTokenRequest) (resp *datastore.CreateJoinTokenResponse, err error)
CreateJoinToken takes a Token message and stores it
func (*Plugin) CreateRegistrationEntry ¶
func (ds *Plugin) CreateRegistrationEntry(ctx context.Context, req *datastore.CreateRegistrationEntryRequest) (resp *datastore.CreateRegistrationEntryResponse, err error)
CreateRegistrationEntry stores the given registration entry
func (*Plugin) DeleteAttestedNode ¶
func (ds *Plugin) DeleteAttestedNode(ctx context.Context, req *datastore.DeleteAttestedNodeRequest) (resp *datastore.DeleteAttestedNodeResponse, err error)
DeleteAttestedNode deletes the given attested node
func (*Plugin) DeleteBundle ¶
func (ds *Plugin) DeleteBundle(ctx context.Context, req *datastore.DeleteBundleRequest) (resp *datastore.DeleteBundleResponse, err error)
DeleteBundle deletes the bundle with the matching TrustDomain. Any CACert data passed is ignored.
func (*Plugin) DeleteJoinToken ¶
func (ds *Plugin) DeleteJoinToken(ctx context.Context, req *datastore.DeleteJoinTokenRequest) (resp *datastore.DeleteJoinTokenResponse, err error)
DeleteJoinToken deletes the given join token
func (*Plugin) DeleteRegistrationEntry ¶
func (ds *Plugin) DeleteRegistrationEntry(ctx context.Context, req *datastore.DeleteRegistrationEntryRequest) (resp *datastore.DeleteRegistrationEntryResponse, err error)
DeleteRegistrationEntry deletes the given registration
func (*Plugin) FetchAttestedNode ¶
func (ds *Plugin) FetchAttestedNode(ctx context.Context, req *datastore.FetchAttestedNodeRequest) (resp *datastore.FetchAttestedNodeResponse, err error)
FetchAttestedNode fetches an existing attested node by SPIFFE ID
func (*Plugin) FetchBundle ¶
func (ds *Plugin) FetchBundle(ctx context.Context, req *datastore.FetchBundleRequest) (resp *datastore.FetchBundleResponse, err error)
FetchBundle returns the bundle matching the specified Trust Domain.
func (*Plugin) FetchJoinToken ¶
func (ds *Plugin) FetchJoinToken(ctx context.Context, req *datastore.FetchJoinTokenRequest) (resp *datastore.FetchJoinTokenResponse, err error)
FetchJoinToken takes a Token message and returns one, populating the fields we have knowledge of
func (*Plugin) FetchRegistrationEntry ¶
func (ds *Plugin) FetchRegistrationEntry(ctx context.Context, req *datastore.FetchRegistrationEntryRequest) (resp *datastore.FetchRegistrationEntryResponse, err error)
FetchRegistrationEntry fetches an existing registration by entry ID
func (*Plugin) GetNodeSelectors ¶
func (ds *Plugin) GetNodeSelectors(ctx context.Context, req *datastore.GetNodeSelectorsRequest) (resp *datastore.GetNodeSelectorsResponse, err error)
GetNodeSelectors gets node (agent) selectors by SPIFFE ID
func (*Plugin) GetPluginInfo ¶
func (*Plugin) GetPluginInfo(context.Context, *spi.GetPluginInfoRequest) (*spi.GetPluginInfoResponse, error)
GetPluginInfo returns the sql plugin
func (*Plugin) ListAttestedNodes ¶
func (ds *Plugin) ListAttestedNodes(ctx context.Context, req *datastore.ListAttestedNodesRequest) (resp *datastore.ListAttestedNodesResponse, err error)
ListAttestedNodes lists all attested nodes (pagination available)
func (*Plugin) ListBundles ¶
func (ds *Plugin) ListBundles(ctx context.Context, req *datastore.ListBundlesRequest) (resp *datastore.ListBundlesResponse, err error)
ListBundles can be used to fetch all existing bundles.
func (*Plugin) ListNodeSelectors ¶ added in v0.12.0
func (ds *Plugin) ListNodeSelectors(ctx context.Context, req *datastore.ListNodeSelectorsRequest) (resp *datastore.ListNodeSelectorsResponse, err error)
ListNodeSelectors gets node (agent) selectors by SPIFFE ID
func (*Plugin) ListRegistrationEntries ¶
func (ds *Plugin) ListRegistrationEntries(ctx context.Context, req *datastore.ListRegistrationEntriesRequest) (resp *datastore.ListRegistrationEntriesResponse, err error)
ListRegistrationEntries lists all registrations (pagination available)
func (*Plugin) PruneBundle ¶
func (ds *Plugin) PruneBundle(ctx context.Context, req *datastore.PruneBundleRequest) (resp *datastore.PruneBundleResponse, err error)
PruneBundle removes expired certs and keys from a bundle
func (*Plugin) PruneJoinTokens ¶
func (ds *Plugin) PruneJoinTokens(ctx context.Context, req *datastore.PruneJoinTokensRequest) (resp *datastore.PruneJoinTokensResponse, err error)
PruneJoinTokens takes a Token message, and deletes all tokens which have expired before the date in the message
func (*Plugin) PruneRegistrationEntries ¶
func (ds *Plugin) PruneRegistrationEntries(ctx context.Context, req *datastore.PruneRegistrationEntriesRequest) (resp *datastore.PruneRegistrationEntriesResponse, err error)
PruneRegistrationEntries takes a registration entry message, and deletes all entries which have expired before the date in the message
func (*Plugin) SetBundle ¶
func (ds *Plugin) SetBundle(ctx context.Context, req *datastore.SetBundleRequest) (resp *datastore.SetBundleResponse, err error)
SetBundle sets bundle contents. If no bundle exists for the trust domain, it is created.
func (*Plugin) SetNodeSelectors ¶
func (ds *Plugin) SetNodeSelectors(ctx context.Context, req *datastore.SetNodeSelectorsRequest) (resp *datastore.SetNodeSelectorsResponse, err error)
SetNodeSelectors sets node (agent) selectors by SPIFFE ID, deleting old selectors first
func (*Plugin) UpdateAttestedNode ¶
func (ds *Plugin) UpdateAttestedNode(ctx context.Context, req *datastore.UpdateAttestedNodeRequest) (resp *datastore.UpdateAttestedNodeResponse, err error)
UpdateAttestedNode updates the given node's cert serial and expiration.
func (*Plugin) UpdateBundle ¶
func (ds *Plugin) UpdateBundle(ctx context.Context, req *datastore.UpdateBundleRequest) (resp *datastore.UpdateBundleResponse, err error)
UpdateBundle updates an existing bundle with the given CAs. Overwrites any existing certificates.
func (*Plugin) UpdateRegistrationEntry ¶
func (ds *Plugin) UpdateRegistrationEntry(ctx context.Context, req *datastore.UpdateRegistrationEntryRequest) (resp *datastore.UpdateRegistrationEntryResponse, err error)
UpdateRegistrationEntry updates an existing registration entry
type RegisteredEntry ¶
type RegisteredEntry struct {
Model
EntryID string `gorm:"unique_index"`
SpiffeID string `gorm:"index"`
ParentID string `gorm:"index"`
// TTL of identities derived from this entry
TTL int32
Selectors []Selector
FederatesWith []Bundle `gorm:"many2many:federated_registration_entries;"`
Admin bool
Downstream bool
// (optional) expiry of this entry
Expiry int64 `gorm:"index"`
// (optional) DNS entries
DNSList []DNSName
// RevisionNumber is a counter that is incremented when the entry is
// updated.
RevisionNumber int64
}
RegisteredEntry holds a registered entity entry
type V10RegisteredEntry ¶ added in v0.10.0
type V10RegisteredEntry struct {
Model
EntryID string `gorm:"unique_index"`
SpiffeID string `gorm:"index"`
ParentID string `gorm:"index"`
// TTL of identities derived from this entry
TTL int32
Selectors []Selector
FederatesWith []Bundle `gorm:"many2many:federated_registration_entries;"`
Admin bool
Downstream bool
// (optional) expiry of this entry
Expiry int64 `gorm:"index"`
// (optional) DNS entries
DNSList []DNSName
}
V10RegisteredEntry holds a registered entity entry
func (V10RegisteredEntry) TableName ¶ added in v0.10.0
func (V10RegisteredEntry) TableName() string
TableName gets table name for v10 registered entry
type V11Migration ¶
func (V11Migration) TableName ¶
func (V11Migration) TableName() string
TableName gets table name for v11 migrations table
type V3AttestedNode ¶
type V3AttestedNode struct {
Model
SpiffeID string `gorm:"unique_index"`
DataType string
SerialNumber string
ExpiresAt time.Time
}
func (V3AttestedNode) TableName ¶
func (V3AttestedNode) TableName() string
type V3Bundle ¶
type V3Bundle struct {
Model
TrustDomain string `gorm:"not null;unique_index"`
CACerts []V3CACert
FederatedEntries []RegisteredEntry `gorm:"many2many:federated_registration_entries;"`
}
V3Bundle holds a version 3 trust bundle
type V3CACert ¶
type V3CACert struct {
Model
Cert []byte `gorm:"not null"`
Expiry time.Time `gorm:"not null;index"`
BundleID uint `gorm:"not null;index" sql:"type:integer REFERENCES bundles(id)"`
}
V3CACert holds a version 3 CA certificate
type V4RegisteredEntry ¶
type V4RegisteredEntry struct {
Model
EntryID string `gorm:"unique_index"`
SpiffeID string
ParentID string
TTL int32
Selectors []V8Selector
FederatesWith []Bundle `gorm:"many2many:federated_registration_entries;"`
}
V4RegisteredEntry holds a version 4 registered entry
func (V4RegisteredEntry) TableName ¶
func (V4RegisteredEntry) TableName() string
TableName gets table name for v4 registered entry
type V5RegisteredEntry ¶
type V5RegisteredEntry struct {
Model
EntryID string `gorm:"unique_index"`
SpiffeID string
ParentID string
TTL int32
Selectors []V8Selector
FederatesWith []Bundle `gorm:"many2many:federated_registration_entries;"`
Admin bool
}
V5RegisteredEntry holds a version 5 registered entry
func (V5RegisteredEntry) TableName ¶
func (V5RegisteredEntry) TableName() string
TableName gets table name for v5 registered entry
type V6RegisteredEntry ¶
type V6RegisteredEntry struct {
Model
EntryID string `gorm:"unique_index"`
SpiffeID string
ParentID string
TTL int32
Selectors []V8Selector
FederatesWith []Bundle `gorm:"many2many:federated_registration_entries;"`
Admin bool
Downstream bool
}
V6RegisteredEntry holds a version 6 registered entry
func (V6RegisteredEntry) TableName ¶
func (V6RegisteredEntry) TableName() string
TableName gets table name for v6 registered entry
type V7RegisteredEntry ¶
type V7RegisteredEntry struct {
Model
EntryID string `gorm:"unique_index"`
SpiffeID string
ParentID string
// TTL of identities derived from this entry
TTL int32
Selectors []V8Selector
FederatesWith []Bundle `gorm:"many2many:federated_registration_entries;"`
Admin bool
Downstream bool
// (optional) expiry of this entry
Expiry int64
}
V7RegisteredEntry holds a version 7 registered entry
func (V7RegisteredEntry) TableName ¶
func (V7RegisteredEntry) TableName() string
TableName gets table name for v7 registered entry
type V8RegisteredEntry ¶
type V8RegisteredEntry struct {
Model
EntryID string `gorm:"unique_index"`
SpiffeID string
ParentID string
// TTL of identities derived from this entry
TTL int32
Selectors []V8Selector
FederatesWith []Bundle `gorm:"many2many:federated_registration_entries;"`
Admin bool
Downstream bool
// (optional) expiry of this entry
Expiry int64
// (optional) DNS entries
DNSList []DNSName
}
func (V8RegisteredEntry) TableName ¶
func (V8RegisteredEntry) TableName() string
TableName gets table name for v8 registered entry
type V8Selector ¶
type V9RegisteredEntry ¶
type V9RegisteredEntry struct {
Model
EntryID string `gorm:"unique_index"`
SpiffeID string `gorm:"index"`
ParentID string `gorm:"index"`
// TTL of identities derived from this entry
TTL int32
Selectors []Selector
FederatesWith []Bundle `gorm:"many2many:federated_registration_entries;"`
Admin bool
Downstream bool
// (optional) expiry of this entry
Expiry int64
// (optional) DNS entries
DNSList []DNSName
}
func (V9RegisteredEntry) TableName ¶
func (V9RegisteredEntry) TableName() string
TableName gets table name for v9 registered entry