Documentation
¶
Index ¶
- Constants
- Variables
- func AZUREPolicy(permissions []string, policyName string) (string, error)
- func AlmostEqual(a, b float64) bool
- func Apply(target string, region string) error
- func AwsDataLookup(find string) interface{}
- func AwsLookup(name string) interface{}
- func AzureDataLookup(name string) interface{}
- func AzureLookup(name string) interface{}
- func Compare(directory string, arn string, init bool) (bool, error)
- func Contains(s []string, e string) bool
- func EncryptPlaintext(plaintext string, publicKeyB64 string) ([]byte, error)
- func FileExists(filename string) bool
- func GCPDataLookup(result string) interface{}
- func GCPLookup(result string) interface{}
- func GCPPolicy(permissions []string, policyName string) (string, error)
- func GetAWSDataPermissions(result ResourceV2) ([]string, error)
- func GetAWSPermissions(result ResourceV2) ([]string, error)
- func GetAWSResourcePermissions(result ResourceV2) ([]string, error)
- func GetAZUREDataPermissions(result ResourceV2) ([]string, error)
- func GetAZUREPermissions(result ResourceV2) ([]string, error)
- func GetAZUREResourcePermissions(result ResourceV2) ([]string, error)
- func GetBlockAttributes(attributes []string, block *hclsyntax.Block) []string
- func GetEnv(key string) (*string, error)
- func GetGCPDataPermissions(result ResourceV2) ([]string, error)
- func GetGithubClient() (context.Context, *github.Client)
- func GetHCLType(resourceName string) string
- func GetModulePath(block *hclsyntax.Block) string
- func GetPermissionMap(raw []byte, attributes []string, resource string) ([]string, error)
- func GetPublicKeyDetails(owner string, repository string) (string, string, error)
- func GetResourceBlocks(file string) (*hclsyntax.Body, error)
- func GetRuntimePermissions(raw []byte, attributes []string, resource string) ([]string, error)
- func GetTF(dirName string) ([]string, error)
- func GetTFFiles(dirName string) ([]string, error)
- func Init(dirName string) (*string, []string, error)
- func InvokeGithubDispatchEvent(repository string, workflowFileName string, branch string) error
- func IsTypeOK(mappings interface{}) (map[string]interface{}, error)
- func LocateTerraform() (string, error)
- func Make(directory string) (*string, error)
- func Minify(JSONOut string) string
- func RandSeq(n int) string
- func Readme(dirName string, output string, init bool, autoAppend bool) error
- func Remote(target string, repository string, region string) error
- func ReplaceSection(source string, middle string, autoadd bool) error
- func Repository(repository, destination, directory, output string, ...) error
- func ReturnLocalAddrFromSource(source string, listModules ModuleJson) string
- func Runtime(dirName string, outputType string, file *string, init bool, provider string) error
- func Scan(dirName string, outputType string, file *string, init bool, write bool, ...) error
- func SetRepoSecret(repository string, keyText string, keyName string) (*github.Response, error)
- func SplitHub(repository string) (string, string, error)
- func StringInSlice(a string, list []string) bool
- func Unique(s []string) []string
- func Watch(arn string, wait int) error
- func WriteOutput(outPolicy OutputPolicy, outputType string, scanPath string, outFile string) error
- type AwsOutput
- type EnvVariableNotSetError
- type IAMBinding
- type ModuleJson
- type OutputPolicy
- type Policy
- type PolicyDiff
- type Record
- type ResourceV2
- type RuntimePermission
- type Sorted
- type Statement
- type ValidationResult
Constants ¶
const (
ManifestSnapshotFilename = "modules.json"
)
const Version = "9.9.9"
Version controls the applications version
Variables ¶
var AWSAcmCertificate []byte
Functions ¶
func AZUREPolicy ¶
AZUREPolicy creates an Azure role definition. permissions: slice of Azure permission strings in format "action:resource" Returns the policy definition as a string or an error if generation fails.
func AlmostEqual ¶ added in v0.2.96
func AwsDataLookup ¶ added in v0.2.113
func AwsDataLookup(find string) interface{}
AwsDataLookup is a map to connect resource name to an object map.
func AzureDataLookup ¶ added in v0.2.94
func AzureDataLookup(name string) interface{}
func AzureLookup ¶ added in v0.2.94
func AzureLookup(name string) interface{}
func EncryptPlaintext ¶ added in v0.2.76
EncryptPlaintext standard encryption.
func FileExists ¶ added in v0.2.76
FileExists looks for a file.
func GCPDataLookup ¶ added in v0.2.94
func GCPDataLookup(result string) interface{}
func GetAWSDataPermissions ¶
func GetAWSDataPermissions(result ResourceV2) ([]string, error)
GetAWSDataPermissions gets permissions required for datasource's.
func GetAWSPermissions ¶
func GetAWSPermissions(result ResourceV2) ([]string, error)
GetAWSPermissions for AWS resources.
func GetAWSResourcePermissions ¶
func GetAWSResourcePermissions(result ResourceV2) ([]string, error)
GetAWSResourcePermissions looks up permissions required for resources
func GetAZUREDataPermissions ¶
func GetAZUREDataPermissions(result ResourceV2) ([]string, error)
GetAZUREDataPermissions gets permissions required for datasources.
func GetAZUREPermissions ¶
func GetAZUREPermissions(result ResourceV2) ([]string, error)
GetAZUREPermissions for GCP resources.
func GetAZUREResourcePermissions ¶
func GetAZUREResourcePermissions(result ResourceV2) ([]string, error)
GetAZUREResourcePermissions looks up permissions required for resources.
func GetBlockAttributes ¶
GetBlockAttributes walks through a blocks getting all blocks and attributes.
func GetGCPDataPermissions ¶
func GetGCPDataPermissions(result ResourceV2) ([]string, error)
GetGCPDataPermissions gets permissions required for datasources.
func GetGithubClient ¶ added in v0.2.76
GetGithubClient instantiate and return a client object for GitHub.
func GetModulePath ¶
GetModulePath extracts the source location from a module.
func GetPermissionMap ¶
GetPermissionMap Anonymous parsing.
func GetPublicKeyDetails ¶ added in v0.2.76
GetPublicKeyDetails obtains the public key of the owner.
func GetResourceBlocks ¶
GetResourceBlocks breaks down a file into resources.
func GetRuntimePermissions ¶ added in v0.3.86
GetRuntimePermissions extracts runtime permissions needed by service accounts from mapping files.
func GetTFFiles ¶ added in v0.2.76
GetTFFiles get tf files in directory.
func InvokeGithubDispatchEvent ¶
InvokeGithubDispatchEvent uses your GitHub api key (if sufficiently enabled) to invoke a GitHub action workflow.
func LocateTerraform ¶
LocateTerraform finds the Terraform executable or installs it.
func ReplaceSection ¶
ReplaceSection find a section in a readme and replaces the section.
func Repository ¶ added in v0.2.108
func ReturnLocalAddrFromSource ¶ added in v0.3.59
func ReturnLocalAddrFromSource(source string, listModules ModuleJson) string
func Scan ¶
func Scan(dirName string, outputType string, file *string, init bool, write bool, enableResources bool, provider string, outFile string, policyName string) error
Scan looks for resources in a given directory.
func SetRepoSecret ¶
SetRepoSecret sets an encrypted GitHub action secret.
func StringInSlice ¶ added in v0.2.76
StringInSlice looks for item in slice.
func WriteOutput ¶
func WriteOutput(outPolicy OutputPolicy, outputType string, scanPath string, outFile string) error
WriteOutput writes out the policy as JSON or Terraform.
Types ¶
type EnvVariableNotSetError ¶ added in v0.3.55
type EnvVariableNotSetError struct {
Key string
}
func (*EnvVariableNotSetError) Error ¶ added in v0.3.55
func (e *EnvVariableNotSetError) Error() string
type IAMBinding ¶ added in v0.3.86
type IAMBinding struct {
ResourceType string // e.g., "google_project_iam_member"
ResourceName string // e.g., "app_secrets"
Role string // e.g., "roles/secretmanager.secretAccessor"
Member string // e.g., "serviceAccount:app@project.iam" or reference like "${google_service_account.app.email}"
}
IAMBinding represents an IAM binding found in Terraform.
func ExtractIAMBindings ¶ added in v0.3.86
func ExtractIAMBindings(body *hclsyntax.Body) []IAMBinding
ExtractIAMBindings extracts IAM binding resources from parsed HCL blocks.
type ModuleJson ¶ added in v0.3.59
func GetModuleJson ¶ added in v0.3.59
func GetModuleJson(dir string) (ModuleJson, error)
func ReadModuleJson ¶ added in v0.3.59
func ReadModuleJson(r io.Reader) (ModuleJson, error)
func ReadModuleJsonForDir ¶ added in v0.3.59
func ReadModuleJsonForDir(dir string) (ModuleJson, error)
type OutputPolicy ¶
OutputPolicy is the main output type.
func GetPolicy ¶
func GetPolicy(actions Sorted, resources bool, policyName string) (OutputPolicy, error)
GetPolicy creates new iam polices from a list of Permissions.
func MakePolicy ¶
func MakePolicy(dirName string, file *string, init bool, enableResources bool, provider string, policyName string) (OutputPolicy, error)
MakePolicy does the guts of determining a policy from code.
func (OutputPolicy) AsString ¶
func (out OutputPolicy) AsString(format string) string
AsString converts an object into string.
type PolicyDiff ¶ added in v0.3.18
type Record ¶ added in v0.3.59
type Record struct {
Key string `json:"Key"`
SourceAddr string `json:"Source"`
Version *version.Version `json:"-"`
VersionStr string `json:"Version,omitempty"`
Dir string `json:"Dir"`
}
Record represents some metadata about an installed module, as part of a module JSON.
type ResourceV2 ¶
type ResourceV2 struct {
TypeName string
Name string
ResourceName string
Provider string
Attributes []string
ServiceAccount string // The service account this resource uses (if any)
}
ResourceV2 is what resources get parsed into.
func DetectBackend ¶ added in v0.2.65
func DetectBackend(resource ResourceV2, block *hclsyntax.Block, resources []ResourceV2) ([]ResourceV2, error)
DetectBackend handles permissions for backend blocks.
func GetLocalModules ¶ added in v0.2.76
func GetLocalModules(block *hclsyntax.Block, dirName string, listModulesJson ModuleJson) ([]ResourceV2, error)
GetLocalModules return resource from a path.
func GetResources ¶
func GetResources(file string, dirName string) ([]ResourceV2, error)
GetResources retrieves all the resources in a tf file.
type RuntimePermission ¶ added in v0.3.86
type RuntimePermission struct {
ResourceType string // e.g., "google_cloud_run_v2_service"
ResourceName string // e.g., "app" (from resource "type" "name")
ServiceAccount string // e.g., "my-sa@project.iam" or "default"
Permissions []string // e.g., ["secretmanager.versions.access"]
}
RuntimePermission tracks which resource needs which runtime permissions.
type Sorted ¶
type Sorted struct {
AWS []string
GCP []string
AZURE []string
// Runtime permissions needed by service accounts
RuntimeGCP []RuntimePermission
RuntimeAWS []RuntimePermission
RuntimeAZURE []RuntimePermission
// Existing IAM bindings from Terraform code
IAMBindings []IAMBinding
}
Sorted is to help split out permission to the relevant auth.
func GetPermission ¶
func GetPermission(result ResourceV2) (Sorted, error)
GetPermission determines the IAM permissions required and returns a list of permission.
func GetPermissionBag ¶ added in v0.3.52
func GetPermissionBag(resources []ResourceV2, provider string) Sorted
type Statement ¶
type Statement struct {
Sid string `json:"Sid"`
Effect string `json:"Effect"`
Action []string `json:"Action"`
Resource []string `json:"Resource"`
}
Statement is the core of an IAM policy.
type ValidationResult ¶ added in v0.3.86
type ValidationResult struct {
ResourceType string
ResourceName string
ServiceAccount string
Role string
Permissions []string
Status string // "configured", "missing", "partial"
ExistingMember string // If configured, what member string is used
}
ValidationResult tracks the status of an IAM binding requirement.
Source Files
¶
- aws.go
- aws_datasource.go
- azure.go
- azure_datasource.go
- azure_policy.go
- compare.go
- credentials.go
- data.go
- error.go
- files.go
- files_aws.go
- files_azure.go
- files_azure_datasource.go
- files_datasource.go
- files_gcp.go
- files_gcp_datasource.go
- gcp.go
- gcp_datasource.go
- gcp_policy.go
- gitHub.go
- inspect.go
- make.go
- modules.go
- policy.go
- readme.go
- repository.go
- scan.go
- secrets.go
- types.go
- utils.go
- version.go
- watch.go