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 em diferentes contas da AWS de sua propriedade chamadas 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 AWS Management Console, da AWS CLI e da API.

nota

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

Neste tutorial, a conta de Produção gerencia aplicações ativas. Desenvolvedores e testadores usam a conta de Desenvolvimento como uma sandbox para testar aplicações livremente. Em cada conta, você armazena as informações da aplicação em buckets do Amazon S3. Você gerencia os usuários do IAM na conta de Desenvolvimento, na qual há dois grupos de usuários do IAM: Desenvolvedores e Testadores. Os usuários nos dois grupos de usuários têm permissões para trabalhar na conta de desenvolvimento e acessar os recursos. Periodicamente, um desenvolvedor deve atualizar as aplicações ativas na conta de Produção. Os desenvolvedores armazenam essas aplicações em um bucket do Amazon S3 chamado productionapp.

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

  • Os usuários na conta de Desenvolvimento (a conta confiável) com permissão para assumir uma função específica na conta de Produção.

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

  • Um bucket productionapp criado na conta de Produção.

Os desenvolvedores podem usar a função no AWS Management Console para acessar o bucket productionapp na conta de Produção. Eles também podem acessar o bucket usando chamadas de API 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 na conta de Produção

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

Etapa 2: Conceder acesso à função

Nesta etapa do tutorial, você modifica a política de grupo de usuários do IAM para negar aos Testadores acesso à função UpdateApp. Pois os Testadores têm acesso PowerUser neste cenário e você deve 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 de 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 distintas da AWS que você possa usar, uma para representar a conta de Desenvolvimento e uma para representar a conta de Produção.

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

    Usuário Grupo de usuários Permissões
    David Desenvolvedores Ambos os usuários podem fazer login e usar o AWS Management Console na conta de Desenvolvimento.
    Jane Testadores
  • Você não precisa de usuários ou grupos de usuários criados na conta de Produção.

  • Um bucket do Amazon S3 criado na conta de Produção. Você pode chamá-lo de ProductionApp neste tutorial, mas como os nomes dos buckets do S3 devem ser globalmente exclusivos, você deve usar um bucket com outro nome.

Etapa 1: criar uma função na conta de Produçã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 de Produção e especifica a conta de Desenvolvimento como uma entidade confiável. Você também limita as permissões da função a acesso somente leitura e gravação para o bucket productionapp. Qualquer pessoa com permissão para usar a função pode ler e gravar no bucket productionapp.

Antes que possa criar uma função, você precisa do ID da conta de Desenvolvimento da AWS. Cada conta da AWS tem um identificador ID da conta exclusivo atribuído a ela.

Para obter o ID da conta Desenvolvimento da AWS

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

  2. Na barra de navegação, escolha Support (Suporte) e, em seguida, Support Center (Central de Suporte). Seu número (ID) de conta de 12 dígitos conectada no momento aparece no painel de navegação Support Center (Central de Suporte). Para esse cenário, você pode usar o ID de conta 111111111111 para a conta de Desenvolvimento. No entanto, é necessário usar um ID de conta válido se você usar este cenário em seu ambiente de teste.

