Como usar a permissão da AWS IAM Passrole

Como usar a permissão da AWS IAM Passrole
Na AWS, um papel do IAM é uma identidade da AWS como um usuário do IAM. O AWS IAM Service é um serviço muito complexo que, se não estiver configurado com sabedoria, pode levar a possíveis problemas de segurança. Eles estão anexados com políticas que decidem o que essa identidade tem permissão para fazer e não é permitido fazer. Não está anexado a uma única pessoa, mas pode ser assumido por quem exige. Em vez de credenciais de longo prazo (teclas de senha ou acesso) como um usuário do IAM, uma função do IAM possui credenciais de segurança temporárias. Quando um usuário, aplicativo ou serviço precisa de acesso aos recursos da AWS para os quais não possuem permissões, eles usam/assumem um papel específico para esse fim. Credenciais de segurança temporárias são então usadas para esta tarefa.

O que vamos cobrir?

Neste guia, veremos como usar a permissão "iam passrole". Como um exemplo específico, veremos como conectar uma instância do EC2 com o balde S3 usando a permissão do PassRole.

Termos e conceitos importantes

Função de serviço da AWS: É uma função assumida por um serviço para que possa executar as tarefas em nome do titular do usuário ou da conta.

Função de serviço da AWS para uma instância do EC2: É uma função assumida por um aplicativo em execução em uma instância do Amazon EC2 para executar as tarefas na conta de usuário que são permitidas por esta função.

Função vinculada ao serviço da AWS: É uma função que é predefinida e diretamente anexada a um serviço da AWS, como a função vinculada ao serviço RDS para lançar um DB RDS.

Usando a permissão PassRole para conectar uma instância EC2 com S3

Muitos serviços da AWS precisam de uma função para a configuração e essa função é passada/administrada a eles pelo usuário. Dessa forma, os serviços assumem/assumem a função e executam as tarefas em nome do usuário. Para a maioria dos serviços, a função precisa ser aprovada uma vez enquanto configura esse serviço. Um usuário requer permissões para passar um papel a um serviço da AWS. Isso é uma coisa boa do ponto de vista de segurança, pois os administradores podem controlar quais usuários podem passar uma função para um serviço. A permissão "PassRole" é concedida por um usuário ao seu usuário, função ou grupo de IAM para passar uma função para um serviço da AWS.

Para elaborar o conceito anterior, considere um caso quando um aplicativo em execução em uma instância do EC2 exige um acesso ao balde S3. Para isso, podemos anexar uma função de IAM com esta instância para que este aplicativo obtenha a permissão S3 definida na função. Este aplicativo precisará das credenciais temporárias para fins de autenticação e autorização. O EC2 recebe credenciais de segurança temporárias quando uma função se associa à instância executando nosso aplicativo. Essas credenciais são então disponibilizadas ao nosso aplicativo para acessar o S3.

Para conceder a um usuário do IAM a capacidade de passar uma função ao serviço EC2 no momento do lançamento de uma instância, precisamos de três coisas:

  1. Uma política de permissões do IAM para o papel que decide o escopo do papel.
  2. Uma política de confiança anexada ao papel que permite ao EC2 assumir a função e usar as permissões definidas dentro da função.
  3. Uma política de permissão do IAM para o usuário do IAM que lista as funções que ele pode passar.

Vamos fazer isso de uma maneira mais pragmática. Temos um usuário do IAM com uma permissão limitada. Em seguida, anexamos uma política embutida para lançar as instâncias e permissão do EC2 para passar um papel de IAM para um serviço. Em seguida, criamos um papel para o acesso S3; Vamos chamá -lo de "s3access". E anexar uma política de IAM a ele. Nesta função, permitimos apenas a leitura dos dados S3 usando a Política “AmazonS3ReadonlyAccess” gerenciada pela AWS.

Etapas para criar o papel

Passo 1. No console iam do administrador (root), clique em "função" e selecione "Criar função".

Passo 2. Na página "Select Trusted Entity", selecione "Serviço da AWS" em "Tipo de entidade confiável".

etapa 3. Sob o "caso de uso", selecione o botão de rádio correspondente ao "EC2" para os "casos de uso para outros serviços da AWS":

Passo 4. Na próxima página, atribua uma política "AmazonReadonlyAccess":

Etapa 5. Dê um nome ao seu papel ("S3Access" no nosso caso). Adicione uma descrição para esta função. A seguinte política de confiança é criada automaticamente com esta função:


"Versão": "2012-10-17",
"Declaração": [

"Efeito": "permitir",
"Ação": [
"STS: PUSPRESSÃO"
],
"Diretor":
"Serviço": [
"EC2.Amazonaws.com "
]


]

Etapa 6. Clique em "Criar função" para criar a função:

Política de IAM para Usuário

Esta política fornece ao usuário do IAM Permissões E EC2 completas e permissão para associar a função "S3Access" à instância.

Passo 1. No console do IAM, clique em políticas e depois em "Criar políticas".

Passo 2. Na nova página, selecione a guia JSON e cole o seguinte código:


"Versão": "2012-10-17",
"Declaração": [
"Efeito": "permitir",
"Ação": ["EC2:*"],
"Recurso":"*"
,

"Efeito": "permitir",
"Ação": "iam: passrole",
"Recurso": "arn: aws: iam :: account_id: função/s3access"
]

Substitua o texto em negrito “Conta_id”Com o ID da conta de usuário.

etapa 3. (Opcional) Dê tags para sua política.

Passo 4. Coloque um nome adequado para a política (“iam-user-policy” no nosso caso) e clique no botão “Criar política” e anexe esta política ao seu usuário do IAM.

Anexar a função "S3Access" à instância do EC2

Agora, vamos anexar este papel à nossa instância. Selecione sua instância no console do EC2 e vá para “Ação> Segurança> Modificar o papel do IAM”. Na nova página, selecione a função “S3ACCESS” no menu suspenso e salve -o.

Verificando a configuração

Agora, verificaremos se nossa instância do EC2 é capaz de acessar nosso balde S3 criado pelo administrador. Faça login na instância do EC2 e instale o aplicativo da AWS CLI. Agora, execute o seguinte comando nesta instância do EC2:

$ aws s3 ls

Novamente, execute o comando anterior da conta do IAM configurada em sua máquina local. Você notará que o comando é executado com sucesso na instância do EC2, mas recebemos um erro de "acesso negado" na máquina local:

O erro é óbvio porque apenas concedemos a permissão de acesso S3 para a instância do EC2, mas não para o usuário do IAM e para qualquer outro serviço da AWS. Outra coisa importante a ser observada é que não tornamos o balde e seus objetos acessíveis publicamente.

Conclusão

Neste guia, demonstramos como usar a permissão do passrole na AWS. Conseguimos conectar o EC2 ao S3 com sucesso. É um conceito muito importante se você se preocupa em conceder os menos privilégios aos seus usuários do IAM.