Tutorial do IAM: Delegar acesso entre contas da AWS usando funções do IAM - AWS Identity and Access Management

Tutorial do IAM: Delegar acesso entre contas da AWS usando funções do IAM

Este tutorial ensina a usar uma função para delegar acesso a recursos que estão em diferentes contas da AWS que você tem (Produção e Desenvolvimento). Você compartilha recursos em uma conta com usuários em outra conta. Ao configurar o acesso entre contas dessa forma, você não precisa criar usuários individuais do IAM em cada conta. Além disso, os usuários não precisam sair de uma conta e entrar em outra para acessar recursos em contas diferentes da AWS. Depois de configurar a função, você verá como usar a função do Console de gerenciamento da AWS, da AWS CLI e da API.

nota

As funções do IAM e as políticas baseadas em recursos delegam o acesso entre contas em uma única partição. Por exemplo, suponha que você tenha uma conta em Oeste dos EUA (Norte da Califórnia) na partição padrão aws. Além disso, você tem uma conta em China (Pequim) na partição aws-cn. Você não pode usar uma política do Amazon S3 baseada em recursos na China (Pequim) para permitir acesso a usuários na sua conta padrão da aws.

Neste tutorial, imagine que a conta Produção é onde os aplicativos ao vivo são gerenciados. A conta Desenvolvimento é um sandbox onde desenvolvedores e testadores podem testar aplicativos livremente. Em cada conta, as informações do aplicativo são armazenadas em buckets do Amazon S3. Você gerencia os usuários do IAM na conta Desenvolvimento na qual há dois grupos do IAM: Desenvolvedores e Testadores. Os usuários nos dois grupos têm permissões para trabalhar na conta Desenvolvimento e acessar os recursos. Periodicamente, um desenvolvedor deve atualizar os aplicativos em produção na conta Produção. Esses aplicativos são armazenados em um bucket do Amazon S3 chamado productionapp.

Ao final deste tutorial, você terá o seguinte:

  • Os usuários na conta Development (Desenvolvimento) (a conta confiável) que têm permissão para assumir uma função específica na conta Production (Produção).

  • Uma função na conta Production (Produção) (a conta de confiança) que tem permissão para acessar um bucket específico do Amazon S3.

  • O bucket do productionapp na conta Production (Produção).

Os desenvolvedores podem usar a função no Console de gerenciamento da AWS para acessar o bucket productionapp na conta Produção. Eles também podem acessar o bucket usando chamadas de API que são autenticadas por credenciais temporárias fornecidas pela função. Ocorre falha em tentativas semelhantes de usar a função feitas por um testador.

Esse fluxo de trabalho tem três etapas básicas.

Etapa 1: Criar uma função

Primeiro, você deve usar o Console de gerenciamento da AWS para estabelecer confiança entre a conta Produção (número de ID 999999999999) e a conta Desenvolvimento (Número de ID 111111111111). Comece criando uma função do IAM denominada UpdateApp. Ao criar a função, você define a conta Desenvolvimento como uma entidade confiável e especifica uma política de permissões que permite ao usuários confiáveis atualizar o bucket productionapp.

Etapa 2: Conceder acesso à função

Nesta etapa do tutorial, você modifica a política de grupo do IAM para que os testadores não tenham acesso à função UpdateApp. Como os testadores têm acesso PowerUser neste cenário, devemos negar explicitamente a capacidade de usar a função.

Etapa 3: Testar o acesso alternando funções

Por fim, como desenvolvedor, você usa a função UpdateApp para atualizar o bucket productionapp na conta Produção. Você verá como acessar a função por meio do console da AWS da AWS CLI e da API.

Pré-requisitos

Este tutorial pressupõe que você já tenha os seguintes itens configurados:

  • Duas contas separadas da AWS que você possa usar, uma para representar a conta Desenvolvimento e uma para representar a conta Produção.

  • Usuários e grupos na conta Desenvolvimento criados e configurados da seguinte forma:

    Usuário Grupo Permissões
    David Desenvolvedores Os dois usuários podem fazer login e usar o Console de gerenciamento da AWS na conta Development.
    Theresa Testadores
  • Você não precisa ter todos os usuários ou grupos criados na conta Produção.

  • Um bucket do Amazon S3 criado na conta Produção. Neste tutorial, nós o chamamos de ProductionApp, mas como os nomes dos buckets do S3 devem ser globalmente exclusivos, é necessário usar um bucket com outro nome.

