Acesso às Contas da AWS de propriedade de terceiros - AWS Identity and Access Management

Acesso às Contas da AWS de propriedade de terceiros

Quando terceiros precisam de acesso a recursos da AWS da sua organização, você pode usar funções para delegar acesso a eles. Por exemplo, um terceiro pode fornecer um serviço para gerenciar seus recursos da AWS. Com funções do IAM, você pode conceder a esses terceiros acesso aos seus recursos da AWS sem compartilhar suas credenciais de segurança da AWS. Em vez disso, os terceiros podem acessar seus recursos da AWS assumindo um perfil que você cria na sua Conta da AWS. Para saber se as entidades de contas fora de sua zona de confiança (organização confiável ou conta) têm acesso para assumir as suas funções, consulte O que é o IAM Access Analyzer?.

Esses terceiros devem fornecer as seguintes informações para criar uma função que eles podem assumir:

  • O ID da Conta da AWS de terceiros. Você especifica o ID da Conta da AWS dele como a entidade principal ao definir a política de confiança para o perfil.

  • Um ID externo a ser associado de forma exclusiva ao perfil. O ID externo pode ser qualquer identificador secreto conhecido apenas por você e pelo terceiro. Por exemplo, você pode usar um ID da fatura entre você e o terceiro, mas não use algo que possa ser adivinhado, como o nome ou o número de telefone do terceiro. Você deve especificar esse ID ao definir a política de confiança para a função. O terceiro deve fornecer esse ID quando assumir a função.

  • As permissões de que terceiros precisam para trabalhar com seus recursos da AWS. Você deve especificar essas permissões ao definir a política de permissões da função. Essa política define quais ações podem ser tomadas e quais recursos podem ser acessados.

Depois de criar a função, você deve fornecer o nome de recurso da Amazon (ARN) ao terceiro. Eles requerem o ARN de sua função para assumir a função.

Importante

Quando você concede a terceiros acesso aos seus recursos da AWS, eles podem acessar qualquer recurso que você especifique na política. O uso de seus recursos é cobrado de você. Certifique-se de limitar o uso de seus recursos de forma apropriada.

ID externos para acesso de terceiros

Um ID externo permite que o usuário que está assumindo o perfil assegure as circunstâncias nas quais elas operam. Também oferece uma forma para o proprietário da conta permitir que a função seja assumida apenas em determinadas circunstâncias. A função principal do ID externo é abordar e impedir o O problema de "confused deputy".

Importante

A AWS não trata o ID externo como um segredo. Depois de criar um segredo, como um par de chaves de acesso ou uma senha na AWS, você não poderá visualizá-las novamente. O ID externo de uma função pode ser visto por qualquer pessoa com permissão para visualizar a função.

Quando devo usar um ID externo?

Use um ID externo nas seguintes situações:

  • Você é proprietário de uma Conta da AWS e configurou uma perfil para um terceiro que acessa outras Contas da AWS além da sua. Você deve solicitar um ID externo ao terceiro que ele inclui quando assume a sua função. Depois, você verifica o ID externo na política de confiança da sua função. Isso garante que o terceiro externo possa assumir sua função somente quando estiver agindo em seu nome.

  • Você está na posição de assumir funções em nome de clientes diferentes, como a Example Corp em nosso cenário anterior. Você deve atribuir um ID externo exclusivo para cada cliente e instruí-los a adicionar o ID externo à política de confiança de sua função. Certifique-se de sempre incluir o ID externo correto em suas solicitações para assumir funções.

    Provavelmente, você já tem um identificador exclusivo para cada um de seus clientes e esse ID exclusivo será suficiente para ser usado como ID externo. O ID externo não é um valor especial que você precisa criar, explicitamente, ou rastrear, separadamente, apenas para essa finalidade.

    Sempre especifique o ID externo em suas chamadas de API AssumeRole. Quando um cliente oferecer a você um ARN da função, teste se você poderá assumir a função com e sem o ID externo correto. Se você assumir a função sem o ID externo correto, não armazene o ARN da função do cliente em seu sistema. Aguarde até que o cliente tenha atualizado a política de confiança de função para exigir o ID externo correto. Dessa forma, você ajudará seus clientes a agir da forma correta, mantendo-os protegidos contra o problema confused deputy.

Exemplo de cenário usando um ID externo

Por exemplo, suponha que você decida contratar uma empresa terceirizada chamada Example Corp para monitorar sua Conta da AWS e ajudar a otimizar os custos. Para rastrear seus gastos diários, a Example Corp precisa de acesso aos seus recursos da AWS. A Example Corp também monitora muitas outras contas da AWS para outros clientes.

