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(name string) []byte
- func AwsLookup(name string) []byte
- func AzureDataLookup(name string) []byte
- func AzureLookup(name string) []byte
- func Compare(directory string, arn string, init bool) (bool, error)
- func Contains(s []string, e string) bool
- func DeprecationMessage(provider, name string, isData bool) (msg string, ok bool)
- func EncryptPlaintext(plaintext string, publicKeyB64 string) ([]byte, error)
- func FileExists(filename string) bool
- func FormatDeprecated(d []ProviderDeprecations, format string) (string, error)
- func GCPDataLookup(name string) []byte
- func GCPLookup(name string) []byte
- func GCPPolicy(permissions []string, policyName string, dirName 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 HasAWSDefaultTags(body *hclsyntax.Body) bool
- func Init(dirName string) (*string, []string, error)
- func InvokeGithubDispatchEvent(repository string, workflowFileName string, branch string) error
- func IsTypeOK(mappings any) (map[string]any, error)
- func LocateTerraform() (string, error)
- func Make(directory string) (*string, error)
- func MakeAzure(directory string) (*string, error)
- func MakeGCP(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, prov 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 ProviderDeprecations
- type Record
- type ResourceV2
- type RuntimePermission
- type Sorted
- type Statement
- type ValidationResult
Constants ¶
const (
ManifestSnapshotFilename = "modules.json"
)
Variables ¶
var Version = "999.999.999"
Version is set at build time via -ldflags.
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 AzureDataLookup ¶ added in v0.2.94
func AzureLookup ¶ added in v0.2.94
func DeprecationMessage ¶ added in v0.3.98
DeprecationMessage reports whether a given terraform resource or datasource is marked deprecated by its provider. ok is true when the provider's latest schema has flagged it; msg is the provider-supplied deprecation description (often "Deprecated: use X instead"), which may be empty even when ok is true if the provider didn't include one.
isData distinguishes a `data "foo" {}` block from a `resource "foo" {}` block: providers sometimes deprecate one without the other, so the caller must pass the correct kind.
func EncryptPlaintext ¶ added in v0.2.76
EncryptPlaintext standard encryption.
func FileExists ¶ added in v0.2.76
FileExists looks for a file.
func FormatDeprecated ¶ added in v0.3.98
func FormatDeprecated(d []ProviderDeprecations, format string) (string, error)
FormatDeprecated renders the Deprecated() output. format is one of "text" (default, grep-friendly) or "json" (pretty-printed for downstream tooling). Unknown formats fall back to text rather than erroring — the CLI surface is informational, not strict.
Text format:
aws: aws_retired_thing (resource) — Deprecated: use aws_new_thing aws_old_data (data) — ... azurerm: ...
An empty result (nothing deprecated across all requested providers) returns a single-line notice rather than an empty string so users don't mistake success for "the command silently did nothing".
func GCPDataLookup ¶ added in v0.2.94
func GetAWSDataPermissions ¶
func GetAWSDataPermissions(result ResourceV2) ([]string, error)
GetAWSDataPermissions gets permissions required for datasources.
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 AZURE 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 HasAWSDefaultTags ¶ added in v0.4.5
HasAWSDefaultTags reports whether any provider "aws" block in body declares a default_tags block, which causes the provider to tag every taggable resource even when the resource itself has no tags attribute.
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. The search and install logic lives in internal/tfinstall; this wrapper preserves the locateTerraformError type for callers that inspect 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 Runtime ¶ added in v0.3.86
Runtime detects runtime IAM permissions needed by service accounts.
Only GCP is supported today. AWS/Azure providers are rejected with unsupportedRuntimeProviderError.
func Scan ¶
func Scan(dirName string, outputType string, file *string, init bool, write bool, enableResources bool, provider string, outFile string, policyName string, suppressDeprecated bool) 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, dirName 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, suppressDeprecated bool) (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 ProviderDeprecations ¶ added in v0.3.98
type ProviderDeprecations struct {
Provider string `json:"provider"`
ProviderVersion string `json:"providerVersion,omitempty"`
Resources map[string]string `json:"resources,omitempty"`
DataSources map[string]string `json:"dataSources,omitempty"`
}
ProviderDeprecations is the serialisable shape returned by Deprecated(). Kinds are split because the same name can appear as both a resource and a datasource in the same provider, and conflating them loses detail.
func Deprecated ¶ added in v0.3.98
func Deprecated(provider string) []ProviderDeprecations
Deprecated returns the known-deprecated resources/datasources for one provider (aws/azurerm/google, with gcp/azure aliases accepted) or for all supported providers when called with the empty string. Providers with nothing deprecated are omitted from the result so callers can cleanly skip over them.
This is the data source for the `pike deprecated` CLI. It reads from the same lazily-cached store that scan-time warnings use, so running `pike deprecated` after a scan is free.
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
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, prov string, suppressDeprecated bool) Sorted
func MakePermissionBag ¶ added in v0.3.55
func MakePermissionBag(dirName string, file *string, init bool, provider string, suppressDeprecated bool) (Sorted, error)
MakePermissionBag returns the full set of IAM permissions required to deploy the Terraform in dirName (or a single file). Pass init=false for static analysis without running terraform init.
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
- deprecation.go
- error.go
- gcp.go
- gcp_datasource.go
- gcp_policy.go
- gitHub.go
- inspect.go
- make.go
- mappingfs.go
- modules.go
- output.go
- policy.go
- readme.go
- repository.go
- runtime_gcp.go
- scan.go
- secrets.go
- types.go
- utils.go
- version.go
- watch.go