package security

// Permission grants a set of actions to all members of a UserGroup.
type Permission struct {
	UserGroup string
	Actions   []string
}

// AgentPolicy assigns a set of permissions to all agents in an AgentGroup.
// AgentGroup may be a group name defined in SecurityPolicy.AgentGroups,
// or a direct agent ID (without defining a group).
type AgentPolicy struct {
	AgentGroup  string
	Permissions []Permission
}

// SecurityPolicy is the top-level pure data structure that describes
// who can do what across which agents.
type SecurityPolicy struct {
	UserGroups  []UserGroup
	AgentGroups []AgentGroup
	Policies    []AgentPolicy
}
