Design do banner por Freepik

Criação de Usuário do IAM na AWS para Utilização do CodeCommit — Passo-a-Passo

Miller Horvath
BRLink
Published in
10 min readOct 18, 2023

--

Neste post, vamos apresentar o passo-a-passo de como criar e configurar um Usuário do IAM no ambiente AWS, utilizado para interagir com o repositório do CodeCommit diretamente, assim como para replicação de código de repositórios externos (como Bitbucket e Github) para o AWS CodeCommit.

Autores

Criação da IAM Policy

O primeiro passo é definir as permissões que o usuário terá para interagir com os recursos dentro do ambiente AWS. Poderíamos utilizar a Política do IAM gerenciada pela AWS, chamada AWSCodeCommitPowerUser. Contudo, essa política é muito abrangente, fornecendo muito mais permissões do que precisamos e para qualquer repositório criado no ambiente AWS. Portanto, use-a com cautela.

No nosso cenário, vamos criar uma política customizada para controlar melhor que tipo de interação poderá ser feita e em quais repositórios.

Console AWS — Nova IAM Policy

Para criar uma Política do IAM, vá para a página do IAM na console AWS, em seguida:

  1. Navegue no painel lateral e clique na opção Políticas.
  2. Em seguida, clique no botão Criar Política.

Especificação de Permissões

Nesta seção, vamos especificar as permissões da nova Política do IAM que está sendo criada. Para isso:

  1. Selecione a aba JSON.
  2. Aqui, vamos definir as especificações das permissões do usuário ao ambiente. Apresentaremos na sequência alguns documentos JSON de referência, sendo necessário apenas substituir os seguintes elementos:
    <AWS Region> → utilizar a mesma região na qual o repositório do CodeCommit foi criado.
    <AWS Account ID> → utilizar o ID da conta AWS na qual está trabalhando (representada por 12 dígitos numéricos)
    <Repository Name> → utilizar o nome dos repositório do CodeCommit que deseja liberar o acesso. Para liberar acesso à múltiplos repositórios, basta adicionar mais itens na lista de Resource.
    <Repository Name Prefix/Suffix> → Outra alternativa de liberar o acesso à múltiplos repositórios é através da utilização de wildcards. Por exemplo, no campo Resource, você pode especificar um conjunto de repositórios a partir de algum padrão de prefixo e/ou sufixo no nome dos mesmos, utilizando o wildcard *.
  3. Clique no botão Próximo: Tags para seguir para a próxima etapa.

Também é possível especificar as permissões através do Editor visual, que é basicamente uma interface para auxiliar na construção do JSON.

Seguem 4 exemplos de variações de documentos JSON para contextos diferentes:

  • Liberando acesso total à um repositório específico:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CodeCommitPermissions",
"Effect": "Allow",
"Action": [
"codecommit:*"
],
"Resource": [
"arn:aws:codecommit:<AWS Region>:<AWS Account ID>:<Repository Name>"
]
}
]
}
  • Liberando acesso apenas de GitPush para um repositório específico. No cenário de replicação de código de ferramentas externas para o CodeCommit, apenas o GitPush é necessário.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CodeCommitPermissions",
"Effect": "Allow",
"Action": [
"codecommit:GitPush"
],
"Resource": [
"arn:aws:codecommit:<AWS Region>:<AWS Account ID>:<Repository Name>"
]
}
]
}
  • Liberando acesso total à um conjunto de repositórios com um sufixo e prefixo específico:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CodeCommitPermissions",
"Effect": "Allow",
"Action": [
"codecommit:*"
],
"Resource": [
"arn:aws:codecommit:<AWS Region>:<AWS Account ID>:<Repository Name Prefix>*<Repository Name Suffix>"
]
}
]
}
  • Liberando acessos específicos para um conjunto fechado de repositórios:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CodeCommitPermissions",
"Effect": "Allow",
"Action": [
"codecommit:GitPull",
"codecommit:ListBranches"
],
"Resource": [
"arn:aws:codecommit:<AWS Region>:<AWS Account ID>:<Repository Name 1>",
"arn:aws:codecommit:<AWS Region>:<AWS Account ID>:<Repository Name 2>"
]
}
]
}

Para mais detalhes, confira a documentação da AWS sobre as ações referentes ao AWS CodeCommit:

Atribuição de Tags (opcional)

