github.com/jenkins-x/jx/v2@v2.1.155/pkg/vault/rule.go (about)

     1  package vault
     2  
     3  import (
     4  	"strings"
     5  
     6  	"github.com/pkg/errors"
     7  	"github.com/rodaine/hclencoder"
     8  )
     9  
    10  const (
    11  	DenyCapability   = "deny"
    12  	CreateCapability = "create"
    13  	ReadCapability   = "read"
    14  	UpdateCapability = "update"
    15  	DeleteCapability = "delete"
    16  	ListCapability   = "list"
    17  	SudoCapability   = "sudo"
    18  	RootCapability   = "root"
    19  
    20  	PathRulesName            = "allow_secrets"
    21  	DefaultSecretsPathPrefix = "secret/*"
    22  	PoliciesName             = "policies"
    23  	DefaultSecretsPath       = "secret"
    24  )
    25  
    26  var (
    27  	DefaultSecretsCapabiltities = []string{CreateCapability, ReadCapability, UpdateCapability, DeleteCapability, ListCapability}
    28  )
    29  
    30  // PathRule defines a path rule
    31  type PathRule struct {
    32  	Path []PathPolicy `hcl:"path" hcle:"omitempty"`
    33  }
    34  
    35  // PathPolicy defiens a vault path policy
    36  type PathPolicy struct {
    37  	Prefix       string   `hcl:",key"`
    38  	Capabilities []string `hcl:"capabilities" hcle:"omitempty"`
    39  }
    40  
    41  // String  encodes a Vault path rule to a string
    42  func (r *PathRule) String() (string, error) {
    43  	output, err := hclencoder.Encode(r)
    44  	if err != nil {
    45  		return "", errors.Wrap(err, "encodeing the path policy")
    46  	}
    47  	return strings.Replace(string(output), "\n", "", -1), nil
    48  }