{"id":30658910,"url":"https://github.com/plus3it/terraform-aws-tardigrade-macie","last_synced_at":"2025-08-31T12:08:11.215Z","repository":{"id":37886978,"uuid":"263701874","full_name":"plus3it/terraform-aws-tardigrade-macie","owner":"plus3it","description":"A terraform module to create the handshake role needed by macie and then to setup the account as a member of your macie master","archived":false,"fork":false,"pushed_at":"2025-08-28T19:43:37.000Z","size":985,"stargazers_count":0,"open_issues_count":0,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-08-29T01:35:24.277Z","etag":null,"topics":["aws","macie","tardigrade","terraform"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/plus3it.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-05-13T17:43:19.000Z","updated_at":"2025-08-28T19:43:39.000Z","dependencies_parsed_at":"2023-12-06T03:26:05.155Z","dependency_job_id":"c11e2c65-29db-49db-a33c-06e369453814","html_url":"https://github.com/plus3it/terraform-aws-tardigrade-macie","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/plus3it/terraform-aws-tardigrade-macie","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plus3it%2Fterraform-aws-tardigrade-macie","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plus3it%2Fterraform-aws-tardigrade-macie/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plus3it%2Fterraform-aws-tardigrade-macie/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plus3it%2Fterraform-aws-tardigrade-macie/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/plus3it","download_url":"https://codeload.github.com/plus3it/terraform-aws-tardigrade-macie/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plus3it%2Fterraform-aws-tardigrade-macie/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272977021,"owners_count":25025044,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-31T02:00:09.071Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","macie","tardigrade","terraform"],"created_at":"2025-08-31T12:08:10.110Z","updated_at":"2025-08-31T12:08:11.201Z","avatar_url":"https://github.com/plus3it.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# terraform-aws-tardigrade-guardduty\n\nTerraform module to create a standard GuardDuty configuration in a single AWS account.  These include a GuardDuty detector, filter, ipset, threatintelset, and publshing destination.  GuardDuty configurations that require multiple AWS accounts are not included in this module, and the terraform code for those configurations has been implemented in seperate submodeles (see the modules section of this project).\n\n  - Creates a GuardDuty detector for this account\n  - Creates a GuardDuty filter for this account if the filter var is not null.\n  - Creates a GuardDuty ipset for this account if the ipset var is not null.\n  - Creates a GuardDuty threatintelset for this account if the threatintelset var is not null.\n  - Creates a GuardDuty publishing_destination for this account if the publishing_destination var is not null.\n\nPrerequisites:  This publishing_destination resource assumes the S3 bucket associated with the destination arn exists and the required policies have been created to\nallow GuardDuty to access the bucket.  It also assumes the kms key associated with the kms key arn exists and has a policy that allows GuardDuty to to use it.\n\n## Testing\n\nYou can find example implementations of this module in the tests folder (create_all_guardduty_standard_resources). \n\n\n\u003c!-- BEGIN TFDOCS --\u003e\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | \u003e= 0.12 |\n| \u003ca name=\"requirement_aws\"\u003e\u003c/a\u003e [aws](#requirement\\_aws) | \u003e= 3.0 |\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_aws\"\u003e\u003c/a\u003e [aws](#provider\\_aws) | \u003e= 3.0 |\n\n## Resources\n\n| Name | Type |\n|------|------|\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_classification_jobs\"\u003e\u003c/a\u003e [classification\\_jobs](#input\\_classification\\_jobs) | Macie classification job | \u003cpre\u003elist(object({\u003cbr/\u003e    schedule_frequency = object({ # (Optional) The recurrence pattern for running the job. To run the job only once, set this to null and set the value for the job_type property to ONE_TIME. Only one of the following propperties can be set to a value and the other two must be set to null.\u003cbr/\u003e      daily_schedule   = bool\u003cbr/\u003e      weekly_schedule  = string # Valid values are \"MONDAY\" , \"TUESDAY\", \"WEDNESDAY\", \"THURSDAY\", \"FRIDAY\", \"SATURDAY\", and \"SUNDAY\"\u003cbr/\u003e      monthly_schedule = number # Valid values are 1 - 31\u003cbr/\u003e    })\u003cbr/\u003e    custom_data_identifier_ids = list(string) # (Optional) The custom data identifiers to use for data analysis and classification.\u003cbr/\u003e    sampling_percentage        = number       # (Optional) The sampling depth, as a percentage, to apply when processing objects. This value determines the percentage of eligible objects that the job analyzes. If this value is less than 100, Amazon Macie selects the objects to analyze at random, up to the specified percentage, and analyzes all the data in those objects.\u003cbr/\u003e    name                       = string       # (Optional) A custom name for the job. The name can contain as many as 500 characters. If omitted, Terraform will assign a random, unique name. Conflicts with name_prefix.\u003cbr/\u003e    description                = string       # (Optional) A custom description of the job. The description can contain as many as 200 characters.\u003cbr/\u003e    initial_run                = string       # (Optional) Specifies whether to analyze all existing, eligible objects immediately after the job is created.\u003cbr/\u003e    job_type                   = string       # (Required) The schedule for running the job. Valid values are: ONE_TIME - Run the job only once. If you specify this value, don't specify a value for the schedule_frequency property. SCHEDULED - Run the job on a daily, weekly, or monthly basis. If you specify this value, use the schedule_frequency property to define the recurrence pattern for the job.\u003cbr/\u003e    job_status                 = string       # (Optional) The status for the job. Valid values are: CANCELLED, RUNNING and USER_PAUSED\u003cbr/\u003e    tags                       = map(string)  # (Optional) A map of key-value pairs that specifies the tags to associate with the job. A job can have a maximum of 50 tags. Each tag consists of a tag key and an associated tag value. The maximum length of a tag key is 128 characters. The maximum length of a tag value is 256 characters.\u003cbr/\u003e    s3_job_definition = object({              # (Required) S3 buckets that contain the objects to analyze, and the scope of that analysis.\u003cbr/\u003e      bucket_definitions = list(object({      # (Optional) An array of objects, one for each AWS account that owns buckets to analyze. Each object specifies the account ID for an account and one or more buckets to analyze for the account.\u003cbr/\u003e        account_id = string                   # (Required) The unique identifier for the AWS account that owns the buckets.\u003cbr/\u003e        buckets    = list(string)             # (Required) An array that lists the names of the buckets.\u003cbr/\u003e      }))\u003cbr/\u003e      scoping = object({    # (Optional) The property- and tag-based conditions that determine which objects to include or exclude from the analysis.\u003cbr/\u003e        excludes = object({ # (Optional) The property- or tag-based conditions that determine which objects to exclude from the analysis\u003cbr/\u003e          and = list(object({\u003cbr/\u003e            simple_scope_term = object({ # (Optional) A property-based condition that defines a property, operator, and one or more values for including or excluding an object from the job.\u003cbr/\u003e              comparator = string        # (Optional) The operator to use in a condition. Valid values are: EQ, GT, GTE, LT, LTE, NE, CONTAINS, STARTS_WITH.\u003cbr/\u003e              values     = list(string)  # (Optional) An array that lists the values to use in the condition.\u003cbr/\u003e              key        = string        # (Optional) The object property to use in the condition.  Valid values: OBJECT_EXTENSION, OBJECT_LAST_MODIFIED_DATE, OBJECT_SIZE, and OBJECT_KEY\u003cbr/\u003e            })\u003cbr/\u003e            tag_scope_term = object({  # (Optional) A tag-based condition that defines the operator and tag keys or tag key and value pairs for including or excluding an object from the job.\u003cbr/\u003e              comparator = string      # (Optional) The operator to use in the condition.\u003cbr/\u003e              tag_values = map(string) # (Optional) The tag keys or tag key and value pairs to use in the condition.  Example: tag_values = {value=\"value\", key=\"key\"}\u003cbr/\u003e              key        = string      # (Required) The tag key to use in the condition.  Possible values: \"TAG\"\u003cbr/\u003e              target     = string      # (Required) The type of object to apply the condition to.  Possible values: \"S3_OBJECT\"\u003cbr/\u003e            })\u003cbr/\u003e          }))\u003cbr/\u003e        })\u003cbr/\u003e        includes = object({ # (Optional) The property- or tag-based conditions that determine which objects to include in the analysis\u003cbr/\u003e          and = list(object({\u003cbr/\u003e            simple_scope_term = object({ # (Optional) A property-based condition that defines a property, operator, and one or more values for including or excluding an object from the job.\u003cbr/\u003e              comparator = string        # (Optional) The operator to use in a condition. Valid values are: EQ, GT, GTE, LT, LTE, NE, CONTAINS, STARTS_WITH.\u003cbr/\u003e              values     = list(string)  # (Optional) An array that lists the values to use in the condition.\u003cbr/\u003e              key        = string        # (Optional) The object property to use in the condition.  Valid values: OBJECT_EXTENSION, OBJECT_LAST_MODIFIED_DATE, OBJECT_SIZE, and OBJECT_KEY\u003cbr/\u003e            })\u003cbr/\u003e            tag_scope_term = object({  # (Optional) A tag-based condition that defines the operator and tag keys or tag key and value pairs for including or excluding an object from the job.\u003cbr/\u003e              comparator = string      # (Optional) The operator to use in the condition.\u003cbr/\u003e              tag_values = map(string) # (Optional) The tag keys or tag key and value pairs to use in the condition.  Example: tag_values = {value=\"value\", key=\"key\"}\u003cbr/\u003e              key        = string      # (Required) The tag key to use in the condition.  Possible values: \"TAG\"\u003cbr/\u003e              target     = string      # (Required) The type of object to apply the condition to.  Possible values: \"S3_OBJECT\"\u003cbr/\u003e            })\u003cbr/\u003e          }))\u003cbr/\u003e        })\u003cbr/\u003e      })\u003cbr/\u003e    })\u003cbr/\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_custom_data_identifiers\"\u003e\u003c/a\u003e [custom\\_data\\_identifiers](#input\\_custom\\_data\\_identifiers) | AWS Macie Custom Data Identifier. | \u003cpre\u003elist(object({\u003cbr/\u003e    regex                  = string       # (Optional) The regular expression (regex) that defines the pattern to match. The expression can contain as many as 512 characters.\u003cbr/\u003e    keywords               = list(string) # (Optional) An array that lists specific character sequences (keywords), one of which must be within proximity (maximum_match_distance) of the regular expression to match. The array can contain as many as 50 keywords. Each keyword can contain 3 - 90 characters. Keywords aren't case sensitive.\u003cbr/\u003e    ignore_words           = list(string) # (Optional) An array that lists specific character sequences (ignore words) to exclude from the results. If the text matched by the regular expression is the same as any string in this array, Amazon Macie ignores it. The array can contain as many as 10 ignore words. Each ignore word can contain 4 - 90 characters. Ignore words are case sensitive.\u003cbr/\u003e    name                   = string       # (Optional) A custom name for the custom data identifier. The name can contain as many as 128 characters. If omitted, Terraform will assign a random, unique name. Conflicts with name_prefix.\u003cbr/\u003e    name_prefix            = string       # (Optional) Creates a unique name beginning with the specified prefix. Conflicts with name.\u003cbr/\u003e    description            = string       # (Optional) A custom description of the custom data identifier. The description can contain as many as 512 characters.\u003cbr/\u003e    maximum_match_distance = number       # (Optional) The maximum number of characters that can exist between text that matches the regex pattern and the character sequences specified by the keywords array. Macie includes or excludes a result based on the proximity of a keyword to text that matches the regex pattern. The distance can be 1 - 300 characters. The default value is 50.\u003cbr/\u003e    tags                   = map(string)  # (Optional) Key-value map of resource tags.\u003cbr/\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_finding_publishing_frequency\"\u003e\u003c/a\u003e [finding\\_publishing\\_frequency](#input\\_finding\\_publishing\\_frequency) | (Optional) Specifies how often to publish updates to policy findings for the account. This includes publishing updates to AWS Security Hub and Amazon EventBridge (formerly called Amazon CloudWatch Events). Valid values are FIFTEEN\\_MINUTES, ONE\\_HOUR or SIX\\_HOURS. | `string` | `\"SIX_HOURS\"` | no |\n| \u003ca name=\"input_findings_filters\"\u003e\u003c/a\u003e [findings\\_filters](#input\\_findings\\_filters) | Amazon Macie Findings Filter. | \u003cpre\u003elist(object({\u003cbr/\u003e    name        = string            # (Optional) A custom name for the filter. The name must contain at least 3 characters and can contain as many as 64 characters. If omitted, Terraform will assign a random, unique name. Conflicts with name_prefix.\u003cbr/\u003e    name_prefix = string            # (Optional) Creates a unique name beginning with the specified prefix. Conflicts with name.\u003cbr/\u003e    description = string            # (Optional) A custom description of the filter. The description can contain as many as 512 characters.\u003cbr/\u003e    action      = string            # (Required) The action to perform on findings that meet the filter criteria (finding_criteria). Valid values are: ARCHIVE, suppress (automatically archive) the findings; and, NOOP, don't perform any action on the findings.\u003cbr/\u003e    position    = number            # (Optional) The position of the filter in the list of saved filters on the Amazon Macie console. This value also determines the order in which the filter is applied to findings, relative to other filters that are also applied to the findings.\u003cbr/\u003e    tags        = map(string)       # (Optional) - The tags that you want to add to the Filter resource. A tag consists of a key and a value.\u003cbr/\u003e    criterion = list(object({       # (Required) The criteria to use to filter findings.\u003cbr/\u003e      field          = string       # (Required) The name of the field to be evaluated.  Valid values: Account ID, Category, Created at, Finding ID, Finding type, Origin type, Region, Sample, Severity, Updated at, and many more.  See the AWS web console - Amazon Macie - Findings page for the complete list\u003cbr/\u003e      eq_exact_match = set(string)  # (Optional) The value for the property exclusively matches (equals an exact match for) all the specified values. If you specify multiple values, Amazon Macie uses AND logic to join the values.\u003cbr/\u003e      eq             = list(string) # (Optional) The value for the property matches (equals) the specified value. If you specify multiple values, Amazon Macie uses OR logic to join the values.\u003cbr/\u003e      neq            = list(string) # (Optional) The value for the property doesn't match (doesn't equal) the specified value. If you specify multiple values, Amazon Macie uses OR logic to join the values.\u003cbr/\u003e      lt             = string       # (Optional) The value for the property is less than the specified value.\u003cbr/\u003e      lte            = string       # (Optional) The value for the property is less than or equal to the specified value.\u003cbr/\u003e      gt             = string       # (Optional) The value for the property is greater than the specified value.\u003cbr/\u003e      gte            = string       # (Optional) The value for the property is greater than or equal to the specified value.\u003cbr/\u003e    }))\u003cbr/\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_status\"\u003e\u003c/a\u003e [status](#input\\_status) | (Optional) Specifies the status for the account. To enable Amazon Macie and start all Macie activities for the account, set this value to ENABLED. Valid values are ENABLED or PAUSED. | `string` | `\"ENABLED\"` | no |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_account\"\u003e\u003c/a\u003e [account](#output\\_account) | Macie account |\n| \u003ca name=\"output_classification_job\"\u003e\u003c/a\u003e [classification\\_job](#output\\_classification\\_job) | Macie classification\\_job |\n| \u003ca name=\"output_custom_data_identifier\"\u003e\u003c/a\u003e [custom\\_data\\_identifier](#output\\_custom\\_data\\_identifier) | Macie custom\\_data\\_identifier |\n| \u003ca name=\"output_findings_filter\"\u003e\u003c/a\u003e [findings\\_filter](#output\\_findings\\_filter) | Macie findings\\_filter |\n\n\u003c!-- END TFDOCS --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplus3it%2Fterraform-aws-tardigrade-macie","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplus3it%2Fterraform-aws-tardigrade-macie","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplus3it%2Fterraform-aws-tardigrade-macie/lists"}