Etapa 1: Criar uma função

É possível permitir que os usuários de uma conta da AWS acessem recursos em outra conta da AWS. Para fazer isso, crie uma função que defina quem pode acessá-la e quais permissões concede aos usuários que alternam para ela.

Nesta etapa do tutorial, você cria a função na conta Produção e especifica a conta Desenvolvimento como uma entidade confiável. Você também pode limitar as permissões da função a apenas acesso de leitura e gravação para o bucket productionapp. Qualquer pessoa que tenha permissão para usar a função pode ler e gravar no bucket productionapp.

Para poder criar uma função, você precisa do ID da conta Desenvolvimento da AWS. O ID da conta é um identificador exclusivo atribuído a cada conta da AWS.

Como obter o ID da conta de desenvolvimento da AWS

  1. Faça login no Console de gerenciamento da AWS como administrador da conta Desenvolvimento e abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. Na barra de navegação no canto superior direito, selecione o nome de usuário e My Security Credentials (Minhas credenciais de segurança). O número da conta aparece em Account identifiers (Identificadores de conta) (se você for o usuário raiz) ou em Account details (Detalhes da conta) (se você for um usuário do IAM). Para esse cenário, vamos supor que o ID da conta desenvolvimento seja 111111111111. No entanto, é necessário usar um ID de conta válido se estiver reconstruindo o cenário em seu ambiente de teste.

Para criar uma função na conta de produção que possa ser usada pela conta de desenvolvimento

  1. Faça login no Console de gerenciamento da AWS como administrador da conta Produção e abra o console do IAM.

  2. Antes de criar a função, prepare as políticas gerenciadas que definem as permissões necessárias à função. Em uma etapa posterior, você anexará essa política à função.

    Você deseja definir o acesso de leitura e gravação ao bucket productionapp. Embora a AWS forneça algumas políticas gerenciadas do Amazon S3, não há uma que conceda acesso de leitura e gravação a um único bucket do Amazon S3. Você pode criar a sua própria política.

    No painel de navegação à esquerda, escolha Políticas e, em seguida, Criar política.

  3. Escolha a guia JSON e copie o texto do documento de política JSON a seguir. Cole o texto na caixa de texto JSON, substituindo o ARN do recurso (arn:aws:s3:::productionapp) pelo real, que seja apropriado para seu bucket do S3.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::productionapp" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": "arn:aws:s3:::productionapp/*" } ] }

    A permissão ListBucket concede aos usuários a habilidade de visualizar objetos no bucket productionapp. As permissões GetObject, PutObject, DeleteObject concedem aos usuários a capacidade de visualizar, atualizar e excluir o conteúdo no bucket productionapp.

  4. Ao concluir, selecione Revisar política. O Validador de política indica se há qualquer erro de sintaxe.

    nota

    É possível alternar entre as guias Visual editor (Editor visual) e JSON sempre que quiser. No entanto, se você fizer alterações ou escolher Revisar política na guia Editor visual, o IAM poderá reestruturar sua política de forma a otimizá-la para o editor visual. Para obter mais informações, consulte Reestruturação da política.

  5. Na página Revisar, digite read-write-app-bucket para o nome da política. Analise o Resumo da política para ver as permissões concedidas pela sua política e, em seguida, escolha Criar política para salvar seu trabalho.

    As novas políticas aparecem na lista de políticas gerenciadas.

  6. No painel de navegação à esquerda, escolha Funções e Criar função.

  7. Escolha o tipo de função Outra conta da AWS.

  8. Em ID da conta, digite o ID da conta de desenvolvimento.

    Este tutorial usa o ID da conta de exemplo 111111111111 para a conta Desenvolvimento. Você deve usar um ID de conta válido. Se usar um ID de conta inválido, como 111111111111, o IAM não permitirá que você crie a nova função.

    Por enquanto, não é necessário exigir um ID externo ou exigir que os usuários tenham autenticação multifator (MFA) para assumirem a função. Então, deixe essas opções desmarcadas. Para obter mais informações, consulte Usar autenticação multifator (MFA) na AWS

  9. Escolha Próximo: Permissões para definir as permissões que serão associadas à função.

  10. Selecione a caixa ao lado da política que você criou anteriormente.

    Dica

    Em Filtrar, escolha Gerenciado pelo cliente para filtrar a lista a fim de incluir apenas as políticas que você criou. Isso oculta as políticas criadas pela AWS e torna muito mais fácil encontrar o que você está procurando.

    Em seguida, escolha Next: tags (Próximo: tags).

  11. (Opcional) Adicione metadados ao usuário anexando tags como pares de chave-valor. Para obter mais informações sobre como usar tags no IAM, consulte Marcar usuários e funções do IAM.

  12. Selecione Próximo: Codificação e digite UpdateApp como nome da função.

  13. (Opcional) Em Descrição da função, digite uma descrição para a nova função.

  14. Depois de revisar a função, escolha Criar função.

    A função UpdateApp é exibida na lista de funções.

