All Projects → mineiros-io → terraform-aws-iam-user

mineiros-io / terraform-aws-iam-user

Licence: Apache-2.0 license
A Terraform module to create and manage Identity and Access Management (IAM) Users on Amazon Web Services (AWS). https://aws.amazon.com/iam

Programming Languages

HCL
1544 projects
Makefile
30231 projects
go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to terraform-aws-iam-user

terraform-aws-cognito-user-pool
A Terraform module to create and manage Cognito User Pools (Simple and Secure User Sign-Up, Sign-In, and Access Control) on Amazon Web Services (AWS). https://aws.amazon.com/cognito
Stars: ✭ 46 (+170.59%)
Mutual labels:  iac, amazon-web-services, terraform-modules, terraform-aws, mineiros
terraform-aws-route53
A Terraform module to create a Route53 Domain Name System (DNS) on Amazon Web Services (AWS). https://aws.amazon.com/route53/
Stars: ✭ 39 (+129.41%)
Mutual labels:  iac, amazon-web-services, terraform-modules, terraform-aws, mineiros
terraform-aws-s3-bucket
A Terraform module to create a Simple Storage Service (S3) Bucket on Amazon Web Services (AWS). https://aws.amazon.com/s3/
Stars: ✭ 47 (+176.47%)
Mutual labels:  iac, amazon-web-services, terraform-modules, terraform-aws, mineiros
terraform-aws-lambda-function
A Terraform module for deploying and managing Lambda functions on Amazon Web Services (AWS). https://aws.amazon.com/lambda/
Stars: ✭ 37 (+117.65%)
Mutual labels:  iac, amazon-web-services, terraform-modules, terraform-aws, mineiros
terraform-github-organization
A Terraform module to manage GitHub Organizations. https://github.com/
Stars: ✭ 53 (+211.76%)
Mutual labels:  iac, terraform-modules, mineiros
terraform-modules
Terraform Modules by Peak
Stars: ✭ 16 (-5.88%)
Mutual labels:  iam, iac, terraform-modules
terraform-aws-account
🌳 A sustainable Terraform Package which creates Account & IAM resources on AWS
Stars: ✭ 18 (+5.88%)
Mutual labels:  iac, terraform-modules, terraform-aws
terraform-aws-ecs-web-service
A Terraform module to create an Amazon Web Services (AWS) EC2 Container Service (ECS) service associated with an Application Load Balancer (ALB).
Stars: ✭ 26 (+52.94%)
Mutual labels:  amazon-web-services, terraform-modules
terraform-aws-nat-instance
Terraform module to provision a NAT Instance using an Auto Scaling Group and Spot Instance from $1/month
Stars: ✭ 126 (+641.18%)
Mutual labels:  terraform-modules, terraform-aws
terraform-aws-iam-assumed-roles
Terraform Module for Assumed Roles on AWS with IAM Groups Requiring MFA
Stars: ✭ 33 (+94.12%)
Mutual labels:  iam, terraform-modules
Terraform Aws Cross Account Role
A Terraform module to create an IAM Role for Cross Account delegation.
Stars: ✭ 30 (+76.47%)
Mutual labels:  iam, amazon-web-services
nifi
Deploy a secured, clustered, auto-scaling NiFi service in AWS.
Stars: ✭ 37 (+117.65%)
Mutual labels:  iam, iac
terraform-modules
Reusable Terraform modules
Stars: ✭ 12 (-29.41%)
Mutual labels:  iac, terraform-modules
awstools
No description or website provided.
Stars: ✭ 22 (+29.41%)
Mutual labels:  iam, amazon-web-services
terraform-aws-cloudtrail-s3-bucket
S3 bucket with built in IAM policy to allow CloudTrail logs
Stars: ✭ 38 (+123.53%)
Mutual labels:  iam, terraform-modules
Complete Aws Iam Reference
Complete AWS IAM Reference
Stars: ✭ 236 (+1288.24%)
Mutual labels:  iam, amazon-web-services
terraform-aws-iam-system-user
Terraform Module to Provision a Basic IAM System User Suitable for CI/CD Systems (E.g. TravisCI, CircleCI)
Stars: ✭ 71 (+317.65%)
Mutual labels:  iam, terraform-modules
terraform-aws-vpc
A Terraform module to create an Amazon Web Services (AWS) Virtual Private Cloud (VPC).
Stars: ✭ 24 (+41.18%)
Mutual labels:  amazon-web-services, terraform-modules
terraform-oci-vcn
A reusable and extensible Terraform module that provisions a VCN on Oracle Cloud Infrastructure
Stars: ✭ 22 (+29.41%)
Mutual labels:  iac, terraform-modules
terraform-aws-redis-elasticache
A Terraform module to create an Amazon Web Services (AWS) Redis ElastiCache cluster.
Stars: ✭ 33 (+94.12%)
Mutual labels:  amazon-web-services, terraform-modules

Build Status GitHub tag (latest SemVer) Terraform Version AWS Provider Version Join Slack

terraform-aws-iam-user

A Terraform base module for deploying and managing IAM Users on Amazon Web Services.

This module supports Terraform v1.x, v0.15, v0.14, v0.13 as well as v0.12.20 and above and is compatible with the terraform AWS provider v3 as well as v2.0 and above.

