Automatizando criação de IAM Users na AWS utilizando ShellScript e AWSCLI
Tags: iam, automatizar, aws, devops
Published: 2021-12-14 01:42:41

Ferramentas necessarias:
* [Gitbash](https://git-scm.com/downloads)
* [Conta na cloud AWS](https://aws.amazon.com/)
* [AWS CLI](https://aws.amazon.com/pt/cli/)

A [Amazon Web Services (AWS)](https://aws.amazon.com/) é a plataforma de nuvem escalável mais abrangente e amplamente adotada do mundo. A AWS oferece mais de 200 serviços totalmente caracterizados de data centers globalmente e muitas empresas tem migrado seus sistemas On Premise para a cloud da AWS e nesse post vamos abordar uma maneira de automatizar a criação de usuários já cadastrados no sistema On Premise para o sistema de cloud da AWS por meio do serviço IAM(AWS Identity and Access) da AWS definindo a qual tipo de serviços estes usuários possuem acesso. 

#Passos para automatizar a transferência de usuários cadastrados On Premise para a cloud da AWS

* Passo 1 - Criar um usuário IAM com acesso de admin e grupos de acesso no ambiente AWS para usuários específicos.
Através do console da AWS pesquise pelo serviço IAM da aws
![Serviço IAM - AWS](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xoifud349fi6k52wismz.png)

Dentro do serviço será necessário definirmos grupos de acesso para cada atividade exercida pelos usuários. Neste post vamos criar, como exemplo, um grupo para usuários com a permissão de administradores e outro onde os usuários só terão permissão para conhecer o ambiente da AWS não podendo realizar nenhum tipo de modificação nele.

Dentro do serviço IAM da AWS no menu a esquerda clique em User groups

![User Groups](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y4s1fqjwrwvpgbeiz91u.png)

Na próxima tela clique no botão create group e você ira entrar nesta tela
![Create group](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zvtul6061emtb9m3qacr.png)

Em User group name vamos definir o nome dos grupos e seus acessos concedidos aos usuários que pertencerem a este grupo, vamos definir CloudAdmin para usuários com permissão de administradores e Estagiarios para usuários que possuem permissão apenas para acessar o ambiente AWS sem poder realizar nenhuma atividade.

Na mesma tela, logo mais abaixo, em Attach permissions policies - Optional vamos definir a politica de acesso para cada grupo.
Para o grupo CloudAdmin vamos definir a politica AdministratorAccess, que permite aos usuários deste grupo ter acesso total ao ambiente AWS
![IPolici Administrador](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9x7cwb9sqcmfksrz8828.png)

Para o grupo Estagiario vamos definir a politica ReadOnlyAccess, que permite aos usuários deste grupo ter acesso apenas de leitura ao ambiente AWS
![Policy Estagiario](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e3ewqvma0rb7w63g3xga.png)

Feito isso crie o grupo de acesso clicando no botão create group no final da pagina
![create group](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ep1wo5q1cd6v7b6fv01w.png)

Agora vamos criar o usuário IAM aws-automation-1 que iremos utilizar para criar os outros usuários de maneira automatizada, dentro da pagina do recurso IAM clique em users
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ny4frkl5h37ao2haas3q.png)

Logo após cliquem no botão Add Users no canto superior direito e chegara na tela abaixo, preencha conforme a imagem e clique em next Permissions
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nvw9x90qpuzlqeihncr0.png)

Nosso usuário terá permissão de admin na conta AWS por isso selecione o grupo CloudAdmin que criamos antes e clique em next tags

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/euxk9adg7gqju61c0c4p.png)
Agora clique em next review e depois create user ate chegar na tela abaixo, será informado o ACCESS KEY ID e o SECRET ACCESS KEY de seu usuário, marque eles em algum lugar pois iremos utilizar mais a frente
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zjawousfe83qfj0tqml6.png)
 
* Passo 2 - Crie um diretório com o nome aws que ira armazenar os arquivos necessários para criar os usuários IAM no ambiente AWS.
Vamos criar um documento no notepad++ com o nome do usuários e qual tipo de acesso ele possui através dos grupos que criamos.
Obs: No campo grupo o nome tem que estar idêntico ao grupo que criamos dentro do console da AWS no serviço IAM. 
![dados usuario](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zuy6r6p04ch7tbb71dmc.png)
 

Após criarmos este documento e necessário que a salvamos dentro do diretório aws com o nome usuários no formato .csv.

* Passo 3 - Agora crie um arquivo .sh dentro do diretório aws com o nome `aws-iam-cria-usuario.sh` e cole o script abaixo
```
#!/bin/bash
#Proposito: Automatiza a criação de usuários na AWS
#Utilização: ./aws-iam-cria-usuario.sh <arquivo entrada .csv>
#Autor: Hernani Almeida

INPUT=$1
OLDIFS=$IFS
IFS=','

[ ! -f $INPUT ] && { echo "$INPUT arquivo nao encontrado"; exit 99;}

command -v dos2unix >/dev/null && continue || { echo "utilitario dos2unix nao encontrado. Insira utilitario valido"; exit 99;}

dos2unix $INPUT

while read -r usuario grupo senha || [ -n "$usuario" ]
do
    if [ "$usuario" != "usuarios" ]; then
        aws iam create-user --user-name $usuario
        aws iam create-login-profile --password-reset-required --user-name $usuario --password $senha
        aws iam add-user-to-group --group-name $grupo --user-name $usuario
    fi

done < $INPUT

IFS=$OLDIFS
```

* Passo 4 - Abra o diretório aws dentro do terminal do gitbash e rode o seguinte comando `aws configure` para configurar seu acesso ao AWS console passando o ACCESS KEY YD e o SECRET ACCESS ID do usuário aws-automation-1 que criamos antes , Região da AWS onde sua conta se enquadre e o formato de output.
![configurar conta aws](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yx2uq0mrtpkmc7bc5ddz.png)

Feito isso, verifique no gitbash se esta dentro do diretorio aws e rode o comando `./aws-iam-cria-usuario.sh usuarios.csv`

Dentro do gitbash podemos acompanhar os usuários IAM sendo criado, conforme imagem abaixo.

![usuarios IAM criados](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/54618a5ze6il23auf94m.png) 

Podemos confirmar os usuários criados no console da AWS em seus respectivos grupos conforme imagem abaixo

![login usuario](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7w80n33y5nft5msgcpp9.png)

Usuários criados podendo acessar o console da conta AWS e utiliza-lo conforme suas permissões, e na primeira vez que fizerem login será solicitado a alteração de senha conforme as imagens

![login usuarios](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8ifq2le28o9ia0qs07c6.png)

![login usuarios](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1cbs9guxt6um2voafpot.png)

![login usuarios](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sgftmbsubqc525sqk9tw.png)

Usuário logado
![usuario logado](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qar0llxr9hv9odgwpqvo.png)

Valew galera este e meu primeiro post aqui para a comunidade e espero compartilhar e aprender cada vez mais com vocês.

Para quem quiser será um prazer te-los no github, adicionem ai
Deixo aqui meus contatos:
[linkedin](https://www.linkedin.com/in/nanialmeida/)
[github](https://github.com/2020nani)