Como criar a política da AWS IAM usando o Terraform

Como criar a política da AWS IAM usando o Terraform
Na AWS, o serviço IAM é usado para controlar o acesso a serviços e recursos da AWS. Ele precisa de um conhecimento muito profundo para configurar as políticas do IAM para garantir privilégios mínimos para sistemas e recursos da AWS.

Construído para fins de infraestrutura como solução de código (IAC), a Terraform suporta vários provedores de serviços em nuvem. É uma ferramenta de código aberto desenvolvido por Hashicorp. Usando o IAC, podemos gerenciar a configuração de infraestrutura com arquivos de configuração. Por exemplo, podemos implantar, atualizar e gerenciar nossa infraestrutura, definindo os recursos necessários.

Neste guia, veremos como podemos criar um usuário da AWS e anexar uma política usando Terraform. Vamos começar com a instalação do Terraform no Ubuntu 20.04.

Instalando o Terraform

Hashicorp fornece o pacote oficial do Terraform para Ubuntu/Debian, Centos/Rhel, Fedora e Amazon Linux. Além disso, também mantém o binário pré-compilado e também pode ser compilado da fonte. Para este guia, estamos usando o pacote padrão fornecido pelo Repositório do Pacote Debian para instalar o Terraform no Ubuntu 20.04.

Passo 1. Instale os pacotes GNUPG, Software-Properties-Common e Curl para verificar a assinatura GPG da Hashicorp e instalar o repositório necessário:

$ sudo apt-get update && sudo apt-get install -y gnepg software-properties-common curl

Passo 2. Adicione a tecla Hashicorp GPG usando o comando:

$ CURL -FSSL https: // apt.lançamentos.Hashicorp.com/gpg | Sudo Apt-Key Add -

etapa 3. Continue adicionando o repositório necessário.

$ sudo apt-add-repository "deb [arch = amd64] https: // apt.lançamentos.Hashicorp.com $ (lsb_release -cs) main "

Passo 4. Execute o comando de atualização para adicionar o repositório e instalar o Terraform.

$ sudo apt-get update && sudo apt-get install Terraform

Etapa 5. Verifique se o Terraform está instalado executando o comando:

$ Terraform -Version

Nosso Terraform está instalado em nossa máquina local, para que possamos continuar nossa tarefa em trabalhar com a AWS. Como mencionado anteriormente, o Terraform usa vários arquivos de configuração para o fornecimento de recursos. Cada um desses arquivos deve residir em sua respectiva pasta/diretório de trabalho. Vamos criar um diretório para esse fim.

Faça uma pasta para conter seus arquivos de configuração e altere o diretório para esta pasta:

$ mkdir linuxhint-terraform && CD Linuxhint-Terraform

1. Criando usuário do IAM usando o Terraform

Temos apenas um usuário do IAM agora:

Agora vamos fazer um 'user_create.tf'Arquivo que será usado para criar nosso usuário' Demouser ':

$ nano user_create.tf

Agora coloque a seguinte configuração dentro dele:

Terraform
requerir_providers
aws =
fonte = "Hashicorp/AWS"
versão = "~> 3.27 "


requerir_version = "> = 0.14.9 "

Provedor "AWS"
região = "US-leste-1"
access_key = "your_access_key_for_current_user"
secret_key = "your_secret_key_for_current_user"

Recurso "AWS_IAM_USER" "new_user"
nome = "Demouser"

Recurso "AWS_IAM_ACCESS_KEY" "ACCK"
Usuário = AWS_IAM_USER.novo usuário.nome

saída "secret_key"
Valor = AWS_IAM_ACCESS_KEY.Acck.segredo
sensível = verdadeiro

saída "access_key"
Valor = AWS_IAM_ACCESS_KEY.Acck.eu ia

Criando uma política e anexando -a ao usuário do IAM usando o Terraform

Criaremos uma política de listar S3 todas. Agora anexe o arquivo acima com este código:

Recurso "AWS_IAM_USER_POLICY" "IAM"
name = "teste"
Usuário = AWS_IAM_USER.novo usuário.nome
Política = <
"Versão": "2012-10-17",
"Declaração": [

"Efeito": "permitir",
"Ação": "S3: listallmybuckets",
"Recurso": "*"

]

