Prevenção do problema do confused deputy entre serviços em AWS OpsWorks CM - AWS OpsWorks

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Prevenção do problema do confused deputy entre serviços em AWS OpsWorks CM

O problema de "confused deputy" é uma questão de segurança em que uma entidade que não tem permissão para executar uma ação pode coagir uma entidade mais privilegiada a executá-la. Em AWS, a personificação entre serviços pode resultar no problema do ‘confused deputy’. A personificação entre serviços pode ocorrer quando um serviço (o serviço de chamada) chama outro serviço (o serviço chamado). O serviço de chamada pode ser manipulado de modo a usar suas permissões para atuar nos recursos de outro cliente de uma forma na qual ele não deveria ter permissão para acessar. Para evitar isso, a AWS fornece ferramentas que ajudam você a proteger seus dados para todos os serviços com entidades principais de serviço que receberam acesso aos recursos em sua conta.

Recomendamos o uso das chaves de contexto de condição global aws:SourceArn e aws:SourceAccount em políticas de recursos para limitar as permissões que o AWS OpsWorks CM concede a outro serviço para o recurso. Se o valor de aws:SourceArn não contiver o ID da conta, como um ARN de bucket do Amazon S3, você deverá usar ambas as chaves de contexto de condição global para limitar as permissões. Se você utilizar ambas as chaves de contexto de condição global, e o valor aws:SourceArn contiver o ID da conta, o valor aws:SourceAccount e a conta no valor aws:SourceArn deverão utilizar o mesmo ID de conta quando utilizados na mesma declaração da política. Use aws:SourceArn se quiser que apenas um recurso seja associado ao acesso entre serviços. Use aws:SourceAccount se quiser permitir que qualquer recurso nessa conta seja associado ao uso entre serviços.

O valor de aws:SourceArn deve ser o ARN de um servidor OpsWorks CM Chef ou Puppet.

A maneira mais eficaz de se proteger contra o problema do substituto confuso é usar a chave de contexto de condição global aws:SourceArn com o ARN completo do servidor AWS OpsWorks CM. Se você não souber o ARN completo ou estiver especificando vários servidores ARNs, use a chave de condição de contexto global aws:SourceArn com curingas (*) para as partes desconhecidas do ARN. Por exemplo, arn:aws:servicename:*:123456789012:*.

A seção a seguir mostra como é possível usar as chaves de contexto de condição globais aws:SourceArn e aws:SourceAccount no AWS OpsWorks CM para evitar o problema confused deputy.

Evite explorações de confused deputy em AWS OpsWorks CM

Esta seção descreve como você pode ajudar a evitar explorações de confused deputy em AWS OpsWorks CM, e inclui exemplos de políticas de permissões que você pode anexar ao perfil do IAM que você está usando para acessar AWS OpsWorks CM. Como prática recomendada de segurança, sugerimos adicionar as chaves de condição aws:SourceArn e aws:SourceAccount às relações de confiança que seu perfil do IAM possui com outros serviços. As relações de confiança permitem ao AWS OpsWorks CM assumir a função de realizar ações em outros serviços necessários para criar ou gerenciar seus servidores AWS OpsWorks CM.

Para editar relações de confiança para adicionar chaves de condição aws:SourceArn e aws:SourceAccount
  1. Abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação à esquerda, escolha Roles.

  3. Na caixa Pesquisar, pesquise o perfil que você usa para acessar AWS OpsWorks CM. O perfil gerenciado da AWS é aws-opsworks-cm-service-role.

  4. Na página Resumo do perfil, escolha a guia Relações de confiança.

  5. Na guia Trust relationships (Relações de confiança), escolha Edit trust relationship (Editar relação de confiança).

  6. No Documento de política, adicione pelo menos uma das chaves de condição aws:SourceArn ou aws:SourceAccount à política. Use aws:SourceArn para restringir a relação de confiança entre serviços cruzados (como AWS Certificate Manager e Amazon EC2) e AWS OpsWorks CM para servidores AWS OpsWorks CM específicos, o que é mais restritivo. Adicione aws:SourceAccount para restringir a relação de confiança entre serviços cruzados e AWS OpsWorks CM para servidores em uma conta específica, que é menos restritiva. Veja um exemplo a seguir. Observe que, se você usar as duas chaves de condição, os IDs da conta deverão ser os mesmos.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "opsworks-cm.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnEquals": { "aws:SourceArn": "arn:aws:opsworks-cm:us-east-2:123456789012:server/my-opsworks-server/EXAMPLEabcd-1234-efghEXAMPLE-ID" } } } ] }
  7. Quando terminar de adicionar as permissões à política, escolha Atualizar política de confiança.

Veja a seguir exemplos adicionais de funções que limitam o acesso aos servidores AWS OpsWorks CM usando aws:SourceArn e aws:SourceAccount.

Exemplo: acessar servidores AWS OpsWorks CM em uma região específica

A seguinte declaração de relação de confiança de perfil acessa qualquer servidor AWS OpsWorks CM na região Leste dos EUA (Ohio) (us-east-2). Observe que a região está especificada no valor ARN de aws:SourceArn, mas o valor da ID do servidor é um curinga (*).

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "opsworks-cm.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnEquals": { "aws:SourceArn": "arn:aws:opsworks-cm:us-east-2:123456789012:server/*" } } } ] }

Exemplo: adicionar mais de um ARN de servidor ao aws:SourceArn

O exemplo a seguir limita o acesso a uma matriz de dois servidores AWS OpsWorks CM na ID da conta 123456789012.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "opsworks-cm.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnEquals": { "aws:SourceArn": [ "arn:aws:opsworks-cm:us-east-2:123456789012:server/my-chef-server/unique_ID", "arn:aws:opsworks-cm:us-east-2:123456789012:server/my-puppet-server/unique_ID" ] } } } ] }