Agora você deve obter o nome de recurso da Amazon (ARN), que é um identificador exclusivo da função. Ao modificar a política do grupo Desenvolvedores e Testadores, você especifica o nome de recurso da Amazon (ARN) da função para conceder ou negar permissões.

Para obter o nome de recurso da Amazon (ARN) para UpdateApp

  1. No painel de navegação do console do IAM, selecione Roles (Funções).

  2. Na lista de funções, escolha UpdateApp.

  3. Na seção Resumo do painel de detalhes, copie o valor de ARN da função.

    A conta Produção tem o ID 999999999999, portanto, o ARN da função é arn:aws:iam::999999999999:role/UpdateApp. Certifique-se de fornecer o ID da conta da AWS real de sua conta de "produção".

Nesse momento, você estabeleceu confiança entre as contas Produção e Desenvolvimento. Você fez isso criando uma função na conta Produção que identifica a conta Desenvolvimento como um principal confiável. Você também definiu o que os usuários que alternarem para a função UpdateApp poderão fazer.

Em seguida, modifique as permissões para os grupos.

Etapa 2: Conceder acesso à função

Nesse momento, os membros dos grupos Testadores e Desenvolvedores têm permissões para testar livremente os aplicativos na conta Desenvolvimento. Veja a seguir as etapas necessárias para adicionar permissões para alternar para a função.

Para modificar o grupo de desenvolvedores para que possam alternar para a função UpdateApp

  1. Faça login como administrador na conta Desenvolvimento e abra o console do IAM.

  2. Escolha Grupos e, em seguida, escolha Desenvolvedores.

  3. Escolha a guia Permissões, expanda a seção Políticas em linha e, em seguida, escolha Criar política de grupo. Se ainda não houver políticas em linha, o botão não será exibido. Em vez disso, escolha o link no final de "Para criar uma, clique aqui."

  4. Selecione Política personalizada e, então, o botão Selecionar.

  5. Digite um nome de política, como allow-assume-S3-role-in-production.

  6. Adicione a seguinte instrução da política para permitir a ação AssumeRole na função UpdateApp na conta Produção. Altere PRODUCTION-ACCOUNT-ID no elemento Resource para o ID da conta real da AWS da conta Produção.

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::PRODUCTION-ACCOUNT-ID:role/UpdateApp" } }

    O efeito Allow permite explicitamente que o grupo Desenvolvedores acesse a função UpdateApp na conta Produção. Qualquer desenvolvedor que tentar acessar a função terá êxito.

  7. Escolha Aplicar política para adicionar a política ao grupo Desenvolvedores.

Na maioria dos ambientes, o procedimento a seguir não é necessário. Se, no entanto, você usar permissões Power User, alguns grupos já poderão alternar funções. O procedimento a seguir mostra como adicionar uma permissão "Negar" ao grupo Testadores para garantir que não possam assumir a função. Se esse procedimento não for necessário em seu ambiente, recomendamos que você não a adicione. As permissões "Negar" tornam o quadro geral de permissões mais complicado de gerenciar e compreender. Use permissões "Negar" somente quando não houver uma opção melhor.

Como modificar o grupo de testadores para negar permissão para assumir a função UpdateApp

  1. Escolha Grupos e, em seguida, escolha Testadores.

  2. Escolha a guia Permissões, expanda a seção Políticas em linha e, em seguida, escolha Criar política de grupo.

  3. Selecione Política personalizada e, então, o botão Selecionar.

  4. Digite um nome de política, como deny-assume-S3-role-in-production.

  5. Adicione a instrução de política a seguir para negar a ação AssumeRole na função UpdateApp. Altere PRODUCTION-ACCOUNT-ID no elemento Resource para o ID da conta real da AWS da conta Produção.

    { "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::PRODUCTION-ACCOUNT-ID:role/UpdateApp" } }

    O efeito Deny nega explicitamente que o grupo Testadores acesse a função UpdateApp na conta Produção. Qualquer testador que tentar acessar a função verá uma mensagem de acesso negado.

  6. Escolha Aplicar política para adicionar a política ao grupo Testadores.

