github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/securityhub/configurationPolicyAssociation.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 associations.
    16  //
    17  // > **NOTE:** This resource requires `securityhub.OrganizationConfiguration` to be configured with 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  // <!--Start PulumiCodeChooser -->
    22  // ```go
    23  // package main
    24  //
    25  // import (
    26  //
    27  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/securityhub"
    28  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    29  //
    30  // )
    31  //
    32  //	func main() {
    33  //		pulumi.Run(func(ctx *pulumi.Context) error {
    34  //			example, err := securityhub.NewFindingAggregator(ctx, "example", &securityhub.FindingAggregatorArgs{
    35  //				LinkingMode: pulumi.String("ALL_REGIONS"),
    36  //			})
    37  //			if err != nil {
    38  //				return err
    39  //			}
    40  //			exampleOrganizationConfiguration, err := securityhub.NewOrganizationConfiguration(ctx, "example", &securityhub.OrganizationConfigurationArgs{
    41  //				AutoEnable:          pulumi.Bool(false),
    42  //				AutoEnableStandards: pulumi.String("NONE"),
    43  //				OrganizationConfiguration: &securityhub.OrganizationConfigurationOrganizationConfigurationArgs{
    44  //					ConfigurationType: pulumi.String("CENTRAL"),
    45  //				},
    46  //			}, pulumi.DependsOn([]pulumi.Resource{
    47  //				example,
    48  //			}))
    49  //			if err != nil {
    50  //				return err
    51  //			}
    52  //			exampleConfigurationPolicy, err := securityhub.NewConfigurationPolicy(ctx, "example", &securityhub.ConfigurationPolicyArgs{
    53  //				Name:        pulumi.String("Example"),
    54  //				Description: pulumi.String("This is an example configuration policy"),
    55  //				ConfigurationPolicy: &securityhub.ConfigurationPolicyConfigurationPolicyArgs{
    56  //					ServiceEnabled: pulumi.Bool(true),
    57  //					EnabledStandardArns: pulumi.StringArray{
    58  //						pulumi.String("arn:aws:securityhub:us-east-1::standards/aws-foundational-security-best-practices/v/1.0.0"),
    59  //						pulumi.String("arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0"),
    60  //					},
    61  //					SecurityControlsConfiguration: &securityhub.ConfigurationPolicyConfigurationPolicySecurityControlsConfigurationArgs{
    62  //						DisabledControlIdentifiers: pulumi.StringArray{},
    63  //					},
    64  //				},
    65  //			}, pulumi.DependsOn([]pulumi.Resource{
    66  //				exampleOrganizationConfiguration,
    67  //			}))
    68  //			if err != nil {
    69  //				return err
    70  //			}
    71  //			_, err = securityhub.NewConfigurationPolicyAssociation(ctx, "account_example", &securityhub.ConfigurationPolicyAssociationArgs{
    72  //				TargetId: pulumi.String("123456789012"),
    73  //				PolicyId: exampleConfigurationPolicy.ID(),
    74  //			})
    75  //			if err != nil {
    76  //				return err
    77  //			}
    78  //			_, err = securityhub.NewConfigurationPolicyAssociation(ctx, "root_example", &securityhub.ConfigurationPolicyAssociationArgs{
    79  //				TargetId: pulumi.String("r-abcd"),
    80  //				PolicyId: exampleConfigurationPolicy.ID(),
    81  //			})
    82  //			if err != nil {
    83  //				return err
    84  //			}
    85  //			_, err = securityhub.NewConfigurationPolicyAssociation(ctx, "ou_example", &securityhub.ConfigurationPolicyAssociationArgs{
    86  //				TargetId: pulumi.String("ou-abcd-12345678"),
    87  //				PolicyId: exampleConfigurationPolicy.ID(),
    88  //			})
    89  //			if err != nil {
    90  //				return err
    91  //			}
    92  //			return nil
    93  //		})
    94  //	}
    95  //
    96  // ```
    97  // <!--End PulumiCodeChooser -->
    98  //
    99  // ## Import
   100  //
   101  // Using `pulumi import`, import an existing Security Hub enabled account using the universally unique identifier (UUID) of the policy. For example:
   102  //
   103  // ```sh
   104  // $ pulumi import aws:securityhub/configurationPolicyAssociation:ConfigurationPolicyAssociation example_account_association 123456789012
   105  // ```
   106  type ConfigurationPolicyAssociation struct {
   107  	pulumi.CustomResourceState
   108  
   109  	// The universally unique identifier (UUID) of the configuration policy.
   110  	PolicyId pulumi.StringOutput `pulumi:"policyId"`
   111  	// The identifier of the target account, organizational unit, or the root to associate with the specified configuration.
   112  	TargetId pulumi.StringOutput `pulumi:"targetId"`
   113  }
   114  
   115  // NewConfigurationPolicyAssociation registers a new resource with the given unique name, arguments, and options.
   116  func NewConfigurationPolicyAssociation(ctx *pulumi.Context,
   117  	name string, args *ConfigurationPolicyAssociationArgs, opts ...pulumi.ResourceOption) (*ConfigurationPolicyAssociation, error) {
   118  	if args == nil {
   119  		return nil, errors.New("missing one or more required arguments")
   120  	}
   121  
   122  	if args.PolicyId == nil {
   123  		return nil, errors.New("invalid value for required argument 'PolicyId'")
   124  	}
   125  	if args.TargetId == nil {
   126  		return nil, errors.New("invalid value for required argument 'TargetId'")
   127  	}
   128  	opts = internal.PkgResourceDefaultOpts(opts)
   129  	var resource ConfigurationPolicyAssociation
   130  	err := ctx.RegisterResource("aws:securityhub/configurationPolicyAssociation:ConfigurationPolicyAssociation", name, args, &resource, opts...)
   131  	if err != nil {
   132  		return nil, err
   133  	}
   134  	return &resource, nil
   135  }
   136  
   137  // GetConfigurationPolicyAssociation gets an existing ConfigurationPolicyAssociation resource's state with the given name, ID, and optional
   138  // state properties that are used to uniquely qualify the lookup (nil if not required).
   139  func GetConfigurationPolicyAssociation(ctx *pulumi.Context,
   140  	name string, id pulumi.IDInput, state *ConfigurationPolicyAssociationState, opts ...pulumi.ResourceOption) (*ConfigurationPolicyAssociation, error) {
   141  	var resource ConfigurationPolicyAssociation
   142  	err := ctx.ReadResource("aws:securityhub/configurationPolicyAssociation:ConfigurationPolicyAssociation", name, id, state, &resource, opts...)
   143  	if err != nil {
   144  		return nil, err
   145  	}
   146  	return &resource, nil
   147  }
   148  
   149  // Input properties used for looking up and filtering ConfigurationPolicyAssociation resources.
   150  type configurationPolicyAssociationState struct {
   151  	// The universally unique identifier (UUID) of the configuration policy.
   152  	PolicyId *string `pulumi:"policyId"`
   153  	// The identifier of the target account, organizational unit, or the root to associate with the specified configuration.
   154  	TargetId *string `pulumi:"targetId"`
   155  }
   156  
   157  type ConfigurationPolicyAssociationState struct {
   158  	// The universally unique identifier (UUID) of the configuration policy.
   159  	PolicyId pulumi.StringPtrInput
   160  	// The identifier of the target account, organizational unit, or the root to associate with the specified configuration.
   161  	TargetId pulumi.StringPtrInput
   162  }
   163  
   164  func (ConfigurationPolicyAssociationState) ElementType() reflect.Type {
   165  	return reflect.TypeOf((*configurationPolicyAssociationState)(nil)).Elem()
   166  }
   167  
   168  type configurationPolicyAssociationArgs struct {
   169  	// The universally unique identifier (UUID) of the configuration policy.
   170  	PolicyId string `pulumi:"policyId"`
   171  	// The identifier of the target account, organizational unit, or the root to associate with the specified configuration.
   172  	TargetId string `pulumi:"targetId"`
   173  }
   174  
   175  // The set of arguments for constructing a ConfigurationPolicyAssociation resource.
   176  type ConfigurationPolicyAssociationArgs struct {
   177  	// The universally unique identifier (UUID) of the configuration policy.
   178  	PolicyId pulumi.StringInput
   179  	// The identifier of the target account, organizational unit, or the root to associate with the specified configuration.
   180  	TargetId pulumi.StringInput
   181  }
   182  
   183  func (ConfigurationPolicyAssociationArgs) ElementType() reflect.Type {
   184  	return reflect.TypeOf((*configurationPolicyAssociationArgs)(nil)).Elem()
   185  }
   186  
   187  type ConfigurationPolicyAssociationInput interface {
   188  	pulumi.Input
   189  
   190  	ToConfigurationPolicyAssociationOutput() ConfigurationPolicyAssociationOutput
   191  	ToConfigurationPolicyAssociationOutputWithContext(ctx context.Context) ConfigurationPolicyAssociationOutput
   192  }
   193  
   194  func (*ConfigurationPolicyAssociation) ElementType() reflect.Type {
   195  	return reflect.TypeOf((**ConfigurationPolicyAssociation)(nil)).Elem()
   196  }
   197  
   198  func (i *ConfigurationPolicyAssociation) ToConfigurationPolicyAssociationOutput() ConfigurationPolicyAssociationOutput {
   199  	return i.ToConfigurationPolicyAssociationOutputWithContext(context.Background())
   200  }
   201  
   202  func (i *ConfigurationPolicyAssociation) ToConfigurationPolicyAssociationOutputWithContext(ctx context.Context) ConfigurationPolicyAssociationOutput {
   203  	return pulumi.ToOutputWithContext(ctx, i).(ConfigurationPolicyAssociationOutput)
   204  }
   205  
   206  // ConfigurationPolicyAssociationArrayInput is an input type that accepts ConfigurationPolicyAssociationArray and ConfigurationPolicyAssociationArrayOutput values.
   207  // You can construct a concrete instance of `ConfigurationPolicyAssociationArrayInput` via:
   208  //
   209  //	ConfigurationPolicyAssociationArray{ ConfigurationPolicyAssociationArgs{...} }
   210  type ConfigurationPolicyAssociationArrayInput interface {
   211  	pulumi.Input
   212  
   213  	ToConfigurationPolicyAssociationArrayOutput() ConfigurationPolicyAssociationArrayOutput
   214  	ToConfigurationPolicyAssociationArrayOutputWithContext(context.Context) ConfigurationPolicyAssociationArrayOutput
   215  }
   216  
   217  type ConfigurationPolicyAssociationArray []ConfigurationPolicyAssociationInput
   218  
   219  func (ConfigurationPolicyAssociationArray) ElementType() reflect.Type {
   220  	return reflect.TypeOf((*[]*ConfigurationPolicyAssociation)(nil)).Elem()
   221  }
   222  
   223  func (i ConfigurationPolicyAssociationArray) ToConfigurationPolicyAssociationArrayOutput() ConfigurationPolicyAssociationArrayOutput {
   224  	return i.ToConfigurationPolicyAssociationArrayOutputWithContext(context.Background())
   225  }
   226  
   227  func (i ConfigurationPolicyAssociationArray) ToConfigurationPolicyAssociationArrayOutputWithContext(ctx context.Context) ConfigurationPolicyAssociationArrayOutput {
   228  	return pulumi.ToOutputWithContext(ctx, i).(ConfigurationPolicyAssociationArrayOutput)
   229  }
   230  
   231  // ConfigurationPolicyAssociationMapInput is an input type that accepts ConfigurationPolicyAssociationMap and ConfigurationPolicyAssociationMapOutput values.
   232  // You can construct a concrete instance of `ConfigurationPolicyAssociationMapInput` via:
   233  //
   234  //	ConfigurationPolicyAssociationMap{ "key": ConfigurationPolicyAssociationArgs{...} }
   235  type ConfigurationPolicyAssociationMapInput interface {
   236  	pulumi.Input
   237  
   238  	ToConfigurationPolicyAssociationMapOutput() ConfigurationPolicyAssociationMapOutput
   239  	ToConfigurationPolicyAssociationMapOutputWithContext(context.Context) ConfigurationPolicyAssociationMapOutput
   240  }
   241  
   242  type ConfigurationPolicyAssociationMap map[string]ConfigurationPolicyAssociationInput
   243  
   244  func (ConfigurationPolicyAssociationMap) ElementType() reflect.Type {
   245  	return reflect.TypeOf((*map[string]*ConfigurationPolicyAssociation)(nil)).Elem()
   246  }
   247  
   248  func (i ConfigurationPolicyAssociationMap) ToConfigurationPolicyAssociationMapOutput() ConfigurationPolicyAssociationMapOutput {
   249  	return i.ToConfigurationPolicyAssociationMapOutputWithContext(context.Background())
   250  }
   251  
   252  func (i ConfigurationPolicyAssociationMap) ToConfigurationPolicyAssociationMapOutputWithContext(ctx context.Context) ConfigurationPolicyAssociationMapOutput {
   253  	return pulumi.ToOutputWithContext(ctx, i).(ConfigurationPolicyAssociationMapOutput)
   254  }
   255  
   256  type ConfigurationPolicyAssociationOutput struct{ *pulumi.OutputState }
   257  
   258  func (ConfigurationPolicyAssociationOutput) ElementType() reflect.Type {
   259  	return reflect.TypeOf((**ConfigurationPolicyAssociation)(nil)).Elem()
   260  }
   261  
   262  func (o ConfigurationPolicyAssociationOutput) ToConfigurationPolicyAssociationOutput() ConfigurationPolicyAssociationOutput {
   263  	return o
   264  }
   265  
   266  func (o ConfigurationPolicyAssociationOutput) ToConfigurationPolicyAssociationOutputWithContext(ctx context.Context) ConfigurationPolicyAssociationOutput {
   267  	return o
   268  }
   269  
   270  // The universally unique identifier (UUID) of the configuration policy.
   271  func (o ConfigurationPolicyAssociationOutput) PolicyId() pulumi.StringOutput {
   272  	return o.ApplyT(func(v *ConfigurationPolicyAssociation) pulumi.StringOutput { return v.PolicyId }).(pulumi.StringOutput)
   273  }
   274  
   275  // The identifier of the target account, organizational unit, or the root to associate with the specified configuration.
   276  func (o ConfigurationPolicyAssociationOutput) TargetId() pulumi.StringOutput {
   277  	return o.ApplyT(func(v *ConfigurationPolicyAssociation) pulumi.StringOutput { return v.TargetId }).(pulumi.StringOutput)
   278  }
   279  
   280  type ConfigurationPolicyAssociationArrayOutput struct{ *pulumi.OutputState }
   281  
   282  func (ConfigurationPolicyAssociationArrayOutput) ElementType() reflect.Type {
   283  	return reflect.TypeOf((*[]*ConfigurationPolicyAssociation)(nil)).Elem()
   284  }
   285  
   286  func (o ConfigurationPolicyAssociationArrayOutput) ToConfigurationPolicyAssociationArrayOutput() ConfigurationPolicyAssociationArrayOutput {
   287  	return o
   288  }
   289  
   290  func (o ConfigurationPolicyAssociationArrayOutput) ToConfigurationPolicyAssociationArrayOutputWithContext(ctx context.Context) ConfigurationPolicyAssociationArrayOutput {
   291  	return o
   292  }
   293  
   294  func (o ConfigurationPolicyAssociationArrayOutput) Index(i pulumi.IntInput) ConfigurationPolicyAssociationOutput {
   295  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *ConfigurationPolicyAssociation {
   296  		return vs[0].([]*ConfigurationPolicyAssociation)[vs[1].(int)]
   297  	}).(ConfigurationPolicyAssociationOutput)
   298  }
   299  
   300  type ConfigurationPolicyAssociationMapOutput struct{ *pulumi.OutputState }
   301  
   302  func (ConfigurationPolicyAssociationMapOutput) ElementType() reflect.Type {
   303  	return reflect.TypeOf((*map[string]*ConfigurationPolicyAssociation)(nil)).Elem()
   304  }
   305  
   306  func (o ConfigurationPolicyAssociationMapOutput) ToConfigurationPolicyAssociationMapOutput() ConfigurationPolicyAssociationMapOutput {
   307  	return o
   308  }
   309  
   310  func (o ConfigurationPolicyAssociationMapOutput) ToConfigurationPolicyAssociationMapOutputWithContext(ctx context.Context) ConfigurationPolicyAssociationMapOutput {
   311  	return o
   312  }
   313  
   314  func (o ConfigurationPolicyAssociationMapOutput) MapIndex(k pulumi.StringInput) ConfigurationPolicyAssociationOutput {
   315  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *ConfigurationPolicyAssociation {
   316  		return vs[0].(map[string]*ConfigurationPolicyAssociation)[vs[1].(string)]
   317  	}).(ConfigurationPolicyAssociationOutput)
   318  }
   319  
   320  func init() {
   321  	pulumi.RegisterInputType(reflect.TypeOf((*ConfigurationPolicyAssociationInput)(nil)).Elem(), &ConfigurationPolicyAssociation{})
   322  	pulumi.RegisterInputType(reflect.TypeOf((*ConfigurationPolicyAssociationArrayInput)(nil)).Elem(), ConfigurationPolicyAssociationArray{})
   323  	pulumi.RegisterInputType(reflect.TypeOf((*ConfigurationPolicyAssociationMapInput)(nil)).Elem(), ConfigurationPolicyAssociationMap{})
   324  	pulumi.RegisterOutputType(ConfigurationPolicyAssociationOutput{})
   325  	pulumi.RegisterOutputType(ConfigurationPolicyAssociationArrayOutput{})
   326  	pulumi.RegisterOutputType(ConfigurationPolicyAssociationMapOutput{})
   327  }