Esta é uma etapa opcional, onde pode-se atribuir Tags à Política do IAM para auxiliar na organização dos recursos AWS. Para isso:

  1. Clique no botão Adicionar tag. Irá aparecer dois campos logo acima do botão.
  2. Preencha os campos de Chave e Valor (opcional) referentes a tag desejada. Neste exemplo, estamos atribuindo uma tag referente ao projeto na qual a policy será utilizada, com a chave BRLinkProject e valor SimpleApplication.
  3. Clique no botão Próximo: Revisar para seguir para a próxima etapa.

Revisão e Confirmação de Criação da Política do IAM

Por fim:

  1. Defina o nome da Política do IAM que está sendo criada.
  2. Defina a descrição da Política do IAM. A descrição é opcional, mas é altamente recomendável que seja definida ao menos uma descrição simples da utilização da Política, por questões de organização e gerenciamento.
  3. Revise as configurações da Política e clique no botão Criar política para confirmar.

Criação do IAM User

Console AWS — Novo IAM User

Tendo criado a política, vamos agora criar o Usuário do IAM. Na página do IAM no console AWS:

  1. Navegue no painel lateral e clique na opção Usuários.
  2. Clique no botão Adicionar usuário.

Detalhamento do Usuário

A seguir:

  1. Defina o nome do usuário que será criado.
    É recomendável utilizar nomes que ajudem a identificar qual é a utilidade no seu ambiente e quem é a pessoa (ou qual é a aplicação) que fará uso deste usuário.
  2. No tipo de acesso, marque a checkbox de acesso programático.
  3. Clique no botão Próximo: Permissões para seguir para a próxima etapa.

O tipo de aceso só foi definido por se tratar de um campo obrigatório para a criação de Usuários do IAM. Entretanto, não vamos utilizar este acesso, pois a comunicação com o repositório ocorrerá via SSH. Por isso, deletaremos as chaves de acesso programático logo após a criação do usuário (será descrito nas etapas posteriores)

Definição de Permissões do Usuário

Para definir as permissões:

  1. Selecione a opção Anexar políticas existentes de forma direta.
  2. Busque pela Policy criada anteriormente na lista e marque a sua respectiva checkbox.
  3. Clique em Próximo: Tags para seguir para a próxima etapa.

Atribuição de Tags (opcional)

De forma semelhante às Políticas do IAM, também podemos atribuir tags aos usuários para auxiliar na organização e gerenciamento dos mesmos. Para adicionar tags:

  1. Preencha os campos de Chave e Valor (opcional) referentes a tag desejada. Neste exemplo, estamos atribuindo uma tag referente ao projeto na qual a policy será utilizada, com a chave BRLinkProject e valor SimpleApplication.
  2. Clique em Próximo: Revisar para seguir para a próxima etapa.

Revisão e Confirmação de Criação do IAM User

Por fim, revise as informações e clique no botão Criar usuário para confirmar a criação da usuário.

Configurações de Credenciais de Segurança do Usuário

Console AWS — Busca por IAM User

Com o usuário criado, precisamos ajustar as credenciais de acesso do mesmo para permitir a interação do usuário única e exclusivamente com o repositório do CodeCommit através de SSH. Para isso:

  1. Navegue no painel lateral e clique na opção Usuários.
  2. Use o campo de busca para encontrar o usuário criado nas etapas anteriores.
  3. Clique no link do nome do usuário para ser direcionado para a sua tela de configurações.

Exclusão de Access Keys

Neste etapa, vamos inativar e depois deletar as Chaves de Acesso que foram criadas automaticamente para o usuário recém criado. Vamos realizar esta exclusão pois este usuário não deve ser capaz de interagir programaticamente com o ambiente AWS em questão. Para isso, execute as passos descritos a seguir:

Aba de Credenciais de Segurança

  1. Estando na tela de configurações do usuário, clique na aba Credenciais de segurança.
  2. Na área de Chaves de Acesso clique na opção Tornar inativa para ser redirecionado para a tela de confirmação de desativação da mesma (demonstrada na sequência).
  3. Após a desativação, clique no botão em formato de x (xis) para ser redirecionado para a tela de confirmação de exclusão das Chaves de Acesso (demonstrada na sequência).

Tela de Confirmação de Desativação de Chaves de Acesso

  1. Após conferir as informações apresentadas, clique no botão Desativar para confirmar a desativação das Chaves de Acesso.

Tela de Confirmação de Exclusão de Chaves de Acesso

  1. Após conferir as informações apresentadas, digite o código das Chaves de Acesso no campo indicado para desbloquear a exclusão.
  2. Após digitar o código corretamente, clique no botão Excluir para confirmar a exclusão das Chaves de Acesso.