O grupo Desenvolvedores agora tem permissões para usar a função UpdateApp na conta Produção. O grupo Testadores é impedido de usar a função UpdateApp.

Depois disso, você perceberá que David, um desenvolvedor, pode acessar o bucket do productionapp na conta Produção. David pode acessar o bucket no Console de gerenciamento da AWS, na AWS CLI ou na API do AWS.

Etapa 3: Testar o acesso alternando funções

Depois de concluir as duas primeiras etapas deste tutorial, você terá uma função que concede acesso a um recurso na conta Produção. Você também tem um grupo na conta Desenvolvimento cujos usuários têm permissão para usar essa função. A função agora está pronta para uso. Esta etapa discute como testar a alternância para essa função no Console de gerenciamento da AWS, na AWS CLI e na API da AWS.

Importante

Você só poderá alternar para uma função quando fizer login como um usuário do IAM ou um usuário federado. Além disso, se você executar uma instância do Amazon EC2 para executar um aplicativo, o aplicativo poderá assumir uma função por meio de seu perfil de instância. Você não pode alternar funções quando está conectado como o Usuário raiz da conta da AWS.

Alternar funções (console)

Se David precisar trabalhar no ambiente de produção no Console de gerenciamento da AWS, ele poderá fazê-lo usando Alternar função. Ele especifica o ID da conta ou o alias e o nome da função, e suas permissões mudam imediatamente para as permitidas pela função. Em seguida, ele pode usar o console para trabalhar com o bucket productionapp, mas não pode trabalhar com nenhum outro recurso em Produção. Embora David esteja usando a função, ele também não pode usar seus privilégios de superusuário na conta Desenvolvimento. Isso porque apenas um conjunto de permissões pode ser ativado por vez.

Importante

A alternância de funções usando o Console de gerenciamento da AWS funciona apenas com as contas que não exigem um ExternalId. Por exemplo, vamos supor que você conceda acesso à sua conta a terceiros e exija um ExternalId em um elemento Condition em sua política de permissões. Nesse caso, o terceiro pode acessar sua conta somente usando a API da AWS ou uma ferramenta de linha de comando. O terceiro não pode usar o console, pois ele não pode fornecer um valor para ExternalId. Para obter mais informações sobre esse cenário, consulte Como usar um ID externo ao conceder acesso aos seus recursos da AWS a terceiros e Como habilitar o acesso entre contas ao Console de gerenciamento da AWS no Blog de segurança da AWS.

David pode acessar a página Alternar função de duas maneiras:

  • David recebe um link de seu administrador que aponta para uma configuração predefinida Alternar função. O link é fornecido ao administrador na última página do assistente Criar função ou na página Resumo da função de uma função entre contas. Ao selecionar esse link, David acessa a página Alternar função com os campos ID da conta e Nome da função já preenchidos. Tudo o que David precisa fazer é selecionar Alternar função e pronto.

  • O administrador não envia o link no e-mail, mas, em vez disso, envia os valores do número de ID da conta e do Nome da função. David deve digitá-los manualmente para alternar funções. Isso é ilustrado no procedimento a seguir.

