Documentation
¶
Index ¶
- Constants
- Variables
- func CacheTransform(key string) *diskv.PathKey
- func DisplayTerraformPlanChanges(tf *tfexec.Terraform, data tfPlanChangesSummary) (bool, error)
- func Execute() (err error)
- func GenerateMarkdownDocs(location string) error
- func InverseCacheTransform(pathKey *diskv.PathKey) string
- func IsDefault(isDefault int) string
- func LocateOrInstallTerraform(forceInstall bool, workingDir string) (*tfexec.Terraform, error)
- func NewDefaultState() *cliState
- func NewVulnerabilityPolicyError(assessment api.VulnerabilityAssessment, failOnSeverity string, ...) *vulnerabilityPolicyError
- func SurveyMultipleQuestionWithValidation(questions []SurveyQuestionWithValidationArgs, checks ...bool) error
- func SurveyQuestionInteractiveOnly(question SurveyQuestionWithValidationArgs) error
- func TerraformExecApply(tf *tfexec.Terraform) error
- func TerraformExecPlan(tf *tfexec.Terraform) (*tfPlanChangesSummary, error)
- func TerraformExecutePreRunCheck(outputLocation string) (bool, error)
- func TerraformInit(tf *tfexec.Terraform) error
- func TerraformPlanAndExecute(workingDir string) error
- type AgentHost
- type AgentsResponse
- type AwsGenerateCommandExtraState
- type Honeyvent
- type OS
- type SurveyQuestionWithValidationArgs
- type TerraformVersion
Constants ¶
const ( // DisableTelemetry is an environment variable that can be used to // disable telemetry sent to Honeycomb DisableTelemetry = "LW_TELEMETRY_DISABLE" // HomebrewInstall is an environment variable that denotes the // install method was via homebrew package manager HomebrewInstall = "LW_HOMEBREW_INSTALL" )
const (
AzureCloudEnv = "POWERSHELL_DISTRIBUTION_CHANNEL"
)
Env variables found in GCP, AWS and Azure cloudshell. Used to determine if cli is running on cloudshell.
const ConfigBackupDir = "cfg_backups"
The name of the directory we will store backups of configuration files before migrating them
const MaxCacheSize = 1024 * 1024 * 1024
Variables ¶
var ( QuestionRunTfPlan = "Run Terraform plan now?" QuestionUsePreviousCache = "Previous IaC generation detected, load cached values?" GenerateAwsCommandState = &aws.GenerateAwsTfConfigurationArgs{} GenerateAwsExistingRoleState = &aws.ExistingIamRoleDetails{} GenerateAwsCommandExtraState = &AwsGenerateCommandExtraState{} ValidateSubAccountFlagRegex = fmt.Sprintf(`%s:%s`, AwsProfileRegex, AwsRegionRegex) CachedAssetIacParams = "iac-aws-generate-params" CachedAssetAwsExtraState = "iac-aws-extra-state" )
var ( // Define question text here so they can be reused in testing QuestionEnableConfig = "Enable Config Integration?" QuestionEnableCloudtrail = "Enable Cloudtrail Integration?" QuestionAwsRegion = "Specify the AWS region to be used by Cloudtrail, SNS, and S3:" QuestionConsolidatedCloudtrail = "Use consolidated Cloudtrail?" QuestionUseExistingCloudtrail = "Use an existing Cloudtrail?" QuestionCloudtrailExistingBucketArn = "Specify an existing bucket ARN used for Cloudtrail logs:" QuestionForceDestroyS3Bucket = "Should the new S3 bucket have force destroy enabled?" QuestionExistingIamRoleName = "Specify an existing IAM role name for Cloudtrail access:" QuestionExistingIamRoleArn = "Specify an existing IAM role ARN for Cloudtrail access:" QuestionExistingIamRoleExtId = "Specify the external ID to be used with the existing IAM role:" QuestionPrimaryAwsAccountProfile = "Before adding subaccounts, your primary AWS account profile name must be set; which profile should the main account use?" QuestionSubAccountProfileName = "Supply the profile name for this additional AWS account:" QuestionSubAccountRegion = "What region should be used for this account?" QuestionSubAccountAddMore = "Add another AWS account?" QuestionSubAccountReplace = "Currently configured AWS subaccounts: %s, replace?" QuestionConfigAdvanced = "Configure advanced integration options?" QuestionAnotherAdvancedOpt = "Configure another advanced integration option" QuestionCustomizeOutputLocation = "Provide the location for the output to be written:" // select options AdvancedOptDone = "Done" AdvancedOptCloudTrail = "Additional Cloudtrail options" AdvancedOptIamRole = "Configure Lacework integration with an existing IAM role" AdvancedOptAwsAccounts = "Add additional AWS Accounts to Lacework" AdvancedOptLocation = "Customize output location" // original source: https://regex101.com/r/pOfxYN/1 AwsArnRegex = `` /* 154-byte string literal not displayed */ // regex used for validating region input; note intentionally does not match gov cloud AwsRegionRegex = `(us|ap|ca|cn|eu|sa)-(central|(north|south)?(east|west)?)-\d` AwsProfileRegex = `([A-Za-z_0-9-]+)` )
var ( // HoneyApiKey is a variable that is injected at build time via // the cross-platform directive inside the Makefile, this key is // used to send events to Honeycomb so that we can understand how // our customers use the Lacework CLI HoneyApiKey = "unknown" // HoneyDataset is the dataset in Honeycomb that we send tracing // data this variable will be set depending on the environment we // are running on. During development, we send all events and // tracing data to a default dataset. HoneyDataset = "lacework-cli-dev" )
var ( // All the following "unknown" variables are being injected at // build time via the cross-platform directive inside the Makefile // // Version is the semver coming from the VERSION file Version = "unknown" // GitSHA is the git ref that the cli was built from GitSHA = "unknown" // BuildTime is a human-readable time when the cli was built at BuildTime = "unknown" // The name of the version cache file needed for daily version checks VersionCacheFile = "version_cache" )
var SupportedPackageManagers = []string{"dpkg-query", "rpm"} // @afiune can we support yum and apk?
Functions ¶
func CacheTransform ¶ added in v0.10.0
func CacheTransform(key string) *diskv.PathKey
func DisplayTerraformPlanChanges ¶ added in v0.23.0
used to display the results of a plan
returns true if apply should run, false to exit
func Execute ¶
func Execute() (err error)
Execute adds all child commands to the root command and sets flags appropriately. This is called by main.main(). It only needs to happen once to the rootCmd.
func GenerateMarkdownDocs ¶ added in v0.2.4
func InverseCacheTransform ¶ added in v0.10.0
func InverseCacheTransform(pathKey *diskv.PathKey) string
func LocateOrInstallTerraform ¶ added in v0.23.0
Determine if terraform is installed, if that version is new enough, and if not install a new ephemeral binary of the correct version into tmp location
forceInstall: if set always install ephemeral binary
func NewDefaultState ¶ added in v0.1.3
func NewDefaultState() *cliState
NewDefaultState creates a new cliState with some defaults
func NewVulnerabilityPolicyError ¶ added in v0.4.0
func NewVulnerabilityPolicyError( assessment api.VulnerabilityAssessment, failOnSeverity string, failOnFixable bool, ) *vulnerabilityPolicyError
func SurveyMultipleQuestionWithValidation ¶ added in v0.23.0
func SurveyMultipleQuestionWithValidation(questions []SurveyQuestionWithValidationArgs, checks ...bool) error
Prompt for many values at once
checks: If supplied check(s) are true, questions will be asked
func SurveyQuestionInteractiveOnly ¶ added in v0.23.0
func SurveyQuestionInteractiveOnly(question SurveyQuestionWithValidationArgs) error
Prompt use for question, only if the CLI is in interactive mode
func TerraformExecApply ¶ added in v0.23.0
Run terraform apply using the workingDir from *tfexec.Terraform
- Run plan - Get plan file details (returned)
func TerraformExecPlan ¶ added in v0.23.0
Run terraform plan using the workingDir from *tfexec.Terraform
- Run plan - Get plan file details (returned)
func TerraformExecutePreRunCheck ¶ added in v0.23.0
func TerraformInit ¶ added in v0.23.0
func TerraformPlanAndExecute ¶ added in v0.23.0
Execute a terraform plan & execute
Types ¶
type AgentHost ¶ added in v0.2.10
type AgentHost struct { MachineHostname string `json:"MACHINE_HOSTNAME"` Name string `json:"NAME"` MachineIP string `json:"MACHINE_IP_ADDR"` Status string `json:"STATUS"` //CreatedTime int64 `json:"CREATED_TIME"` AgentVersion string `json:"AGENT_VERSION"` Mode string `json:"MODE"` Tags machineTags `json:"TAGS"` }
type AgentsResponse ¶ added in v0.2.10
type AwsGenerateCommandExtraState ¶ added in v0.23.0
type Honeyvent ¶ added in v0.2.12
type Honeyvent struct { Version string `json:"version"` CfgVersion int `json:"config_version"` Os string `json:"os"` Arch string `json:"arch"` Command string `json:"command,omitempty"` Args []string `json:"args,omitempty"` Flags []string `json:"flags,omitempty"` Account string `json:"account,omitempty"` Subaccount string `json:"subaccount,omitempty"` Profile string `json:"profile,omitempty"` ApiKey string `json:"api_key,omitempty"` Feature string `json:"feature,omitempty"` FeatureData interface{} `json:"feature.data,omitempty"` DurationMs int64 `json:"duration_ms,omitempty"` Error string `json:"error,omitempty"` InstallMethod string `json:"install_method,omitempty"` // tracing data for multiple events, this is useful for specific features // within the Lacework CLI such as daily version check, polling mechanism, etc. TraceID string `json:"trace.trace_id,omitempty"` SpanID string `json:"trace.span_id,omitempty"` ParentID string `json:"trace.parent_id,omitempty"` }
Honeyvent defines what a Honeycomb event looks like for the Lacework CLI
func (*Honeyvent) AddFeatureField ¶ added in v0.2.13
type SurveyQuestionWithValidationArgs ¶ added in v0.23.0
type TerraformVersion ¶ added in v0.23.0
type TerraformVersion struct {
Version string `json:"terraform_version"`
}
Source Files
¶
- access_token.go
- account.go
- agent.go
- agent_install.go
- agent_list_poc.go
- alert_rules.go
- api.go
- cache.go
- cli_state.go
- cli_unix.go
- cloud_account.go
- compliance.go
- compliance_aws.go
- compliance_azure.go
- compliance_gcp.go
- configure.go
- docs.go
- emoji.go
- emoji_unix.go
- errors.go
- event.go
- file.go
- flags.go
- generate.go
- generate_aws.go
- generate_execute.go
- honeyvent.go
- integration.go
- integration_aws.go
- integration_aws_cloudwatch.go
- integration_aws_govcloud.go
- integration_aws_s3_channel.go
- integration_azure.go
- integration_cisco_webex.go
- integration_ctr_reg_limits.go
- integration_datadog.go
- integration_docker_hub.go
- integration_docker_v2.go
- integration_ecr.go
- integration_email.go
- integration_gar.go
- integration_gcp.go
- integration_gcp_pub_sub_channel.go
- integration_gcr.go
- integration_ghcr.go
- integration_jira.go
- integration_microsoft_teams.go
- integration_new_relic_channel.go
- integration_pagerduty.go
- integration_qradar_channel.go
- integration_service_now_channel.go
- integration_slack_channel.go
- integration_splunk.go
- integration_victorops.go
- integration_webhook.go
- lql.go
- lql_create.go
- lql_delete.go
- lql_list.go
- lql_show.go
- lql_sources.go
- lql_update.go
- lql_validate.go
- migration.go
- outputs.go
- package_manifest.go
- policy.go
- policy_create.go
- policy_update.go
- prompt.go
- report_rules.go
- resource_group_aws.go
- resource_group_azure.go
- resource_group_container.go
- resource_group_gcp.go
- resource_group_lw_account.go
- resource_group_machine.go
- resource_groups.go
- root.go
- table_render.go
- version.go
- vuln_container.go
- vuln_host.go
- vuln_html.go
- vulnerability.go