Module Features

In contrast to the plain aws_iam_user resource, this module has extended features allowing you to add custom & managed IAM and/or inline policies and adding user to groups. While all security features can be disabled as needed, best practices are pre-configured.

  • Standard Module Features:

    Add IAM users

  • Extended Module Features: Attach custom & managed IAM policies, attach an inline policy, add users to a set of groups

Getting Started

Most basic usage showing how to add three users and assigning two policies:

module "iam-users" {
  source  = "mineiros-io/iam-user/aws"
  version = "~> 0.5.0"

  names = [
    "user.one",
    "user.two",
    "user.three",
  ]

  policy_arns = [
    "arn:aws:iam::aws:policy/ReadOnlyAccess",
    "arn:aws:iam::aws:policy/job-function/Billing",
  ]
}

Module Argument Reference

See variables.tf and [examples] for details and use-cases.

Module Configuration

  • module_enabled: (Optional bool)

    Specifies whether resources in the module will be created.

    Default is true.

  • module_depends_on: (Optional set(any))

    A set of dependencies. Any object can be assigned to this list to define a hidden external dependency.

Top-level Arguments

Main Resource Configuration

  • names: (Required set(string))

    A set of names of IAM users that will be created. Forces new resource.

  • groups: (Optional set(string))

    A set of IAM groups to add the user(s) to.

    Default is [].

  • force_destroy: (Optional bool)

    When destroying this user, destroy even if it has non-Terraform-managed IAM access keys, login profile or MFA devices. Without force_destroy a user with non-Terraform-managed access keys and login profile will fail to be destroyed.

    Default is false.

  • path: (Optional string)

    The path in which to create the user(s). See IAM Identifiers for more information.

    Default is "/".

  • permissions_boundary: (Optional string)

    The ARN of the policy that is used to set the permissions boundary for the user. Default is not to set any boundary.

  • tags: (Optional map(string))

    Key-value map of tags for the IAM user.

    Default is {}.

Extended Resource configuration

Custom & Managed Policies
  • policy_arns: (Optional list(string))

    List of custom or managed IAM policy ARNs to attach to the user.

    Default is [].

Inline Policy
  • policy_statements: (Optional list(statement))

    List of IAM policy statements to attach to the user as an inline policy.

    Default is [].

    Example:

    policy_statements = [
      {
        sid = "FullS3Access"
    
        effect = "Allow"
    
        actions     = ["s3:*"]
        not_actions = []
    
        resources     = ["*"]
        not_resources = []
    
        conditions = [
          {
            test     = "Bool"
            variable = "aws:MultiFactorAuthPresent"
            values   = ["true"]
          }
        ]
      }
    ]

Module Outputs

The following attributes are exported by the module:

  • users: (list(user))

    The aws_iam_user object(s).

  • user_policy: (object(user_policy))

    The aws_iam_user_policy object(s).

  • user_policy_attachment: (object(user_policy_attachment))

    The aws_iam_user_policy_attachment object(s).

  • names: (set(string))

    The user names.

  • path: (string)

    Path in which to create the user.

  • permissions_boundary: (string)

    The ARN of the policy that is used to set the permissions boundary for the user.

  • force_destroy: (bool)

    When destroying this user, destroy even if it has non-Terraform-managed IAM access keys, login profile or MFA devices.

  • tags: (map(string))

    Key-value map of tags for the IAM user.

  • policy_statements: (list(policy_statement))

    List of IAM policy statements to attach to the User as an inline policy.

  • policy_arns: (set(string))

    Set of IAM custom or managed policies ARNs attached to the User.

  • groups: (list(string))

    List of IAM groups the users were added to.

External Documentation

AWS Documentation IAM

Terraform AWS Provider Documentation

Module Versioning

This Module follows the principles of Semantic Versioning (SemVer).

Given a version number MAJOR.MINOR.PATCH, we increment the:

  1. MAJOR version when we make incompatible changes,
  2. MINOR version when we add functionality in a backwards compatible manner, and
  3. PATCH version when we make backwards compatible bug fixes.

Backwards compatibility in 0.0.z and 0.y.z version

  • Backwards compatibility in versions 0.0.z is not guaranteed when z is increased. (Initial development)
  • Backwards compatibility in versions 0.y.z is not guaranteed when y is increased. (Pre-release)

About Mineiros

Mineiros is a DevOps as a Service company based in Berlin, Germany. We offer commercial support for all of our projects and encourage you to reach out if you have any questions or need help. Feel free to send us an email at [email protected] or join our Community Slack channel.

We can also help you with:

  • Terraform modules for all types of infrastructure such as VPCs, Docker clusters, databases, logging and monitoring, CI, etc.
  • Consulting & training on AWS, Terraform and DevOps

Reporting Issues

We use GitHub Issues to track community reported issues and missing features.

Contributing

Contributions are always encouraged and welcome! For the process of accepting changes, we use Pull Requests. If you'd like more information, please see our Contribution Guidelines.

Makefile Targets

This repository comes with a handy Makefile. Run make help to see details on each available target.

License

license

This module is licensed under the Apache License Version 2.0, January 2004. Please see LICENSE for full details.

Copyright © 2020-2022 Mineiros GmbH

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].