Criando Chaves SSH

Nesse exemplo as chaves SSH foram gerada pelo Bitbucket. Entretanto, você pode também criar o seu próprio par de chaves SSH em diferentes sistemas operacionais com o seguinte comando (Shell):

ssh-keygen -t rsa -b 4096 -C "your@email.com"

Aqui, estamos utilizando o algoritmo RSA para criptografia (-t rsa) com um tamanho de chave de 4096 bits (-b 4096). Se for utilizar as chaves para configurar a comunicação do seu ambiente local com o repositório, pode utilizar o parâmetro -C substituindo o "your@email.com” pelo email sua sua conta na plataforma de versionamento utilizada. No caso do AWS CodeCommit, não há um e-mail vinculado ao usuário do repositório, por isso, pode deixar a informação de email vazia (-C "").

Segue um print exemplificando a criação do par de chaves em um ambiente WSL Ubuntu e uma explicação dos comandos executados:

  • Primeiramente, foi criada uma pasta no home usuário no sistema para armazenar essas chaves de exemplo. Neste caso, chamada ssh_example.
  • Ao executar o comando ssh-keygen, opcionalmente você pode customizar o caminho no qual as chaves serão geradas (que por padrão são criadas no caminho ~/.ssh/ com o nome id_rsa). Neste exemplo, as chaves foram criadas na pasta /home/mhorvath/ssh_example/ com o nome example_rsa.
  • Em seguida, o fluxo solicita que seja criada uma passphrase, que serve para proteger a chave SSH privada para que, mesmo que alguém tenha acesso à chave SSH privada de forma indevida, essa pessoa não consiga utilizar a mesma sem a passphrase.
    — Caso você tenha a intenção de utilizar as chaves criadas para interagir com o AWS CodeCommit diretamente via SSH, é recomendado que você utilize sim uma passphrase.
    — Entretanto, para o fluxo de replicar código de repositórios de outras plataformas (como o Github) para o AWS CodeCommit, normalmente o fluxo automatizado dessas plataformas não é capaz de utilizar a chave SSH privada com passphrase. Neste caso, deverá manter o passphrase em branco.
  • Para verificar os arquivos criados, foi executado o comando ls -la para a pasta criada, e dois arquivos foram gerados, o example_rsa e o example_rsa.pub, que são a chave SSH privada e pública, respectivamente.
  • Por fim, foi utilizado o comando cat para exibir a chave pública gerada para fins de ilustração.

A chave privada é utilizada no local de origem do código (seja no seu ambiente local de desenvolvimento, seja na plataforma de origem da replicação do código) e a chave pública é utilizada no destino, para que apenas quem tiver acesso à chave privada seja capaz de fazer alterações no destino.

No geral, chaves SSH são utilizadas como credenciais de acesso para sistemas e servidores. Tenha sempre cuidado redobrado com as suas chaves, pois expor esse tipo de informação de forma pública pode ter consequências severas, como exposição de informações sensíveis, modificação e acesso indevido aos sistemas, etc.

As chaves chaves geradas nesse exemplo foram excluídas e não estão sendo utilizadas. (Obviamente 😬)

Upload de Chave Pública SSH

Para finalizar a configuração de permissões do usuário, precisamos fazer o upload da chave pública SSH.

Console AWS — Iniciar Processo de Upload

Para iniciar o processo de upload:

  1. Estando na tela de configurações do usuário, ainda na aba Credenciais de segurança, clique no botão Fazer upload da chave pública SSH para ser redirecionado para a tela de upload.

Colar Chave Pública SSH

  1. Copie a sua chave pública SSH e cole no campo de texto indicado.
  2. Clique no botão Fazer upload da chave pública SSH para confirmar o upload.

ID da Chave do SSH

Após a conclusão do upload da chave pública, será gerado um ID desta chave para este usuário.

  1. Guarde este ID, pois ele será utilizado como User na configuração do SSH no ambiente de origem que irá interagir com o repositório no AWS CodeCommit.

Conclusão

Pronto, agora está configurado o seu acesso à AWS via SSH para que possa interagir diretamente com o seu repositório do CodeCommit ou integrar o seu repositório com outras ferramentas. Um exemplo de utilização deste acesso é a integração do CodeCommit com outros serviços de versionamento de código (como o Bitbucket e o GitHub), como mostrado no artigo a seguir:

--

--

Miller Horvath
BRLink
Editor for

Data Science Chapter Lead at BRLink; M.S. in Computer Science at Centro Universitário FEI; AWS builder; and researcher in ML.