Para assumir uma função

  1. David faz login no Console de gerenciamento da AWS usando seu usuário normal que está no grupo Desenvolvimento.

  2. Ele escolhe o link que seu administrador enviou no e-mail. Esse link o leva para a página Mudar de função com as informações de ID ou alias da conta e o nome da função já preenchidas.

    — ou —

    Ele escolhe seu nome (menu Identidade) na barra de navegação e, em seguida, escolhe Mudar de função.

    Se essa for a primeira vez que David tenta acessar a página Switch Role (Alternar função) dessa forma, primeiro ele acessará a página Switch Role (Alternar função) de primeira execução. Essa página fornece informações adicionais sobre como a alternância de funções pode permitir aos usuários gerenciar os recursos entre as contas da AWS. David deve selecionar o botão Alternar função nessa página para concluir o restante do procedimento.

  3. Em seguida, para acessar a função, David deve digitar manualmente o número de ID da conta Produção (999999999999) e o nome da função (UpdateApp).

    Além disso, David deseja monitorar quais funções (e permissões associadas) estão ativas no momento. Para controlar essas informações, ele digita PRODUCTION na caixa de texto Display Name (Nome de exibição), seleciona a opção na cor vermelha e escolhe Switch Role (Alternar função).

  4. David agora pode usar o console do Amazon S3 para trabalhar com o bucket do Amazon S3, ou qualquer outro recurso ao qual a função UpdateApp tenha permissões.

  5. Ao terminar o trabalho que precisa fazer, David poderá retornar para suas permissões originais. Para fazer isso, ele escolhe o nome de exibição da função PRODUCTION na barra de navegação e, em seguida, escolhe Voltar para David @ 111111111111.

  6. Na próxima vez que David precisar alternar funções e escolher o menu Identidade na barra de navegação, ele verá a entrada PRODUÇÃO da última vez. Ele pode simplesmente escolher essa entrada para alternar funções imediatamente sem precisar digitar novamente o ID da conta e o nome da função.

Alternar funções (AWS CLI)

Se David precisar trabalhar no ambiente de produção na linha de comando, ele poderá fazê-lo usando a AWS CLI. Ele executa o comando aws sts assume-role e transmite o nome de recurso da Amazon (ARN) para obter credenciais de segurança temporárias para essa função. Em seguida, ele configura essas credenciais em variáveis do ambiente para que os comandos da AWS CLI funcionem usando as permissões da função. Embora David esteja usando a função, ele não pode usar seus privilégios de superusuário na conta Desenvolvimento. Isso porque apenas um conjunto de permissões pode ser ativado por vez.

Todas as chaves de acesso e tokens são apenas exemplos e não podem ser usados da forma que são mostrados. Substitua pelos valores apropriados do seu ambiente real.