Eof

Este arquivo contém toda a configuração a ser implantada usando o Terraform. Basta substituir o texto em negrito por seus próprios detalhes de configuração. Vamos explorar cada uma das seções usadas no arquivo acima:

  • Terraform - ele define as configurações de Terraform. O 'Provedores necessários' Define o provedor para usar com o Terraform e a 'fonte' é um parâmetro opcional para o nome do host, um espaço de nome e o tipo de provedor. No código acima, a fonte é definida como 'Hashicorp/AWS ' que, como todos os provedores. O provedor acima aponta para 'registro.Terraform.io/hashicorp/aws '.

O atributo da versão define a versão do provedor que você deseja usar.

  • Provedor - isso realmente especifica com qual plataforma em nuvem você vai interagir (AWS, Azure, GCP etc.). Isso também controla a região que você está implantando seus recursos e as credenciais de segurança para o seu usuário.
  • Recurso - ele compreende componentes que constroem uma infraestrutura como bancos de dados, armazenamento, rede etc. A primeira corda aqui “Aws_instance”, define o tipo de recurso e o segundo define um nome personalizado que você deseja usar. Esses dois se combinam para formar um ID exclusivo para um recurso, para e.g. aqui 'AWS_IAM_ACCESS_KEY.Acck.segredo' é um identificador de recurso (id). Da mesma maneira, também podemos incluir tamanhos de máquinas, nomes de imagens de disco ou IDs VPC.

Para validar ou verificar sua configuração, use o comando:

$ Terraform Validar

Inicializando o diretório Terraform

Para baixar e instalar o provedor que definimos em nossa configuração e outros arquivos, precisamos inicializar o diretório que contém este arquivo:

$ Terraform init

Como você pode ver na imagem acima, nosso comando init é bem -sucedido e existem alguns novos arquivos também criados aqui. Há também mais um comando: 'Plano Terraform'. Embora não seja obrigatório usá -lo, ele tem alguns benefícios. Por exemplo.:

1. Você pode ver as ações que o Terraform vai executar.

2. Ele pode apontar erros sintáticos em seus arquivos de configuração.

A Terraform não menciona esse comando em sua documentação porque, quando você executa o comando 'Terraform Apply', o mesmo plano será apresentado novamente.

Construindo a infraestrutura

Para construir nossa infraestrutura, use o comando:

$ Terraform se aplica

Isso primeiro produzirá o plano de execução que descreve as tarefas que a Terraform executará para trazer o estado de sua infraestrutura para a definida em seu arquivo de configuração. Depois disso, vai fazer uma pausa e pedir que você confirme o plano para continuar. Se tudo estiver definido como você desejou, digite 'sim' para continuar:

Se você estiver pronto para continuar, digite 'sim'. Observe que a conclusão do processo leva algum tempo. Quando esse processo estiver concluído, a mensagem abaixo aparecerá:

Para ver suas credenciais de segurança, abra o 'Terraform.arquivo tfstate 'e procure o atributo de valor no "secret_key" e "access_key":

No seu console de gerenciamento da AWS IAM, o usuário do IAM será listado lá:

Para verificar qual política está anexada a este usuário do IAM, clique no nome do usuário do IAM. Na captura de tela abaixo, podemos ver que ou 'Demouser' tem uma política de 'teste' anexada a ela com a mesma permissão que anexamos anteriormente no arquivo Terraform.

Verificando a política

Para ver se nossa política anexada está funcionando como esperado, conecte -se ao usuário do IAM e execute o comando:

$ aws s3 ls

Se tudo tiver sido configurado corretamente, você verá a lista de seus baldes aqui:

Destruindo os recursos

Quando você terminar e não precisa mais dos recursos da AWS que você criou, você pode simplesmente excluí -los usando o comando:

$ Terraform Destruir

Conclusão

Neste guia, aprendemos sobre a anexação de uma política de IAM a um usuário da AWS usando o Terraform. Você também pode tentar anexar políticas diferentes a um usuário ou função da mesma maneira.