123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- resource "aws_iam_account_password_policy" "cis" {
- # 1.5
- require_uppercase_characters = var.iam_require_uppercase_characters
- # 1.6
- require_lowercase_characters = var.iam_require_lowercase_characters
- # 1.7
- require_symbols = var.iam_require_symbols
- # 1.8
- require_numbers = var.iam_require_numbers
- # 1.9
- minimum_password_length = var.iam_minimum_password_length
- # 1.10
- password_reuse_prevention = var.iam_password_reuse_prevention
- # 1.11
- max_password_age = var.iam_max_password_age
- allow_users_to_change_password = var.iam_allow_users_to_change_password
- hard_expiry = var.iam_hard_expiry
- }
- # Password policy check function
- ## IAM Policy
- data "template_file" "password_policy_check_policy" {
- template = file("${path.module}/templates/lambda_password_policy_check_policy.json.tpl")
- }
- resource "aws_iam_role" "password_policy_check" {
- name = "${var.resource_name_prefix}-password-policy-check"
- path = "/lambda/"
- assume_role_policy = data.template_file.iam_lambda_assume_role_policy.rendered
- }
- resource "aws_iam_role_policy" "password_policy_check" {
- name = "${var.resource_name_prefix}-lambda-password-policy-check"
- role = aws_iam_role.password_policy_check.id
- policy = data.template_file.password_policy_check_policy.rendered
- }
- ## /IAM Policy
- ## Create the function
- data "archive_file" "password_policy_check" {
- type = "zip"
- source_file = "${path.module}/files/password_policy_check.py"
- output_path = "${var.temp_artifacts_dir}/password_policy_check.zip"
- }
- resource "aws_lambda_function" "password_policy_check" {
- filename = "${var.temp_artifacts_dir}/password_policy_check.zip"
- function_name = "${var.resource_name_prefix}-password-policy-check"
- role = aws_iam_role.password_policy_check.arn
- handler = "password_policy_check.lambda_handler"
- source_code_hash = data.archive_file.password_policy_check.output_base64sha256
- runtime = "python2.7"
- timeout = var.lambda_timeout
- environment {
- variables = {
- REQUIRE_UPPERCASE_CHARACTERS = var.iam_require_uppercase_characters
- REQUIRE_LOWERCASE_CHARACTERS = var.iam_require_lowercase_characters
- REQUIRE_SYMBOLS = var.iam_require_symbols
- REQUIRE_NUMBERS = var.iam_require_numbers
- MINIMUM_PASSWORD_LENGTH = var.iam_minimum_password_length
- PASSWORD_REUSE_PREVENTION = var.iam_password_reuse_prevention
- MAX_PASSWORD_AGE = var.iam_max_password_age
- ALLOW_USERS_TO_CHANGE_PASSWORD = var.iam_allow_users_to_change_password
- HARD_EXPIRY = var.iam_hard_expiry
- }
- }
- tags = merge(var.standard_tags, var.tags)
- }
- ## /Create the function
- ## Schedule the lambda function
- resource "aws_cloudwatch_event_rule" "password_policy_check" {
- name = "${var.resource_name_prefix}-password-policy-check"
- description = "Check if password policy is in desired state"
- schedule_expression = var.lambda_cron_schedule
- }
- resource "aws_cloudwatch_event_target" "password_policy_check" {
- rule = aws_cloudwatch_event_rule.password_policy_check.name
- target_id = "${var.resource_name_prefix}-password-policy-check"
- arn = aws_lambda_function.password_policy_check.arn
- }
- resource "aws_lambda_permission" "password_policy_check" {
- statement_id = "AllowExecutionFromCloudWatch"
- action = "lambda:InvokeFunction"
- function_name = aws_lambda_function.password_policy_check.function_name
- principal = "events.amazonaws.com"
- source_arn = aws_cloudwatch_event_rule.password_policy_check.arn
- }
- ## /Schedule the lambda function
- # /Password policy check function
|