github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/securityhub/configurationPolicy.go (about)

     1  // Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
     2  // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
     3  
     4  package securityhub
     5  
     6  import (
     7  	"context"
     8  	"reflect"
     9  
    10  	"errors"
    11  	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal"
    12  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    13  )
    14  
    15  // Manages Security Hub configuration policy
    16  //
    17  // > **NOTE:** This resource requires `securityhub.OrganizationConfiguration` to be configured of type `CENTRAL`. More information about Security Hub central configuration and configuration policies can be found in the [How Security Hub configuration policies work](https://docs.aws.amazon.com/securityhub/latest/userguide/configuration-policies-overview.html) documentation.
    18  //
    19  // ## Example Usage
    20  //
    21  // ### Default standards enabled
    22  //
    23  // <!--Start PulumiCodeChooser -->
    24  // ```go
    25  // package main
    26  //
    27  // import (
    28  //
    29  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/securityhub"
    30  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    31  //
    32  // )
    33  //
    34  //	func main() {
    35  //		pulumi.Run(func(ctx *pulumi.Context) error {
    36  //			example, err := securityhub.NewFindingAggregator(ctx, "example", &securityhub.FindingAggregatorArgs{
    37  //				LinkingMode: pulumi.String("ALL_REGIONS"),
    38  //			})
    39  //			if err != nil {
    40  //				return err
    41  //			}
    42  //			exampleOrganizationConfiguration, err := securityhub.NewOrganizationConfiguration(ctx, "example", &securityhub.OrganizationConfigurationArgs{
    43  //				AutoEnable:          pulumi.Bool(false),
    44  //				AutoEnableStandards: pulumi.String("NONE"),
    45  //				OrganizationConfiguration: &securityhub.OrganizationConfigurationOrganizationConfigurationArgs{
    46  //					ConfigurationType: pulumi.String("CENTRAL"),
    47  //				},
    48  //			}, pulumi.DependsOn([]pulumi.Resource{
    49  //				example,
    50  //			}))
    51  //			if err != nil {
    52  //				return err
    53  //			}
    54  //			_, err = securityhub.NewConfigurationPolicy(ctx, "example", &securityhub.ConfigurationPolicyArgs{
    55  //				Name:        pulumi.String("Example"),
    56  //				Description: pulumi.String("This is an example configuration policy"),
    57  //				ConfigurationPolicy: &securityhub.ConfigurationPolicyConfigurationPolicyArgs{
    58  //					ServiceEnabled: pulumi.Bool(true),
    59  //					EnabledStandardArns: pulumi.StringArray{
    60  //						pulumi.String("arn:aws:securityhub:us-east-1::standards/aws-foundational-security-best-practices/v/1.0.0"),
    61  //						pulumi.String("arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0"),
    62  //					},
    63  //					SecurityControlsConfiguration: &securityhub.ConfigurationPolicyConfigurationPolicySecurityControlsConfigurationArgs{
    64  //						DisabledControlIdentifiers: pulumi.StringArray{},
    65  //					},
    66  //				},
    67  //			}, pulumi.DependsOn([]pulumi.Resource{
    68  //				exampleOrganizationConfiguration,
    69  //			}))
    70  //			if err != nil {
    71  //				return err
    72  //			}
    73  //			return nil
    74  //		})
    75  //	}
    76  //
    77  // ```
    78  // <!--End PulumiCodeChooser -->
    79  //
    80  // ### Disabled Policy
    81  //
    82  // <!--Start PulumiCodeChooser -->
    83  // ```go
    84  // package main
    85  //
    86  // import (
    87  //
    88  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/securityhub"
    89  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    90  //
    91  // )
    92  //
    93  //	func main() {
    94  //		pulumi.Run(func(ctx *pulumi.Context) error {
    95  //			_, err := securityhub.NewConfigurationPolicy(ctx, "disabled", &securityhub.ConfigurationPolicyArgs{
    96  //				Name:        pulumi.String("Disabled"),
    97  //				Description: pulumi.String("This is an example of disabled configuration policy"),
    98  //				ConfigurationPolicy: &securityhub.ConfigurationPolicyConfigurationPolicyArgs{
    99  //					ServiceEnabled: pulumi.Bool(false),
   100  //				},
   101  //			}, pulumi.DependsOn([]pulumi.Resource{
   102  //				example,
   103  //			}))
   104  //			if err != nil {
   105  //				return err
   106  //			}
   107  //			return nil
   108  //		})
   109  //	}
   110  //
   111  // ```
   112  // <!--End PulumiCodeChooser -->
   113  //
   114  // ### Custom Control Configuration
   115  //
   116  // <!--Start PulumiCodeChooser -->
   117  // ```go
   118  // package main
   119  //
   120  // import (
   121  //
   122  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/securityhub"
   123  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   124  //
   125  // )
   126  //
   127  //	func main() {
   128  //		pulumi.Run(func(ctx *pulumi.Context) error {
   129  //			_, err := securityhub.NewConfigurationPolicy(ctx, "disabled", &securityhub.ConfigurationPolicyArgs{
   130  //				Name:        pulumi.String("Custom Controls"),
   131  //				Description: pulumi.String("This is an example of configuration policy with custom control settings"),
   132  //				ConfigurationPolicy: &securityhub.ConfigurationPolicyConfigurationPolicyArgs{
   133  //					ServiceEnabled: pulumi.Bool(true),
   134  //					EnabledStandardArns: pulumi.StringArray{
   135  //						pulumi.String("arn:aws:securityhub:us-east-1::standards/aws-foundational-security-best-practices/v/1.0.0"),
   136  //						pulumi.String("arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0"),
   137  //					},
   138  //					SecurityControlsConfiguration: &securityhub.ConfigurationPolicyConfigurationPolicySecurityControlsConfigurationArgs{
   139  //						EnabledControlIdentifiers: pulumi.StringArray{
   140  //							pulumi.String("APIGateway.1"),
   141  //							pulumi.String("IAM.7"),
   142  //						},
   143  //						SecurityControlCustomParameters: securityhub.ConfigurationPolicyConfigurationPolicySecurityControlsConfigurationSecurityControlCustomParameterArray{
   144  //							&securityhub.ConfigurationPolicyConfigurationPolicySecurityControlsConfigurationSecurityControlCustomParameterArgs{
   145  //								SecurityControlId: pulumi.String("APIGateway.1"),
   146  //								Parameters: securityhub.ConfigurationPolicyConfigurationPolicySecurityControlsConfigurationSecurityControlCustomParameterParameterArray{
   147  //									&securityhub.ConfigurationPolicyConfigurationPolicySecurityControlsConfigurationSecurityControlCustomParameterParameterArgs{
   148  //										Name:      pulumi.String("loggingLevel"),
   149  //										ValueType: pulumi.String("CUSTOM"),
   150  //										Enum: &securityhub.ConfigurationPolicyConfigurationPolicySecurityControlsConfigurationSecurityControlCustomParameterParameterEnumArgs{
   151  //											Value: pulumi.String("INFO"),
   152  //										},
   153  //									},
   154  //								},
   155  //							},
   156  //							&securityhub.ConfigurationPolicyConfigurationPolicySecurityControlsConfigurationSecurityControlCustomParameterArgs{
   157  //								SecurityControlId: pulumi.String("IAM.7"),
   158  //								Parameters: securityhub.ConfigurationPolicyConfigurationPolicySecurityControlsConfigurationSecurityControlCustomParameterParameterArray{
   159  //									&securityhub.ConfigurationPolicyConfigurationPolicySecurityControlsConfigurationSecurityControlCustomParameterParameterArgs{
   160  //										Name:      pulumi.String("RequireLowercaseCharacters"),
   161  //										ValueType: pulumi.String("CUSTOM"),
   162  //										Bool: &securityhub.ConfigurationPolicyConfigurationPolicySecurityControlsConfigurationSecurityControlCustomParameterParameterBoolArgs{
   163  //											Value: pulumi.Bool(false),
   164  //										},
   165  //									},
   166  //									&securityhub.ConfigurationPolicyConfigurationPolicySecurityControlsConfigurationSecurityControlCustomParameterParameterArgs{
   167  //										Name:      pulumi.String("MaxPasswordAge"),
   168  //										ValueType: pulumi.String("CUSTOM"),
   169  //										Int: &securityhub.ConfigurationPolicyConfigurationPolicySecurityControlsConfigurationSecurityControlCustomParameterParameterIntArgs{
   170  //											Value: pulumi.Int(60),
   171  //										},
   172  //									},
   173  //								},
   174  //							},
   175  //						},
   176  //					},
   177  //				},
   178  //			}, pulumi.DependsOn([]pulumi.Resource{
   179  //				example,
   180  //			}))
   181  //			if err != nil {
   182  //				return err
   183  //			}
   184  //			return nil
   185  //		})
   186  //	}
   187  //
   188  // ```
   189  // <!--End PulumiCodeChooser -->
   190  //
   191  // ## Import
   192  //
   193  // Using `pulumi import`, import an existing Security Hub enabled account using the universally unique identifier (UUID) of the policy. For example:
   194  //
   195  // ```sh
   196  // $ pulumi import aws:securityhub/configurationPolicy:ConfigurationPolicy example "00000000-1111-2222-3333-444444444444"
   197  // ```
   198  type ConfigurationPolicy struct {
   199  	pulumi.CustomResourceState
   200  
   201  	Arn pulumi.StringOutput `pulumi:"arn"`
   202  	// Defines how Security Hub is configured. See below.
   203  	ConfigurationPolicy ConfigurationPolicyConfigurationPolicyOutput `pulumi:"configurationPolicy"`
   204  	// The description of the configuration policy.
   205  	Description pulumi.StringPtrOutput `pulumi:"description"`
   206  	// The name of the configuration policy.
   207  	Name pulumi.StringOutput `pulumi:"name"`
   208  }
   209  
   210  // NewConfigurationPolicy registers a new resource with the given unique name, arguments, and options.
   211  func NewConfigurationPolicy(ctx *pulumi.Context,
   212  	name string, args *ConfigurationPolicyArgs, opts ...pulumi.ResourceOption) (*ConfigurationPolicy, error) {
   213  	if args == nil {
   214  		return nil, errors.New("missing one or more required arguments")
   215  	}
   216  
   217  	if args.ConfigurationPolicy == nil {
   218  		return nil, errors.New("invalid value for required argument 'ConfigurationPolicy'")
   219  	}
   220  	opts = internal.PkgResourceDefaultOpts(opts)
   221  	var resource ConfigurationPolicy
   222  	err := ctx.RegisterResource("aws:securityhub/configurationPolicy:ConfigurationPolicy", name, args, &resource, opts...)
   223  	if err != nil {
   224  		return nil, err
   225  	}
   226  	return &resource, nil
   227  }
   228  
   229  // GetConfigurationPolicy gets an existing ConfigurationPolicy resource's state with the given name, ID, and optional
   230  // state properties that are used to uniquely qualify the lookup (nil if not required).
   231  func GetConfigurationPolicy(ctx *pulumi.Context,
   232  	name string, id pulumi.IDInput, state *ConfigurationPolicyState, opts ...pulumi.ResourceOption) (*ConfigurationPolicy, error) {
   233  	var resource ConfigurationPolicy
   234  	err := ctx.ReadResource("aws:securityhub/configurationPolicy:ConfigurationPolicy", name, id, state, &resource, opts...)
   235  	if err != nil {
   236  		return nil, err
   237  	}
   238  	return &resource, nil
   239  }
   240  
   241  // Input properties used for looking up and filtering ConfigurationPolicy resources.
   242  type configurationPolicyState struct {
   243  	Arn *string `pulumi:"arn"`
   244  	// Defines how Security Hub is configured. See below.
   245  	ConfigurationPolicy *ConfigurationPolicyConfigurationPolicy `pulumi:"configurationPolicy"`
   246  	// The description of the configuration policy.
   247  	Description *string `pulumi:"description"`
   248  	// The name of the configuration policy.
   249  	Name *string `pulumi:"name"`
   250  }
   251  
   252  type ConfigurationPolicyState struct {
   253  	Arn pulumi.StringPtrInput
   254  	// Defines how Security Hub is configured. See below.
   255  	ConfigurationPolicy ConfigurationPolicyConfigurationPolicyPtrInput
   256  	// The description of the configuration policy.
   257  	Description pulumi.StringPtrInput
   258  	// The name of the configuration policy.
   259  	Name pulumi.StringPtrInput
   260  }
   261  
   262  func (ConfigurationPolicyState) ElementType() reflect.Type {
   263  	return reflect.TypeOf((*configurationPolicyState)(nil)).Elem()
   264  }
   265  
   266  type configurationPolicyArgs struct {
   267  	// Defines how Security Hub is configured. See below.
   268  	ConfigurationPolicy ConfigurationPolicyConfigurationPolicy `pulumi:"configurationPolicy"`
   269  	// The description of the configuration policy.
   270  	Description *string `pulumi:"description"`
   271  	// The name of the configuration policy.
   272  	Name *string `pulumi:"name"`
   273  }
   274  
   275  // The set of arguments for constructing a ConfigurationPolicy resource.
   276  type ConfigurationPolicyArgs struct {
   277  	// Defines how Security Hub is configured. See below.
   278  	ConfigurationPolicy ConfigurationPolicyConfigurationPolicyInput
   279  	// The description of the configuration policy.
   280  	Description pulumi.StringPtrInput
   281  	// The name of the configuration policy.
   282  	Name pulumi.StringPtrInput
   283  }
   284  
   285  func (ConfigurationPolicyArgs) ElementType() reflect.Type {
   286  	return reflect.TypeOf((*configurationPolicyArgs)(nil)).Elem()
   287  }
   288  
   289  type ConfigurationPolicyInput interface {
   290  	pulumi.Input
   291  
   292  	ToConfigurationPolicyOutput() ConfigurationPolicyOutput
   293  	ToConfigurationPolicyOutputWithContext(ctx context.Context) ConfigurationPolicyOutput
   294  }
   295  
   296  func (*ConfigurationPolicy) ElementType() reflect.Type {
   297  	return reflect.TypeOf((**ConfigurationPolicy)(nil)).Elem()
   298  }
   299  
   300  func (i *ConfigurationPolicy) ToConfigurationPolicyOutput() ConfigurationPolicyOutput {
   301  	return i.ToConfigurationPolicyOutputWithContext(context.Background())
   302  }
   303  
   304  func (i *ConfigurationPolicy) ToConfigurationPolicyOutputWithContext(ctx context.Context) ConfigurationPolicyOutput {
   305  	return pulumi.ToOutputWithContext(ctx, i).(ConfigurationPolicyOutput)
   306  }
   307  
   308  // ConfigurationPolicyArrayInput is an input type that accepts ConfigurationPolicyArray and ConfigurationPolicyArrayOutput values.
   309  // You can construct a concrete instance of `ConfigurationPolicyArrayInput` via:
   310  //
   311  //	ConfigurationPolicyArray{ ConfigurationPolicyArgs{...} }
   312  type ConfigurationPolicyArrayInput interface {
   313  	pulumi.Input
   314  
   315  	ToConfigurationPolicyArrayOutput() ConfigurationPolicyArrayOutput
   316  	ToConfigurationPolicyArrayOutputWithContext(context.Context) ConfigurationPolicyArrayOutput
   317  }
   318  
   319  type ConfigurationPolicyArray []ConfigurationPolicyInput
   320  
   321  func (ConfigurationPolicyArray) ElementType() reflect.Type {
   322  	return reflect.TypeOf((*[]*ConfigurationPolicy)(nil)).Elem()
   323  }
   324  
   325  func (i ConfigurationPolicyArray) ToConfigurationPolicyArrayOutput() ConfigurationPolicyArrayOutput {
   326  	return i.ToConfigurationPolicyArrayOutputWithContext(context.Background())
   327  }
   328  
   329  func (i ConfigurationPolicyArray) ToConfigurationPolicyArrayOutputWithContext(ctx context.Context) ConfigurationPolicyArrayOutput {
   330  	return pulumi.ToOutputWithContext(ctx, i).(ConfigurationPolicyArrayOutput)
   331  }
   332  
   333  // ConfigurationPolicyMapInput is an input type that accepts ConfigurationPolicyMap and ConfigurationPolicyMapOutput values.
   334  // You can construct a concrete instance of `ConfigurationPolicyMapInput` via:
   335  //
   336  //	ConfigurationPolicyMap{ "key": ConfigurationPolicyArgs{...} }
   337  type ConfigurationPolicyMapInput interface {
   338  	pulumi.Input
   339  
   340  	ToConfigurationPolicyMapOutput() ConfigurationPolicyMapOutput
   341  	ToConfigurationPolicyMapOutputWithContext(context.Context) ConfigurationPolicyMapOutput
   342  }
   343  
   344  type ConfigurationPolicyMap map[string]ConfigurationPolicyInput
   345  
   346  func (ConfigurationPolicyMap) ElementType() reflect.Type {
   347  	return reflect.TypeOf((*map[string]*ConfigurationPolicy)(nil)).Elem()
   348  }
   349  
   350  func (i ConfigurationPolicyMap) ToConfigurationPolicyMapOutput() ConfigurationPolicyMapOutput {
   351  	return i.ToConfigurationPolicyMapOutputWithContext(context.Background())
   352  }
   353  
   354  func (i ConfigurationPolicyMap) ToConfigurationPolicyMapOutputWithContext(ctx context.Context) ConfigurationPolicyMapOutput {
   355  	return pulumi.ToOutputWithContext(ctx, i).(ConfigurationPolicyMapOutput)
   356  }
   357  
   358  type ConfigurationPolicyOutput struct{ *pulumi.OutputState }
   359  
   360  func (ConfigurationPolicyOutput) ElementType() reflect.Type {
   361  	return reflect.TypeOf((**ConfigurationPolicy)(nil)).Elem()
   362  }
   363  
   364  func (o ConfigurationPolicyOutput) ToConfigurationPolicyOutput() ConfigurationPolicyOutput {
   365  	return o
   366  }
   367  
   368  func (o ConfigurationPolicyOutput) ToConfigurationPolicyOutputWithContext(ctx context.Context) ConfigurationPolicyOutput {
   369  	return o
   370  }
   371  
   372  func (o ConfigurationPolicyOutput) Arn() pulumi.StringOutput {
   373  	return o.ApplyT(func(v *ConfigurationPolicy) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   374  }
   375  
   376  // Defines how Security Hub is configured. See below.
   377  func (o ConfigurationPolicyOutput) ConfigurationPolicy() ConfigurationPolicyConfigurationPolicyOutput {
   378  	return o.ApplyT(func(v *ConfigurationPolicy) ConfigurationPolicyConfigurationPolicyOutput {
   379  		return v.ConfigurationPolicy
   380  	}).(ConfigurationPolicyConfigurationPolicyOutput)
   381  }
   382  
   383  // The description of the configuration policy.
   384  func (o ConfigurationPolicyOutput) Description() pulumi.StringPtrOutput {
   385  	return o.ApplyT(func(v *ConfigurationPolicy) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
   386  }
   387  
   388  // The name of the configuration policy.
   389  func (o ConfigurationPolicyOutput) Name() pulumi.StringOutput {
   390  	return o.ApplyT(func(v *ConfigurationPolicy) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
   391  }
   392  
   393  type ConfigurationPolicyArrayOutput struct{ *pulumi.OutputState }
   394  
   395  func (ConfigurationPolicyArrayOutput) ElementType() reflect.Type {
   396  	return reflect.TypeOf((*[]*ConfigurationPolicy)(nil)).Elem()
   397  }
   398  
   399  func (o ConfigurationPolicyArrayOutput) ToConfigurationPolicyArrayOutput() ConfigurationPolicyArrayOutput {
   400  	return o
   401  }
   402  
   403  func (o ConfigurationPolicyArrayOutput) ToConfigurationPolicyArrayOutputWithContext(ctx context.Context) ConfigurationPolicyArrayOutput {
   404  	return o
   405  }
   406  
   407  func (o ConfigurationPolicyArrayOutput) Index(i pulumi.IntInput) ConfigurationPolicyOutput {
   408  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *ConfigurationPolicy {
   409  		return vs[0].([]*ConfigurationPolicy)[vs[1].(int)]
   410  	}).(ConfigurationPolicyOutput)
   411  }
   412  
   413  type ConfigurationPolicyMapOutput struct{ *pulumi.OutputState }
   414  
   415  func (ConfigurationPolicyMapOutput) ElementType() reflect.Type {
   416  	return reflect.TypeOf((*map[string]*ConfigurationPolicy)(nil)).Elem()
   417  }
   418  
   419  func (o ConfigurationPolicyMapOutput) ToConfigurationPolicyMapOutput() ConfigurationPolicyMapOutput {
   420  	return o
   421  }
   422  
   423  func (o ConfigurationPolicyMapOutput) ToConfigurationPolicyMapOutputWithContext(ctx context.Context) ConfigurationPolicyMapOutput {
   424  	return o
   425  }
   426  
   427  func (o ConfigurationPolicyMapOutput) MapIndex(k pulumi.StringInput) ConfigurationPolicyOutput {
   428  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *ConfigurationPolicy {
   429  		return vs[0].(map[string]*ConfigurationPolicy)[vs[1].(string)]
   430  	}).(ConfigurationPolicyOutput)
   431  }
   432  
   433  func init() {
   434  	pulumi.RegisterInputType(reflect.TypeOf((*ConfigurationPolicyInput)(nil)).Elem(), &ConfigurationPolicy{})
   435  	pulumi.RegisterInputType(reflect.TypeOf((*ConfigurationPolicyArrayInput)(nil)).Elem(), ConfigurationPolicyArray{})
   436  	pulumi.RegisterInputType(reflect.TypeOf((*ConfigurationPolicyMapInput)(nil)).Elem(), ConfigurationPolicyMap{})
   437  	pulumi.RegisterOutputType(ConfigurationPolicyOutput{})
   438  	pulumi.RegisterOutputType(ConfigurationPolicyArrayOutput{})
   439  	pulumi.RegisterOutputType(ConfigurationPolicyMapOutput{})
   440  }