Tutorial do IAM: Delegar acesso entre contas da AWS usando funções do IAM
Importante
As práticas recomendadas do IAM aconselham exigir que os usuários humanos usem a federação com um provedor de identidades para acessar a AWS usando credenciais temporárias em vez de usuários do IAM com credenciais de longo prazo.
Este tutorial ensina a usar um perfil para delegar acesso a recursos em diferentes Contas da AWS, denominadas Destino e Origem. 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 fazer login em outra conta para acessar recursos em diferentes Contas 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.
Neste tutorial, a conta Destino gerencia os dados de aplicações acessados por diferentes aplicações e equipes. 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 Origem, em que tem dois perfis de usuário do IAM: Desenvolvedores e Analistas. Desenvolvedores e analistas usam a conta Origem para gerar dados compartilhados por vários microsserviços. Ambos os perfis têm permissões para trabalhar na conta Origem e acessar os recursos ali existentes. Periodicamente, um desenvolvedor deve atualizar os dados compartilhados na conta Destino. Os desenvolvedores armazenam esses dados em um bucket do Amazon S3 denominado shared-container
.
Ao final deste tutorial, você terá o seguinte:
-
Usuários na conta Origem (a conta confiável) com permissão para assumir um determinado perfil na conta Destino.
-
Um perfil na conta Destino (a conta confiável) com permissão para acessar um determinado bucket do Amazon S3.
-
O bucket
shared-container
na conta Destino.
Os desenvolvedores podem usar o perfil no AWS Management Console para acessar o bucket shared-container
na conta Destino. Eles também podem acessar o bucket usando chamadas de API autenticadas por credenciais temporárias fornecidas pelo perfil. As tentativas semelhantes de usar um perfil feitas por um analista falham.
Esse fluxo de trabalho tem três etapas básicas:
- Para criar um perfil na conta Destino
-
Primeiro, você usa o AWS Management Console para estabelecer confiança entre a conta Destino (número de identificação 999999999999) e a conta Origem (número de identificação 111111111111). Você começa criando um perfil do IAM denominado UpdateData. Ao criar o perfil, você define a conta Origem como uma entidade confiável e especifica uma política de permissões que deixa os usuários confiáveis atualizarem o bucket
shared-container
. - Conceder acesso ao perfil
-
Nesta sessão, você modifica a política de perfil para negar aos analistas acesso ao perfil
UpdateData
. Porque os analistas têm acesso de PowerUser nesse cenário, e você deve negar explicitamente a capacidade de usar o perfil. - Teste o acesso alternando funções
-
Por fim, como desenvolvedor, você usa o perfil
UpdateData
para atualizar o bucketshared-container
na conta Destino. Você verá como acessar a função por meio do console da AWS da AWS CLI e da API.
Considerações
Antes de usar perfis do IAM para delegar acesso aos recursos nas Contas da AWS, é importante levar em conta o seguinte:
-
Você não pode alternar um perfil ao fazer login como Usuário raiz da conta da AWS.
-
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çãoaws-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 contaaws
padrão. -
Você pode usar o AWS IAM Identity Center para facilitar a autenticação única (SSO) de Contas da AWS externas (contas fora da sua AWS Organizations) usando Security Assertion Markup Language (SAML). Para obter detalhes, consulte Integrate external Contas da AWS into AWS IAM Identity Center for central access management with independent billing using SAML 2.0
-
Você pode associar perfis a recursos da AWS, como instâncias do Amazon EC2 ou funções do AWS Lambda. Para obter detalhes, consulte Criar um perfil para delegar permissões a um serviço da AWS.
-
Se você quiser que uma aplicação assuma um perfil em outra Conta da AWS, poderá usar o AWS SDK para assumir perfis entre contas. Para obter mais informações, consulte Authentication and access no AWS SDKs and Tools Reference Guide.
-
Trocar de função usando o AWS Management Console só funciona com contas que não exijam um
ExternalId
. Por exemplo, vamos supor que você conceda acesso à sua conta a terceiros e exija umExternalId
em um elementoCondition
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 deve fornecer um valor paraExternalId
. Para obter mais informações sobre esse cenário, consulte Acesso às Contas da AWS de propriedade de terceiros e How to enable cross account access to the AWS Management Consoleno AWS Security Blog.
Pré-requisitos
Este tutorial pressupõe que você já tenha os seguintes itens configurados:
-
Duas Contas da AWS distintas que você pode usar, uma para representar a conta Origem e outra para representar a conta Destino.
-
Usuários e perfis na conta Origem criados e configurados da seguinte forma:
Título do cargo Usuário Permissões Desenvolvedor David Ambos os usuários podem entrar e usar o AWS Management Console na conta Origem. Analista Jane -
Você não precisa criar nenhum usuário na conta Destino.
-
Um bucket do Amazon S3 criado na conta Destino. Você pode chamá-lo de
shared-container
neste tutorial, mas como os nomes dos buckets do S3 devem ser globalmente exclusivos, você deve usar um bucket com outro nome.
Para criar um perfil na conta Destino
É possível permitir que os usuários de uma Conta da AWS acessem recursos em outra Conta da AWS. Neste tutorial, faremos isso criando um perfil que define quem pode acessá-lo e quais permissões são concedidas aos usuários que alternam para ele.
Nesta etapa do tutorial, você cria o perfil na conta Destino e especifica a conta Origem 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 shared-container
. Qualquer pessoa com permissão para usar a função pode ler e gravar no bucket shared-container
.
Antes de poder criar um perfil, você precisa do ID de conta da Conta da AWS Origem. Cada Conta da AWS tem um identificador ID de conta exclusivo e ela atribuído.
Para obter o ID da Conta da AWS Origem
-
Faça login no AWS Management Console como administrador da conta Origem e abra o console do IAM em https://console.aws.amazon.com/iam/
. -
No console do IAM, escolha seu nome de usuário na barra de navegação no canto superior direito. Geralmente, ele é assim:
username
@account_ID_number_or_alias
.Nesse cenário, você pode usar o ID de conta 111111111111 para a conta Origem. No entanto, é necessário usar um ID de conta válido se você usar este cenário em seu ambiente de teste.
Para criar um perfil na conta Destino que possa ser usado pela conta Origem
-
Entre no AWS Management Console como administrador da conta Destino e abra o console do IAM.
-
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
shared-container
. 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).
-
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:::shared-container
) 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:::shared-container
" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": "arn:aws:s3:::shared-container/*
" } ] }A ação
ListAllMyBuckets
concede permissão para listar todos os buckets de propriedade do remetente autenticado da solicitação. A permissãoListBucket
concede aos usuários a habilidade de visualizar objetos no bucketshared-container
. As permissõesGetObject
,PutObject
,DeleteObject
concedem aos usuários a capacidade de visualizar, atualizar e excluir o conteúdo no bucketshared-container
.nota
É possível alternar entre as opções de editor Visual e JSON a qualquer momento. Porém, se você fizer alterações ou escolher Avançar no editor Visual, o IAM poderá reestruturar a política a fim de otimizá-la para o editor visual. Para obter mais informações, consulte Reestruturação da política.
-
Na página Revisar e criar, digite
read-write-app-bucket
para o nome da política. Revise as permissões concedidas pela política e depois escolha Criar política para salvar seu trabalho.As novas políticas aparecem na lista de políticas gerenciadas.
-
No painel de navegação, escolha Funções e Criar função.
-
Selecione o tipo de perfil Uma Conta da AWS.
-
Em ID da conta, digite a ID da conta Origem.
Este tutorial usa o ID da conta de exemplo
111111111111
para a conta Origem. Você deve usar um ID de conta válido. Se você usar um ID de conta inválido, como111111111111
, 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 obter mais informações, consulte Código da autenticação multifator no IAM da AWS.
-
Selecione Next: Permissions (Próximo: permissões) para definir as permissões associadas à função.
-
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.
Em seguida, escolha Próximo.
-
(Opcional) Adicione metadados à função anexando etiquetas como pares de chave-valor. Para obter mais informações sobre como usar tags no IAM, consulte Tags para recursos do AWS Identity and Access Management.
-
(Opcional) Em Descrição da função, insira uma descrição para a nova função.
-
Depois de revisar a função, escolha Criar função.
A função
UpdateData
é 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 o perfil de desenvolvedor na conta Origem, você especifica o ARN do perfil da conta Destino para conceder ou negar as permissões.
Para obter o ARN para UpdateData
-
No painel de navegação do console do IAM, escolha Perfis.
-
Na lista de funções, escolha
UpdateData
. -
Na seção Resumo do painel de detalhes, copie o valor de ARN da função.
A conta Destino tem o ID de conta 999999999999, portanto, o ARN do perfil é
arn:aws:iam::999999999999:role/UpdateData
. Certifique-se de fornecer o ID da Conta da AWS verdadeiro para a conta Destino.
Neste ponto, você estabeleceu confiança entre as contas Destino e Origem. Você fez isso criando um perfil na conta Destino que identifica a conta Origem como uma entidade principal confiável. Você também definiu o que os usuários que passarem para a função UpdateData
podem fazer.
Em seguida, modifique as permissões para o perfil Desenvolvedor.
Conceder acesso ao perfil
Nesse momento, os analistas e os desenvolvedores têm permissões para gerenciar os dados na conta Origem. Use as seguintes etapas necessárias para adicionar permissões a fim de permitir alternar para a função.
Para modificar o perfil Desenvolvedores para permitir que eles alternem para o perfil UpdateData
-
Entre como administrador na conta Origem e abra o console do IAM.
-
Escolha Perfis e depois Desenvolvedores.
-
Escolha a guia Permissions (Permissões), Add permissions (Adicionar permissões) e Create inline policy (Criar política em linha).
-
Selecione a guia JSON.
-
Adicione a seguinte instrução de política para permitir a ação
AssumeRole
no perfilUpdateData
na conta Destino. Certifique-se de alterarDESTINATION-ACCOUNT-ID
no elementoResource
para o ID da Conta da AWS real da conta Destino.{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::
DESTINATION-ACCOUNT-ID
:role/UpdateData" } }O efeito
Allow
permite explicitamente que o grupo Desenvolvedores acesse o perfilUpdateData
na conta Destino. Qualquer desenvolvedor que tente acessar a função é bem-sucedido. -
Escolha Revisar política.
-
Digite um Nome, como, por exemplo,
allow-assume-S3-role-in-destination
. -
Escolha 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 Analistas para garantir que eles não possam assumir o perfil. 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 perfil Analistas para negar permissão de assumir o perfil UpdateData
-
Escolha Perfis e depois Analistas.
-
Escolha a guia Permissions (Permissões), Add permissions (Adicionar permissões) e Create inline policy (Criar política em linha).
-
Selecione a guia JSON.
-
Adicione a instrução de política a seguir para negar a ação
AssumeRole
na funçãoUpdateData
. Certifique-se de alterarDESTINATION-ACCOUNT-ID
no elementoResource
para o ID da Conta da AWS real da conta Destino.{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::
DESTINATION-ACCOUNT-ID
:role/UpdateData" } }O efeito
Deny
nega explicitamente ao grupo Analistas acesso ao perfilUpdateData
na conta Destino. Qualquer analista que tente acessar o perfil receberá uma mensagem de acesso negado. -
Escolha Revisar política.
-
Digite um nome, como
deny-assume-S3-role-in-destination
. -
Escolha Criar política.
O perfil Desenvolvedores agora tem permissões para usar o perfil UpdateData
na conta Destino. O perfil Analistas é impedido de usar o perfil UpdateData
.
Em seguida, você verá como David, um desenvolvedor, pode acessar o bucket shared-container
na conta Destino. David pode acessar o bucket no AWS Management Console, na AWS CLI ou na API do AWS.
Teste o acesso alternando funções
Após concluir as duas primeiras etapas deste tutorial, você terá um perfil que concede acesso a um recurso na conta Destino. Você também terá um perfil na conta Origem com usuários que têm permissão para usar esse perfil. Esta etapa discute como testar a alternância para essa função no AWS Management Console, na AWS CLI e na API da AWS.
Para obter ajuda com os problemas comuns que você pode encontrar ao trabalhar com perfis do IAM, consulte Solucionar problemas de perfis do IAM.
Alternar funções (console)
Se David precisar atualizar os dados na conta Destino no AWS Management Console, ele poderá fazer isso usando Switch Role. 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. Depois, ele poderá usar o console para trabalhar com o bucket shared-container
, mas não poderá trabalhar com nenhum outro recurso em Destino. Enquanto David usar o perfil, não poderá usar também seus privilégios de usuário avançado na conta Origem. Isso porque apenas um conjunto de permissões pode ser ativado por vez.
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 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 é escolher Switch Roles (Trocar de função).
-
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 função. Isso é ilustrado no procedimento a seguir.
Como assumir um perfil
-
David entra no AWS Management Console usando seu usuário normal no perfil Origem.
-
Ele escolhe o link que oadministrador enviou por e-mailparaele. Esse link leva David à página Switch Role (Trocar de função) com as informações de ID ou alias da conta e nome da função já preenchidas.
—ou—
David escolhe os nomes (menu Identity [Identidade]) na barra de navegação e, depois, escolhe Switch Roles (Trocar de função).
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 perfis pode permitir aos usuários gerenciar os recursos entre Contas da AWS. David deve selecionar Switch Role (Alternar função) nessa página para concluir o restante do procedimento.
-
Em seguida, para acessar o perfil, David deve digitar manualmente o número do ID da conta Destino (
999999999999
) e o nome do perfil (UpdateData
).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
Destination
na caixa de texto Display Name (Nome de exibição), escolhe a opção na cor vermelha e escolhe Switch Role (Alternar função). -
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
UpdateData
tenha permissões. -
Quando concluído, David poderá voltar para as permissões originais. Para isso, ele escolhe o nome de exibição do perfil Destino na barra de navegação e depois escolhe Voltar para David em 111111111111.
-
Da próxima vez que David desejar alternar perfis e escolher o menu Identidade na barra de navegação, ele verá a entrada Destino no mesmo local em que estava 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 Destino na linha de comando, poderá fazer isso usando a AWS CLIaws 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 o perfil, não poderá usar também seus privilégios de usuário avançado na conta Origem, pois apenas um conjunto de permissões pode estar ativo de cada 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.
Como assumir um perfil
-
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 comandoaws configure
. Para obter mais informações, consulte Configuração da AWS Command Line Interface no Guia do usuário da AWS Command Line Interface. -
Ele inicia o processo de alternar perfis executando o comando a seguir para alternar para o perfil
UpdateData
na conta Destino. 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/UpdateData" --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" } }
-
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. -
-
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.
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.
Para obter detalhes sobre como usar as ferramentas para Windows Powershell, consulte Alternar para um perfil do IAM (Ferramentas para Windows PowerShell)
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
UpdateData
.Importante
Você pode salvar as definições de configuração usadas com frequência e credenciais em arquivos que são mantidos pela AWS CLI. Para obter mais informações, consulte Using existing configuration and credentials files no AWS Command Line Interface User Guide.
-
Execute o comando para acessar os recursos na conta Destino. Neste exemplo, David lista o conteúdo do bucket do S3 com o comando a seguir.
aws s3 ls s3://shared-container
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 Destino no código, ele faz uma chamada AssumeRole
para assumir o perfil UpdateData
. A chamada retorna credenciais temporárias que ele pode usar para acessar o bucket shared-container
na conta Destino. Com essas credenciais, David pode fazer chamadas de API para atualizar o bucket shared-container
. Porém, ele não pode fazer chamadas de API para acessar nenhum outro recurso na conta Destino, mesmo tendo permissões de usuário avançado na conta Origem.
Como assumir um perfil
-
David chama
AssumeRole
como parte de um aplicativo. Ele deve especificar o ARNUpdateData
:arn:aws:iam::999999999999:role/UpdateData
.A resposta da chamada
AssumeRole
inclui as credenciais temporárias com umAccessKeyId
e umSecretAccessKey
. Também inclui um horário deExpiration
que indica quando as credenciais expiram, e é necessário solicitar novas. Quando você configura o encadeamento de perfis com o AWS SDK, muitos provedores de credenciais atualizam automaticamente as credenciais antes que expirem. -
Com as credenciais temporárias, David faz uma chamada
s3:PutObject
para atualizar o bucketshared-container
. Ele pode passar as credenciais para a chamada de API como o parâmetroAuthParams
. Como as credenciais temporárias do perfil têm apenas acesso de leitura e gravação ao bucketshared-container
, todas as outras ações na conta Destino são negadas.
Para obter um exemplo de código (usando Python), consulte Alternar para um perfil do IAM (API da AWS).
Recursos adicionais
Os seguintes recursos podem ajudar você a saber mais sobre os tópicos deste tutorial:
-
Para obter mais informações sobre os usuários do IAM, consulte Identidades do IAM (usuários, grupos de usuários e funções).
-
Para mais informações sobre os buckets do Amazon S3, consulte Criar um bucket no Guia do usuário do Amazon Simple Storage Service.
-
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?.
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. Depois, você modificou uma política de perfil para controlar quais usuários do IAM; podem acessar o perfil. Como resultado, da conta Origem os desenvolvedores podem fazer atualizações no bucket shared-container
na conta Destino usando credenciais temporárias.