Para criar umo perfil na conta de produção que possa ser usada pela conta Desenvolvimento

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

  2. Para criar a função, prepare a política gerenciada que define as permissões para os requisitos da 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, escolha Policies (Políticas) e, em seguida, selecione Create policy (Criar política).

  3. Escolha a guia JSON e copie o texto do documento de política JSON a seguir. Cole este texto na caixa de texto JSON, substituindo o ARN do recurso (arn:aws:s3:::productionapp) pelo verdadeiro ARN para o seu bucket do Amazon 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. Resolva quaisquer avisos de segurança, erros ou avisos gerais gerados durante a validação de política e, depois, escolha Review policy (Revisar política).

    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 a opção Review policy (Revisar política) na guia Visual editor (Editor visual), o IAM poderá reestruturar sua política de forma a otimizá-la para o editor visual. Para mais informações, consulte Reestruturação da política.

  5. Na página Review (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, escolha Roles e Create role.

  7. Escolha o tipo de perfil An AWS account (Uma conta da AWS).

  8. Em Account ID (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 você 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. Deixe essas opções desmarcadas. Para mais informações, consulte Uso de autenticação multifator (MFA) na AWS.

  9. Selecione Next: Permissions (Próximo: permissões) para definir as permissões associadas à função.

  10. Marque a caixa de seleção ao lado da política que você criou anteriormente.

    Dica

    Em Filter (Filtrar), selecione Customer managed (Gerenciado pelo cliente) para filtrar a lista, de modo que ela inclua apenas as políticas criadas por você. Isso oculta as políticas criadas pela AWS e torna muito mais fácil encontrar a que você necessita.

    Depois, escolha Next (Avançar).

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

  12. (Opcional) Em Description (Descrição), insira uma descrição para o novo perfil.

  13. 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 do recurso da Amazon (ARN) da função, que é um identificador exclusivo para a função. Ao modificar a política de grupo dos Desenvolvedores e Testadores, você especifica o 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, escolha Roles (Perfis).

  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 de produção tem o ID de conta 999999999999, portanto, o ARN da função é arn:aws:iam::999999999999:role/UpdateApp. Certifique-se de fornecer o ID verdadeiro da conta da AWS para a conta de Produção.

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

Em seguida, modifique as permissões para os grupos de usuários.

Etapa 2: Conceder acesso à função

Nesse momento, os membros dos grupos de usuários Testadores e Desenvolvedores têm permissões que os deixam testar livremente as aplicações na conta de Desenvolvimento. Use as seguintes etapas necessárias para adicionar permissões a fim de permitir alternar para a função.

Para modificar o grupo de usuários Desenvolvedores para que possam alternar para a função UpdateApp

  1. Acesse como administrador na conta de Desenvolvimento e abra o console do IAM.

  2. Escolha User groups (Grupos de usuários) e, em seguida, escolha Developers (Desenvolvedores).

  3. Escolha a guia Permissions (Permissões), Add permissions (Adicionar permissões) e Create inline policy (Criar política em linha).

  4. Escolha a guia JSON.

  5. 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 da AWS real da conta de 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 tente acessar a função é bem-sucedido.

  6. Escolha Review policy (Revisar política).

  7. Digite um Policy name (Nome de política), como allow-assume-S3-role-in-production.

  8. (Opcional) Em Descrição, digite uma descrição para a política.

  9. Escolha Create policy (Criar política).

Na maioria dos ambientes, talvez o procedimento a seguir não seja necessário. Se, no entanto, você usar permissões PowerUserAccess, alguns grupos já poderão alternar funções. O procedimento a seguir mostra como adicionar uma permissão "Deny" 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 não o adicione. As permissões "Deny" fazem com que seja mais complicado de gerenciar e entender o estado geral das permissões. Use as permissões "Deny" somente quando não existir uma opção melhor.

Para modificar o grupo de usuários testadores para negar permissão de assumir a função UpdateApp

  1. Escolha User groups (Grupos de usuários) e Testers (Testadores).

  2. Escolha a guia Permissions (Permissões), Add permissions (Adicionar permissões) e Create inline policy (Criar política em linha).

  3. Escolha a guia JSON.

  4. 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 da AWS real da conta de 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 recebe uma mensagem de acesso negado.

  5. Escolha Review policy (Revisar política).

  6. Digite um Policy name (Nome de política) como deny-assume-S3-role-in-production.

  7. Escolha Create policy (Criar política).

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

Em seguida, você verá como David, um desenvolvedor, pode acessar o bucket productionapp na conta de Produção. David pode acessar o bucket no AWS Management Console, na AWS CLI ou na API do AWS.

Etapa 3: Testar o acesso alternando funções

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

Importante

Você só poderá alternar para uma função após fazer login como um usuário do IAM ou um usuário federado. Além disso, se você iniciar uma instância do Amazon EC2 para executar uma aplicação, a aplicação poderá assumir uma função por meio de seu perfil de instância. Você não pode alternar para uma função quando se conectar como o usuário raiz da Conta da AWS.

Alternar funções (console)

Se David precisar trabalhar no ambiente de Produção no AWS Management Console, ele poderá fazê-lo usando Switch Role (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. Enquanto David usa a função, ele também não pode usar seus privilégios de “power-user” (usuário avançado) na conta de Desenvolvimento. Isso porque apenas um conjunto de permissões pode ser ativado por vez.

Importante

Trocar de perfis usando o AWS Management Console só funciona com 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 este cenário, consulte Como usar um ID externo ao conceder acesso aos seus recursos da AWS a terceiros e How to Enable Cross-Account Access to the AWS Management Console no blog de segurança da AWS.

O IAM oferece duas maneiras para David acessar a página Switch Role (Alternar função):

  • David recebe um link do administrador que aponta para uma configuração predefinida Switch Role (Trocar de perfil). 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 é escolher Switch Roles (Trocar de perfil).

  • 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 inserir manualmente os valores para tocar de perfil. Isso é ilustrado no procedimento a seguir.

Para assumir uma função

  1. David acessa o AWS Management Console usando seu usuário normal que está no grupo de usuários de Desenvolvimento.

  2. Ele escolhe o link que oadministrador enviou por e-mailparaele. Esse link leva David para a página Switch Role (Trocar de perfil) com as informações de ID ou alias da conta e o nome do perfil já preenchidas.

    —ou—

    David escolhe seu nome [menu Identity (Identidade)] na barra de navegação e, depois, escolhe Switch Roles (Trocar de perfil).

    Se essa for a primeira vez que David tenta acessar a página Alternar função dessa forma, primeiramente ele entrará na página Switch Role (Alternar função) de primeiro acesso. 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 Switch Role (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 IAM no momento. Para controlar essas informações, ele digita PRODUCTION na caixa de texto Display Name (Nome de exibição), escolhe 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. Quando concluído, David poderá voltar para as permissões originais. Para fazer isso, ele escolhe o nome de exibição do perfil PRODUÇÃO na barra de navegação e depois escolhe Back to David @ 111111111111 (Voltar para David em 111111111111).

  6. Da próxima vez que David desejar alternar funções e escolher o menu Identity (Identidade) na barra de navegação, ele verá a entrada “PRODUCTION” (Produção) no mesmo lugar da última vez. Ele pode simplesmente escolher essa entrada para alternar funções imediatamente sem inserir 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. Enquanto David estiver usando a função, ele também não pode usar seus privilégios de “power-user” (usuário avançado) na conta de Desenvolvimento, pois apenas um conjunto de permissões pode estar ativo 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 Configuração da AWS Command Line Interface no Guia do usuário da AWS Command Line Interface.

  2. Ele inicia o processo de mudança de função executando o seguinte comando para mudar para a função UpdateApp na conta de Produção. Ele recebeu o ARN de função do 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 precisa na seção Credentials 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. Porém, você pode inserir 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 lista o conteúdo do bucket do S3 com o comando a seguir.

    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 recursos de outros serviços da AWS, consulte a documentação da AWS CLI desse serviço para obter os comandos e a sintaxe necessários para referenciar seus recursos.

Uso da AssumeRole (API da AWS)

Quando David precisa fazer uma atualização na conta de Produção no código, ele faz uma chamada do tipo AssumeRole para assumir a função de UpdateApp. A chamada retorna credenciais temporárias que ele pode usar para acessar o bucket productionapp na conta de 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 de Produção, mesmo tendo permissões de “power-user” (usuário avançado) na conta de Desenvolvimento.

Para assumir uma função

  1. David chama AssumeRole como parte de um aplicativo. Ele deve especificar o UpdateAppARN: 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 Alternância para uma função do IAM (API da AWS).

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 uma política de grupo de usuários para controlar quais usuários do IAM podem acessar a função. Como resultado, os desenvolvedores da conta de Desenvolvimento podem fazer atualizações no bucket productionapp na conta de Produção usando credenciais temporárias.