Para assumir uma função

  1. David abre uma janela de prompt de comando e confirma que o cliente de AWS CLI está funcionando executando o comando:

    aws help
    nota

    O ambiente padrão de David usa as credenciais do usuário David do seu perfil padrão que ele criou com o comando aws configure. Para obter mais informações, consulte Configurar a AWS Command Line Interface no Guia do usuário do AWS Command Line Interface.

  2. Ele inicia o processo de alternância de função executando o seguinte comando para alternar para a função UpdateApp na conta Produção. Ele obteve o nome de recurso da Amazon (ARN) da função com o administrador que criou a função. O comando também exige que você forneça um nome de sessão, você pode escolher qualquer texto que desejar para isso.

    aws sts assume-role --role-arn "arn:aws:iam::999999999999:role/UpdateApp" --role-session-name "David-ProdUpdate"

    Em seguida, David vê a seguinte na saída:

    { "Credentials": { "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "AQoDYXdzEGcaEXAMPLE2gsYULo+Im5ZEXAMPLEeYjs1M2FUIgIJx9tQqNMBEXAMPLE CvSRyh0FW7jEXAMPLEW+vE/7s1HRpXviG7b+qYf4nD00EXAMPLEmj4wxS04L/uZEXAMPLECihzFB5lTYLto9dyBgSDy EXAMPLE9/g7QRUhZp4bqbEXAMPLENwGPyOj59pFA4lNKCIkVgkREXAMPLEjlzxQ7y52gekeVEXAMPLEDiB9ST3Uuysg sKdEXAMPLE1TVastU1A0SKFEXAMPLEiywCC/Cs8EXAMPLEpZgOs+6hz4AP4KEXAMPLERbASP+4eZScEXAMPLEsnf87e NhyDHq6ikBQ==", "Expiration": "2014-12-11T23:08:07Z", "AccessKeyId": "AKIAIOSFODNN7EXAMPLE" } }
  3. David vê três elementos de que ele precisa na seção Credenciais da saída.

    • AccessKeyId

    • SecretAccessKey

    • SessionToken

    David precisa configurar o ambiente de AWS CLI para usar esses parâmetros nas chamadas subsequentes. Para obter informações sobre as várias maneiras de configurar suas credenciais, consulte Configuração da AWS Command Line Interface. Você não pode usar o comando aws configure porque ele não dá suporte à captura do token de sessão. No entanto, você pode digitar manualmente as informações em um arquivo de configuração. Como essas são credenciais temporárias com um tempo de expiração relativamente curto, é mais fácil adicioná-las ao ambiente de sua sessão de linha de comando atual.

  4. Para adicionar os três valores ao ambiente, David recorta e cola a saída da etapa anterior nos seguintes comandos. Talvez você queira recortar e colar em um editor de texto simples para resolver problemas de quebra de linha na saída do token de sessão. Ela deve ser adicionada como uma string longa simples, apesar de a linha ser mostrada quebrada aqui para fins de clareza.

    nota

    O exemplo a seguir mostra os comandos fornecidos no ambiente Windows, onde "set" é o comando para criar uma variável de ambiente. Nos computadores Linux ou macOS, o comando é "exportar". Todas as outras partes do exemplo são válidas em todos os três ambientes.

    set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY set AWS_SESSION_TOKEN=AQoDYXdzEGcaEXAMPLE2gsYULo+Im5ZEXAMPLEeYjs1M2FUIgIJx9tQqNMBEXAMPLECvS Ryh0FW7jEXAMPLEW+vE/7s1HRpXviG7b+qYf4nD00EXAMPLEmj4wxS04L/uZEXAMPLECihzFB5lTYLto9dyBgSDyEXA MPLEKEY9/g7QRUhZp4bqbEXAMPLENwGPyOj59pFA4lNKCIkVgkREXAMPLEjlzxQ7y52gekeVEXAMPLEDiB9ST3UusKd EXAMPLE1TVastU1A0SKFEXAMPLEiywCC/Cs8EXAMPLEpZgOs+6hz4AP4KEXAMPLERbASP+4eZScEXAMPLENhykxiHen DHq6ikBQ==

    Nesse ponto, todos os comandos a seguir são executados de acordo com as permissões de função identificadas por essas credenciais. No caso de David, a função UpdateApp.

  5. Execute o comando para acessar os recursos na conta Produção. Neste exemplo, David simplesmente lista o conteúdo do seu bucket do S3 com o seguinte comando.

    aws s3 ls s3://productionapp

    Como nomes de bucket do Amazon S3 são universalmente exclusivos, não há necessidade de especificar o ID da conta que tem o bucket. Para acessar os recursos de outros serviços da AWS consulte na documentação da AWS CLI desse serviço os comandos e a sintaxe que são necessários para fazer referência aos seus recursos.

Uso da AssumeRole (API da AWS)

Quando David precisar fazer uma atualização na conta Produção do código, ele faz uma chamada AssumeRole para assumir a função UpdateApp. A chamada retorna credenciais temporárias que ele pode usar para acessar o bucket productionapp na conta Produção. Com essas credenciais, David pode fazer chamadas de API para atualizar o bucket productionapp. No entanto, ele não pode fazer chamadas de API para acessar nenhum outro recurso na conta Produção, mesmo tendo permissões de superusuário na conta Desenvolvimento.

Para assumir uma função

  1. David chama AssumeRole como parte de um aplicativo. Ele deve especificar o nome de recurso da Amazon (ARN) UpdateApp: arn:aws:iam::999999999999:role/UpdateApp.

    A resposta da chamada AssumeRole inclui as credenciais temporárias com um AccessKeyId e um SecretAccessKey. Também inclui um horário de Expiration que indica quando as credenciais expiram, e é necessário solicitar novas.

  2. Com as credenciais temporárias, David faz uma chamada s3:PutObject para atualizar o bucket productionapp. Ele pode passar as credenciais para a chamada de API como o parâmetro AuthParams. Como as credenciais de função temporárias têm apenas acesso de leitura e gravação para o bucket productionapp, todas as outras ações na conta Produção são negadas.

Para obter um exemplo de código (usando Python), consulte Alternar para uma função do IAM (API da AWS).

  • Para obter mais informações sobre grupos e usuários do IAM, consulte Identidades do IAM (usuários, grupos e funções).

  • Para obter mais informações sobre como criar buckets do Amazon S3, consulte Criar um bucket no Guia de conceitos básicos do Amazon Simple Storage Service.

  • Para saber se os principais 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 é IAM Access Analyzer?.

Resumo

Você concluiu o tutorial de acesso à API entre contas. Você criou uma função para estabelecer confiança com outra conta e definiu quais ações as entidades confiáveis podem executar. Em seguida, você modificou um grupo de políticas para controlar quais usuários do IAM podem acessar a função. Como resultado, os desenvolvedores da conta Desenvolvimento podem fazer atualizações no bucket productionapp na conta Produção usando credenciais temporárias.