Não dê à Exemplo Corp acesso a um usuário do IAM e suas credenciais de longo prazo na sua conta da AWS. Em vez disso, use uma função do IAM e suas credenciais de segurança temporárias. Um perfil do IAM fornece um mecanismo que permite o acesso de terceiros aos recursos da AWS sem a necessidade de compartilhar credenciais de longo prazo (como uma chave de acesso de usuário do IAM).

Você pode usar um perfil do IAM para estabelecer uma relação de confiança entre sua Conta da AWS e a conta da Example Corp. Depois que esse relacionamento for estabelecido, um membro da conta Exemplo Corp pode chamar a API AssumeRole do AWS Security Token Service para obter credenciais de segurança temporárias. Os membros da Example Corp podem usar as credenciais para acessar recursos da AWS na sua conta.

nota

Para obter mais informações sobre AssumeRole e outras APIs da AWS que você pode chamar para obter credenciais de segurança temporárias, consulte Compare credenciais do AWS STS.

Veja aqui um detalhamento desse cenário:

  1. Contrate a Example Corp, para que eles criem um identificador de clientes exclusivo para você. Eles fornecerão o ID de cliente exclusivo e o número da Conta da AWS deles. Essas informações são necessárias para criar uma função do IAM na próxima etapa.

    nota

    A Example Corp pode usar qualquer valor de string que desejar para o ExternalId, desde que seja exclusivo para cada cliente. Pode ser o número da conta de um cliente ou até mesmo uma string aleatória de caracteres, desde que dois clientes não tenham o mesmo valor. Isso não deve ser um "segredo". A Example Corp deve fornecer o valor do ExternalId para cada cliente. O essencial é que ele deve ser gerado pela Example Corp e não pelos clientes dela para garantir que cada ID externo seja exclusivo.

  2. Faça login na AWS e crie uma função do IAM que dê à Exemplo Corp acesso aos seus recursos. Como qualquer função do IAM, a função tem duas políticas, uma política de permissão e uma política de confiança. A política de confiança da função especifica quem pode assumir a função. Em nosso cenário de exemplo, a política especifica o número de Conta da AWS da Example Corp como Principal. Isso permite que as identidades dessa conta assumam a função. Além disso, você adiciona um elemento Condition à política de confiança. Esse elemento Condition testa a chave de contexto ExternalId para garantir que ela corresponda ao ID do cliente exclusivo da Example Corp. Por exemplo:

    "Principal": {"AWS": "Example Corp's Conta da AWS ID"}, "Condition": {"StringEquals": {"sts:ExternalId": "Unique ID Assigned by Example Corp"}}
  3. A política de permissões da função especifica o que a função permite que alguém faça. Por exemplo, você pode especificar que a função permita que alguém gerencie apenas seus recursos do Amazon EC2 e Amazon RDS, mas não seus usuários ou grupos do IAM. Em nosso cenário de exemplo, use a política de permissões para dar acesso somente leitura à Example Corp a todos os recursos na sua conta.

  4. Depois de criar a função, forneça o nome de recurso da Amazon (ARN) da função à Example Corp.

  5. Quando a Exemplo Corp precisar acessar seus recursos da AWS, alguém da empresa chamará a API sts:AssumeRole da AWS. A chamada inclui o ARN da função a ser assumida e o parâmetro ExternalId que corresponde ao ID do cliente.

Se a solicitação vier de alguém que estiver usando a Conta da AWS da Example Corp, e se o ARN do perfil e o ID externo estiverem corretos, a solicitação será bem-sucedida. Nesse caso, ela fornecerá credenciais de segurança temporárias que a Example Corp poderá usar para acessar os recursos da AWS permitidos pela sua função.

Em outras palavras, quando uma política de função incluir um ID externo, qualquer pessoa que desejar assumir a função deverá ser especificada como um principal na função e deverá incluir o ID externo correto.

Pontos-chave para IDs externos

  • Em um ambiente de vários locatários onde você oferece suporte a vários clientes com AWS contas diferentes, recomendamos usar um ID externo por Conta da AWS. Esse ID deve ser uma string aleatória gerada por um terceiro.

  • Para exigir que o terceiro forneça um ID externo ao assumir uma função, atualize a política de confiança da função com o ID externo de sua escolha.

  • Para fornecer um ID externo quando você assumir uma função, use a AWS CLI ou a API da AWS para assumir essa função. Para obter mais informações, consulte a operação da API STS AssumeRole ou a operação da CLI assume-role STS.

Recursos adicionais

Os seguintes recursos podem ajudar você a saber mais sobre como fornecer acesso a Contas da AWS de terceiros.