Autorizando acesso a serviços com IAM

Implantando Aplicações na AWS

Dunieski Otano

Amazon Web Services Solutions Architect

A chave no commit

  • Uma chave de acesso de longa duração é enviada ao repositório
  • Um bot encontra e estoura a fatura
  • Funções e mínimo privilégio evitam isso

Uma chave de acesso da AWS vazada por engano em um commit, sinalizada como risco de segurança

Implantando Aplicações na AWS

Principais do IAM: usuários, funções e políticas

Diagrama em três colunas do IAM: Principal (usuário, serviço ou função) à esquerda, Documento de política com ações Allow/Deny ao centro, Função do IAM com credenciais temporárias e de curta duração à direita

  • Principal: quem faz a solicitação
  • Policy: um documento JSON que concede permissões
  • Role: um conjunto de permissões que uma entidade pode assumir
  • Funções são assumidas; usuários têm credenciais duradouras
Implantando Aplicações na AWS

Credenciais programáticas do jeito certo

  • Lambda: uma função de execução concede permissões
  • EC2: um perfil de instância entrega credenciais da função
  • ECS: funções por tarefa limitam permissões por tarefa
  • Sem chaves de acesso duradouras em código ou config

Três serviços de computação AWS usando funções sem chaves duradouras: Lambda com função de execução, EC2 com perfil de instância e ECS com função de tarefa, cada um com rotação automática de credenciais

Implantando Aplicações na AWS

AssumeRole e STS

  • STS AssumeRole: obtenha credenciais temporárias para uma função
  • Usado para acesso entre contas
  • A política de confiança controla quem pode assumir a função
  • Credenciais são de curta duração e expiram automaticamente

Fluxo cross-account do STS AssumeRole: chamador na Conta A solicita credenciais ao STS; política de confiança na função da Conta B permite; STS retorna credenciais de curta duração que expiram automaticamente

Implantando Aplicações na AWS

Mínimo privilégio e estrutura da política

Uma declaração de política tem três partes obrigatórias (Effect, Action e Resource) mais uma Condition opcional:

{
  "Effect": "Allow",
  "Action": "dynamodb:PutItem",
  "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/Orders",
  "Condition": {
    "Bool": { "aws:SecureTransport": "true" }
  }
}
Implantando Aplicações na AWS

Onde o IAM termina e seu código começa


IAM: a camada de serviço

  • Autoriza chamadas da AWS API: esta função pode chamar esta operação?
  • Não impõe regras por locatário nem por registro

Seu código: a camada de dados

  • Verifica o usuário autenticado em relação aos dados solicitados
  • Use ambos: o IAM protege o serviço; seu código, os dados
Implantando Aplicações na AWS

Uma função de execução com mínimo privilégio na prática

Função de execução mínima do Lambda: única permissão DynamoDB PutItem concedida apenas a um ARN de tabela, sem curingas em ação ou recurso

  • Um Lambda precisa escrever em uma tabela do DynamoDB
  • Conceda dynamodb:PutItem apenas no ARN dessa tabela
  • Sem curingas em ação ou recurso
  • Só adicione mais se uma chamada real for negada
Implantando Aplicações na AWS

Vamos praticar!

Implantando Aplicações na AWS

Preparing Video For Download...