

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á.

# Uso e ferramentas de autenticação AWS SDKs e acesso
<a name="access"></a>

Quando você desenvolve um aplicativo AWS SDK ou usa AWS ferramentas para usar Serviços da AWS, você deve estabelecer como seu código ou ferramenta se autentica. AWS Você pode configurar o acesso programático aos AWS recursos de maneiras diferentes, dependendo do ambiente em que o código é executado e do AWS acesso disponível para você. 

As opções abaixo fazem parte da [cadeia de fornecedores de credenciais](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html#credentialProviderChain). Isso significa que, ao configurar seus `credentials` arquivos compartilhados AWS `config` e compartilhados adequadamente, seu AWS SDK ou ferramenta descobrirá e usará automaticamente esse método de autenticação.

## Escolher um método para autenticar o código da aplicação
<a name="authDecisionTree"></a>

Escolha um método para autenticar as chamadas feitas AWS pelo seu aplicativo.

### Você está executando código DENTRO de um AWS service (Serviço da AWS) (como Amazon EC2, Lambda, Amazon ECS, Amazon EKS,)? CodeBuild
<a name="a"></a>

Se seu código for executado AWS, as credenciais poderão ser disponibilizadas automaticamente para seu aplicativo. Por exemplo, se a aplicação estiver hospedada no Amazon Elastic Compute Cloud e houver um perfil do IAM associado a esse recurso, as credenciais serão disponibilizadas automaticamente para a aplicação. Da mesma forma, se você usar contêineres do Amazon ECS ou do Amazon EKS, as credenciais definidas para o perfil do IAM poderão ser obtidas automaticamente pelo código sendo executado dentro do contêiner por meio da [cadeia de fornecedores de credenciais](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html#credentialProviderChain) do SDK.

#### O código está em uma instância do Amazon Elastic Compute Cloud?
<a name="a1"></a>

[Usando funções do IAM para autenticar aplicativos implantados na Amazon EC2](access-iam-roles-for-ec2.md): use o perfil do IAM para executar sua aplicação com segurança em uma instância do Amazon EC2.

#### Seu código está em uma AWS Lambda função?
<a name="a2"></a>

O Lambda cria um perfil de execução com permissões mínimas quando você [cria uma função do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html). O AWS SDK ou a ferramenta então usa automaticamente a função do IAM anexada ao Lambda em tempo de execução, por meio do ambiente de execução do Lambda.

#### Seu código está no Amazon Elastic Container Service (no Amazon EC2 ou no AWS Fargate Amazon ECS)?
<a name="a3"></a>

Use o perfil do IAM para a tarefa. Você deve [criar um perfil de tarefa](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) e especificar esse perfil na [definição de tarefa do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html). O SDK ou a ferramenta da AWS então usam automaticamente o perfil do IAM atribuído à tarefa no runtime por meio dos metadados do Amazon ECS.

#### O código está no Amazon Elastic Kubernetes Service?
<a name="a4"></a>

Recomendamos que você use as [identidades de Pods do Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html).

Observação: se você achar que os [perfis do IAM para contas de serviço](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) (IRSA) podem atender melhor às suas necessidades específicas, consulte [Comparação entre o EKS Pod Identity e o IRSA](https://docs.aws.amazon.com/eks/latest/userguide/service-accounts.html#service-accounts-iam) no **Amazon EKS User Guide**.

#### Seu código está sendo executado em AWS CodeBuild
<a name="a5"></a>

Consulte [Uso de políticas baseadas em identidade](https://docs.aws.amazon.com/codebuild/latest/userguide/auth-and-access-control-iam-identity-based-access-control.html) para. CodeBuild

#### Seu código está em outro AWS service (Serviço da AWS)?
<a name="a6"></a>

Veja o guia dedicado ao seu AWS service (Serviço da AWS). Quando você executa o código no AWS, a [cadeia de fornecedores de credenciais](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html#credentialProviderChain) do SDK pode obter e atualizar automaticamente as credenciais para você.

### Você está criando aplicações móveis ou aplicações web baseadas em cliente?
<a name="b"></a>

Se você estiver criando aplicativos móveis ou aplicativos web baseados em clientes que exigem acesso AWS, crie seu aplicativo para que ele solicite credenciais de AWS segurança temporárias de forma dinâmica usando a federação de identidades da web. 

Com a federação de identidades da web, você não precisa criar código de login personalizado nem gerenciar suas próprias identidades de usuários. Em vez disso, os usuários do aplicativo podem fazer login usando um provedor de identidades (IdP) externo conhecido, como Login with Amazon, Facebook, Google ou qualquer outro IdP compatível com OpenID Connect (OIDC). Eles podem receber um token de autenticação e, em seguida, trocar esse token por credenciais de segurança temporárias AWS nesse mapa para uma função do IAM com permissões para usar os recursos em seu Conta da AWS. 

Para saber mais sobre como configurar isto para o seu SDK ou ferramenta, consulte [Assumir uma função com identidade da web ou OpenID Connect AWS SDKs para autenticação e ferramentas](access-assume-role-web.md). 

Para aplicações móveis, recomendamos o uso do Amazon Cognito. O Amazon Cognito atua como um agente de identidades e realiza a maioria do trabalho de federação para você. Para obter mais informações, consulte [Usar Amazon Cognito para aplicações móveis](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc_cognito.html) no *Guia do usuário do IAM*. 

### Você está desenvolvendo e executando o código LOCALMENTE?
<a name="c"></a>

Nós recomendamos[Usando credenciais do console para autenticação e ferramentas AWS SDKs](access-login.md).

Depois de um rápido fluxo de autenticação baseado em navegador, gera AWS automaticamente credenciais temporárias que funcionam em ferramentas de desenvolvimento locais, como a CLI e. AWS Ferramentas da AWS para PowerShell AWS SDKs 

#### Se você usa o Identity Center para acessar a AWS conta
<a name="idc"></a>

Use o IAM Identity Center para autenticar o AWS SDK e as ferramentas se você já tiver acesso às AWS contas and/or necessárias para gerenciar o acesso da sua força de trabalho. Como prática recomendada de segurança, recomendamos o uso AWS Organizations com o IAM Identity Center para gerenciar o acesso em todas as suas AWS contas. Você pode criar usuários no IAM Identity Center, usar o Microsoft Active Directory, usar um provedor de identidade (IdP) SAML 2.0 ou federar individualmente seu AWS IdP às contas. Para verificar se sua região é compatível com o IAM Identity Center, consulte os endpoints e cotas do [Usando o IAM Identity Center para autenticar o AWS SDK e as ferramentas](access-sso.md) IAM Identity Center na Referência geral da Amazon Web Services.

#### Se você estiver procurando outras formas de se autenticar
<a name="owa"></a>

Crie um usuário do IAM com menos privilégios com permissões para `sts:AssumeRole` entrar na sua função de destino. Em seguida, configure seu perfil para assumir uma função usando uma `source_profile` configuração para esse usuário.

Você também pode usar credenciais temporárias do IAM por meio de variáveis de ambiente ou do arquivo de AWS credenciais compartilhado. Consulte Uso de credenciais de curto prazo para autenticação AWS SDKs e ferramentas.

Observação: somente em ambientes de sandbox ou de aprendizado, você pode considerar o uso de credenciais de longo prazo para autenticação AWS SDKs e ferramentas.

### Esse código está sendo executado on-premises ou em uma VM híbrida/sob demanda (como, por exemplo, um servidor que lê ou grava no Amazon S3, ou o Jenkins implantando na nuvem)?
<a name="d"></a>

#### Você está usando certificados de cliente X.509?
<a name="d1"></a>

Sim: consulte [Usando o IAM Roles Anywhere para autenticação AWS SDKs e ferramentas](access-rolesanywhere.md). Você pode usar o IAM Roles Anywhere para obter credenciais de segurança temporárias no IAM para cargas de trabalho, como servidores, contêineres e aplicativos executados fora do. AWS Para usar o IAM Roles Anywhere, seu workload deve usar certificados X.509.

#### O ambiente pode se conectar com segurança a um provedor de identidade federado (como Microsoft Entra ou Okta) para solicitar credenciais temporárias? AWS
<a name="d2"></a>

##### Sim: use [Provedor de credenciais de processo](feature-process-credentials.md)
<a name="d2a"></a>

Use [Provedor de credenciais de processo](feature-process-credentials.md) para recuperar credenciais automaticamente no runtime. Esses sistemas podem usar uma ferramenta auxiliar ou um plug-in para obter as credenciais e podem assumir um perfil do IAM nos bastidores usando `sts:AssumeRole`.

##### Não: use credenciais temporárias injetadas via AWS Secrets Manager
<a name="d2b"></a>

Use credenciais temporárias injetadas via. AWS Secrets Manager Para ver opções para obter chaves de acesso de curta duração, consulte [Solicitar credenciais de segurança temporárias](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) no *Guia do usuário do IAM*. Para ver opções para armazenar essas credenciais temporárias, consulte [AWS teclas de acesso](feature-static-credentials.md).

Você pode usar essas credenciais para recuperar com segurança permissões de aplicação mais amplas do [Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html), onde seus segredos de produção ou credenciais de longa duração baseadas em perfil podem ser armazenados.

### Você está usando uma ferramenta de terceiros que não está disponível AWS?
<a name="e"></a>

Use a documentação escrita por seu provedor externo para obter a melhor orientação sobre como obter credenciais.

#### Se seu provedor externo não tiver fornecido a documentação, você poderá injetar credenciais temporárias com segurança?
<a name="e1"></a>

Sim: use variáveis de ambiente e AWS STS credenciais temporárias.

Não: use as chaves de acesso estáticas armazenadas no gerenciador de segredos criptografados (último recurso).

## Métodos de autenticação
<a name="authOptions"></a>

**Métodos de autenticação para código executado em um AWS ambiente**

Se seu código for executado AWS, as credenciais poderão ser disponibilizadas automaticamente para seu aplicativo. Por exemplo, se a aplicação estiver hospedada no Amazon Elastic Compute Cloud e houver um perfil do IAM associado a esse recurso, as credenciais serão disponibilizadas automaticamente para a aplicação. Da mesma forma, se você usar contêineres do Amazon ECS ou do Amazon EKS, as credenciais definidas para o perfil do IAM poderão ser obtidas automaticamente pelo código executado dentro do contêiner por meio da cadeia de fornecedores de credenciais do SDK.
+ [Usando funções do IAM para autenticar aplicativos implantados na Amazon EC2](access-iam-roles-for-ec2.md): use o perfil do IAM para executar sua aplicação com segurança em uma instância do Amazon EC2. 
+  Você pode interagir programaticamente com o AWS uso do IAM Identity Center das seguintes formas:
  + Use [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/)para executar AWS CLI comandos a partir do console.
  + [Para experimentar o espaço de colaboração baseado em nuvem para equipes de desenvolvimento de software, considere usar a Amazon. CodeCatalyst](https://docs.aws.amazon.com/codecatalyst/latest/userguide/welcome.html) 

**Autenticação por meio de um provedor de identidades baseado na Web: aplicativos web baseados em clientes ou móvel**

Se você estiver criando aplicativos móveis ou aplicativos web baseados em clientes que exigem acesso AWS, crie seu aplicativo para que ele solicite credenciais de AWS segurança temporárias de forma dinâmica usando a federação de identidades da web. 

Com a federação de identidades da web, você não precisa criar código de login personalizado nem gerenciar suas próprias identidades de usuários. Em vez disso, os usuários do aplicativo podem fazer login usando um provedor de identidades (IdP) externo conhecido, como Login with Amazon, Facebook, Google ou qualquer outro IdP compatível com OpenID Connect (OIDC). Eles podem receber um token de autenticação e, em seguida, trocar esse token por credenciais de segurança temporárias AWS nesse mapa para uma função do IAM com permissões para usar os recursos em seu Conta da AWS. 

Para saber mais sobre como configurar isto para o seu SDK ou ferramenta, consulte [Assumir uma função com identidade da web ou OpenID Connect AWS SDKs para autenticação e ferramentas](access-assume-role-web.md). 

Para aplicações móveis, recomendamos o uso do Amazon Cognito. O Amazon Cognito atua como um agente de identidades e realiza a maioria do trabalho de federação para você. Para obter mais informações, consulte [Usar Amazon Cognito para aplicações móveis](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc_cognito.html) no *Guia do usuário do IAM*. 

**Métodos de autenticação para código executado localmente (não na AWS)**
+ [Usando credenciais do console para autenticação e ferramentas AWS SDKs](access-login.md)— Esse recurso funciona com a interface de linha de AWS comando e com as ferramentas para PowerShell e fornece credenciais atualizáveis que funcionam em ferramentas de desenvolvimento locais, como AWS CLI, Tools for e. PowerShell AWS
+ [Usando o IAM Identity Center para autenticar o AWS SDK e as ferramentas](access-sso.md)— Como prática recomendada de segurança, recomendamos o uso AWS Organizations com o IAM Identity Center para gerenciar o acesso em todos os seus Contas da AWS. Você pode criar usuários Centro de Identidade do AWS IAM, usar o Microsoft Active Directory, usar um provedor de identidade (IdP) SAML 2.0 ou federar seu IdP individualmente em. Contas da AWS Para verificar se sua Região é compatível com o IAM Identity Center, consulte [Endpoints e cotas do Centro de Identidade do AWS IAM](https://docs.aws.amazon.com/general/latest/gr/sso.html) na *Referência geral da Amazon Web Services*. 
+ [Usando o IAM Roles Anywhere para autenticação AWS SDKs e ferramentas](access-rolesanywhere.md)— Você pode usar o IAM Roles Anywhere para obter credenciais de segurança temporárias no IAM para cargas de trabalho, como servidores, contêineres e aplicativos executados fora do. AWS Para usar o IAM Roles Anywhere, seu workload deve usar certificados X.509. 
+  [Assumindo uma função com AWS credenciais para autenticação AWS SDKs e ferramentas](access-assume-role.md)— Você pode assumir uma função do IAM para acessar temporariamente AWS recursos aos quais talvez não tivesse acesso de outra forma. 
+  [Usando chaves de AWS acesso para autenticação AWS SDKs e ferramentas](access-users.md)— Outras opções que podem ser menos convenientes ou aumentar o risco de segurança de seus AWS recursos. 

**Mais informações sobre gerenciamento de acesso**

O *Guia do usuário do IAM* tem as seguintes informações sobre o controle seguro do acesso aos AWS recursos:
+ [Identidades do IAM (usuários, grupos de usuários e funções)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) — Entenda os fundamentos das identidades em. AWS
+ [Melhores práticas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html): recomendações de segurança a serem seguidas ao desenvolver aplicativos da AWS de acordo com o [modelo de responsabilidade compartilhada](https://aws.amazon.com/compliance/shared-responsibility-model/).

A *Referência geral da Amazon Web Services* tem noções básicas sobre o seguinte:
+ [Entender e obter suas credenciais AWS](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html): opções de chave de acesso e práticas de gerenciamento para acesso programático e de console.

**Plug-in de propagação de identidades confiáveis (TIP) do IAM Identity Center para acessar Serviços da AWS**
+ [Usando o plugin TIP para acessar Serviços da AWS](access-tip.md)— Se você estiver criando um aplicativo para o Amazon Q Business ou outro serviço que ofereça suporte à propagação de identidade confiável e estiver usando o AWS SDK para Java ou o AWS SDK para JavaScript, poderá usar o plug-in TIP para uma experiência de autorização simplificada. 

## ID do builder AWS
<a name="bid"></a>

Você ID do builder AWS complementa qualquer um Contas da AWS que você já possua ou queira criar. Enquanto um Conta da AWS atua como um contêiner para AWS os recursos que você cria e fornece um limite de segurança para esses recursos, você ID do builder AWS representa você como um indivíduo. Você pode fazer login com você ID do builder AWS para acessar ferramentas e serviços para desenvolvedores, como Amazon Q e Amazon CodeCatalyst.
+ [Faça login no](https://docs.aws.amazon.com/signin/latest/userguide/sign-in-aws_builder_id.html) *Guia do Início de Sessão da AWS usuário* — Saiba como criar e usar um ID do builder AWS e saiba o que o Builder ID fornece. ID do builder AWS
+ [CodeCatalystconceitos - ID do builder AWS](https://docs.aws.amazon.com/codecatalyst/latest/userguide/concepts.html#sign-in-concept) no *Guia CodeCatalyst do usuário da Amazon* — Saiba como CodeCatalyst usa um ID do builder AWS.

# Usando credenciais do console para autenticação e ferramentas AWS SDKs
<a name="access-login"></a>

Usar as credenciais do console é o método recomendado para fornecer AWS credenciais ao desenvolver um AWS aplicativo em seu ambiente local ou em outros ambientes de serviços que não sejam de AWS computação. Se você estiver desenvolvendo em um AWS recurso, como o Amazon Elastic Compute Cloud (Amazon EC2) AWS CloudShell ou, recomendamos que você obtenha credenciais desse serviço.

Você também pode se autenticar por meio do IAM Identity Center[Usando o IAM Identity Center para autenticar o AWS SDK e as ferramentas](access-sso.md). Essa opção é uma forma comum de as organizações gerenciarem o acesso de sua força de trabalho e exige que o Identity Center esteja ativado.

## Como funciona?
<a name="access-login-how"></a>

O [login para desenvolvimento AWS local usando as credenciais do console](https://docs.aws.amazon.com/signin/latest/userguide/command-line-sign-in.html) permite que você use suas credenciais de login existentes do AWS Management Console para acesso programático aos serviços. AWS Depois de um fluxo de autenticação baseado em navegador, AWS gera credenciais temporárias que funcionam em ferramentas de desenvolvimento locais, como AWS CLI, Tools for e. PowerShell AWS SDKs Esse recurso simplifica o processo de configuração e gerenciamento de credenciais de AWS CLI, especialmente se você preferir a autenticação interativa em vez de gerenciar chaves de acesso de longo prazo.

Com esse processo, você pode se autenticar usando suas credenciais raiz criadas durante a configuração inicial da conta, usuários do IAM ou uma identidade federada do seu provedor de identidade.

Se você usar SDKs para desenvolvimento, os clientes do SDK usarão as credenciais temporárias por meio do. [AWS SDKs e ferramentas: provedores de credenciais padronizados](standardized-credentials.md) Você também pode configurar [Provedor de credenciais de login](feature-login-credentials.md) o.

A autenticação por meio do comando de login é suportada pela AWS CLI e pelas ferramentas para: PowerShell
+ [Faça login para desenvolvimento AWS local usando as credenciais do console](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sign-in.html)
+ [Faça login usando as credenciais do console](https://docs.aws.amazon.com/powershell/v5/userguide/creds-idc.html#login-con-creds) no guia do Ferramentas da AWS para PowerShell usuário

# Usando o IAM Identity Center para autenticar o AWS SDK e as ferramentas
<a name="access-sso"></a>

 Centro de Identidade do AWS IAM pode ser usado para fornecer AWS credenciais ao desenvolver um AWS aplicativo em ambientes de serviços não AWS computacionais. Se você estiver desenvolvendo em um AWS recurso, como o Amazon Elastic Compute Cloud (Amazon EC2) AWS Cloud9 ou, recomendamos que você obtenha credenciais desse serviço.

Use a autenticação do IAM Identity Center se você já usa o Identity Center para acessar a AWS conta ou precisa gerenciar o acesso de uma organização. 

Neste tutorial, você estabelece o acesso ao IAM Identity Center e o configura para seu SDK ou ferramenta usando o portal de AWS acesso e o. AWS CLI
+ O portal de AWS acesso é o local da web em que você faz login manualmente no IAM Identity Center. O formato da URL é `d-xxxxxxxxxx.awsapps.com/start` ou `your_subdomain.awsapps.com/start`. Quando conectado ao portal de AWS acesso, você pode visualizar Contas da AWS as funções que foram configuradas para esse usuário. Esse procedimento usa o portal de AWS acesso para obter os valores de configuração necessários para o processo de SDK/tool autenticação. 
+ O AWS CLI é usado para configurar seu SDK ou ferramenta para usar a autenticação do IAM Identity Center para chamadas de API feitas pelo seu código. Esse processo único atualiza seu AWS `config` arquivo compartilhado, que é usado pelo SDK ou pela ferramenta quando você executa o código. 

## Pré-requisitos
<a name="prereq-auth"></a>

Antes de iniciar este procedimento, você deverá ter concluído o seguinte:
+ Se você não tiver um Conta da AWS, [inscreva-se em um Conta da AWS](https://portal.aws.amazon.com/billing/signup).
+ Se você ainda não o fez, [habilite o IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-set-up-for-idc.html) seguindo as instruções do *Centro de Identidade do AWS IAM User Guide*.

## Configure o acesso programático usando o Centro de Identidade do IAM
<a name="idcGettingStarted"></a>

### Etapa 1: Estabelecer o acesso e selecionar o conjunto de permissões apropriado
<a name="establishAccess"></a>

Escolha um dos métodos a seguir para acessar suas AWS credenciais.

#### Não estabeleci acesso por meio do IAM Identity Center
<a name="idc-access"></a>

1. Adicione um usuário e permissões administrativas seguindo o procedimento [Configure user access with the default IAM Identity Center directory](https://docs.aws.amazon.com/singlesignon/latest/userguide/quick-start-default-idc.html) do *Centro de Identidade do AWS IAM User Guide*. 

1. O conjunto de permissões `AdministratorAccess` não deve ser usado para desenvolvimento normal. Em vez disso, recomendamos usar o conjunto predefinido de permissões `PowerUserAccess`, a menos que seu empregador tenha criado um conjunto de permissões personalizado com essa finalidade.

   Siga o mesmo procedimento [Configure user access with the default IAM Identity Center directory](https://docs.aws.amazon.com/singlesignon/latest/userguide/quick-start-default-idc.html), mas desta vez:
   + Em vez de criar o grupo `Admin team`, crie um grupo `Dev team` e faça essa substituição nas instruções de agora em diante.
   + Você pode usar o usuário existente, mas o usuário deve ser adicionado ao novo grupo `Dev team`.
   + Em vez de criar o grupo permissões `AdministratorAccess`, crie um grupo `PowerUserAccess` e faça essa substituição nas instruções de agora em diante.

   Quando terminar, você deverá ter seguinte:
   + Um grupo `Dev team`.
   + Um conjunto de permissões `PowerUserAccess` anexado ao grupo `Dev team`.
   + O usuário foi adicionado ao grupo `Dev team`.

1. Saia do portal e entre novamente para ver suas opções Contas da AWS e para `Administrator` ou`PowerUserAccess`. Selecione `PowerUserAccess` ao trabalhar com a ferramenta/SDK. 

#### Eu já tenho acesso AWS por meio de um provedor de identidade federado gerenciado pelo meu empregador (como Microsoft Entra ou Okta)
<a name="federated-access"></a>

Faça login AWS por meio do portal do seu provedor de identidade. Se o seu administrador de nuvem concedeu permissões a você `PowerUserAccess` (desenvolvedor), você vê o Contas da AWS que você tem acesso e seu conjunto de permissões. Ao lado do nome do seu conjunto de permissões, você vê opções para acessar as contas manual ou programaticamente usando esse conjunto de permissões. 

Implementações personalizadas podem resultar em experiências diferentes, como nomes de conjuntos de permissões diferentes. Se não tiver certeza sobre qual conjunto de permissões usar, entre em contato com a equipe de TI para obter ajuda. 

#### Eu já tenho acesso a AWS através do portal de AWS acesso gerenciado pelo meu empregador
<a name="accessportal-access"></a>

Faça login AWS por meio do portal de AWS acesso. Se o seu administrador de nuvem concedeu permissões `PowerUserAccess` (de desenvolvedor) a você, serão exibidas as Contas da AWS às quais você tem acesso e seu conjunto de permissões. Ao lado do nome do seu conjunto de permissões, você vê opções para acessar as contas manual ou programaticamente usando esse conjunto de permissões. 

#### Eu já tenho acesso AWS por meio de um provedor de identidade personalizado federado gerenciado pelo meu empregador
<a name="customfederated-access"></a>

Entre em contato com a equipe de TI para obter ajuda.

### Etapa 2: configuração SDKs e ferramentas para usar o IAM Identity Center
<a name="configureAccess"></a>

1.  Em sua máquina de desenvolvimento, instale a mais recente AWS CLI. 

   1. Consulte [Instalar ou atualizar a versão mais recente da AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) no *Guia do usuário da AWS Command Line Interface *. 

   1.  (Opcional) Para verificar se o AWS CLI está funcionando, abra um prompt de comando e execute o `aws --version` comando. 

1. Faça login no portal de AWS acesso. Seu empregador pode fornecer esse URL ou você pode recebê-lo em um e-mail seguindo a **Etapa 1: Estabelecer acesso**. Caso contrário, encontre a **URL do seu portal de AWS acesso** no **Painel** do [https://console.aws.amazon.com/singlesignon/](https://console.aws.amazon.com/singlesignon/). 

   1. No portal de AWS acesso, na guia **Contas**, selecione a conta individual a ser gerenciada. Os perfis do usuário serão exibidos. Escolha **Chaves de acesso** para obter credenciais de acesso programático ou por linha de comando para o conjunto apropriado de permissões. Use o conjunto de permissões `PowerUserAccess` predefinido ou qualquer conjunto de permissões que você ou seu empregador tenha criado para aplicar as permissões de privilégios mínimos para desenvolvimento. 

   1. Na caixa de diálogo **Obter credenciais**, selecione **MacOS e Linux** ou **Windows**, dependendo do sistema operacional.

   1. Selecione o método **Credenciais IAM Identity Center** para obter os valores `Issuer URL` e `SSO Region` necessários para a próxima etapa. Observação: `SSO Start URL` pode ser usado de modo intercambiável com `Issuer URL`.

1. No prompt de AWS CLI comando, execute o `aws configure sso` comando. Quando solicitado, insira os valores de configuração que você coletou na etapa anterior. Para obter detalhes sobre esse AWS CLI comando, consulte [Configurar seu perfil com o `aws configure sso` assistente](https://docs.aws.amazon.com/cli/latest/userguide/sso-configure-profile-token.html#sso-configure-profile-token-auto-sso). 

   1. No prompt `SSO Start URL`, insira o valor obtido para `Issuer URL`. 

   1.  Para o **nome do perfil CLI**, recomendamos que você insira *default* quando estiver começando. Para obter informações sobre como definir perfis não padrão (nomeados) e suas variáveis de ambiente associadas, consulte [Perfis](file-format.md#file-format-profile). 

1. (Opcional) No prompt de AWS CLI comando, confirme a identidade da sessão ativa executando o `aws sts get-caller-identity` comando. A resposta deve mostrar o conjunto de permissões do IAM Identity Center que você configurou. 

1. Se você estiver usando um AWS SDK, crie um aplicativo para seu SDK em seu ambiente de desenvolvimento.

   1. Para alguns SDKs, pacotes adicionais, como `SSO` e, `SSOOIDC` devem ser adicionados ao seu aplicativo antes que você possa usar a autenticação do IAM Identity Center. Para obter detalhes, consulte seu SDK específico.

   1.  Se você configurou anteriormente o acesso ao AWS, revise o AWS `credentials` arquivo compartilhado para verificar se há algum[AWS teclas de acesso](feature-static-credentials.md). Você deve remover todas as credenciais estáticas antes que o SDK ou a ferramenta usem as credenciais do IAM Identity Center devido à precedência [Entender a cadeia de provedores de credenciais](standardized-credentials.md#credentialProviderChain). 

 Para saber mais sobre como as ferramentas SDKs e usam e atualizam as credenciais usando essa configuração, consulte. [Como a autenticação do IAM Identity Center é resolvida AWS SDKs e as ferramentas](understanding-sso.md) 

Para definir as configurações do provedor do IAM Identity Center diretamente no arquivo `config` compartilhado, consulte [Provedor de credencial do IAM Identity Center](feature-sso-credentials.md) neste guia.

## Atualizar sessões de acesso ao portal
<a name="refreshSession"></a>

Seu acesso acabará expirando e o SDK ou a ferramenta encontrarão um erro de autenticação. Quando essa expiração ocorrerá depende da duração da sessão configurada. Para atualizar a sessão do portal de acesso novamente quando necessário, use o AWS CLI para executar o `aws sso login` comando. 

Você pode estender a duração da sessão do portal de acesso do IAM Identity Center e a duração da sessão do conjunto de permissões. Isso aumenta a quantidade de tempo que você pode executar o código antes de precisar entrar manualmente novamente com a AWS CLI. Para saber mais, consulte os seguintes tópicos no *Manual do usuário do Centro de Identidade do AWS IAM *:
+ **Duração da sessão do IAM Identity Center**: [configure a duração das sessões do portal de acesso da AWS de seus usuários](https://docs.aws.amazon.com/singlesignon/latest/userguide/configure-user-session.html) 
+ **Permissão definir duração da sessão**:[ definir duração da sessão](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtosessionduration.html)

# Como a autenticação do IAM Identity Center é resolvida AWS SDKs e as ferramentas
<a name="understanding-sso"></a>



## Termos relevantes do Centro de Identidade do IAM
<a name="ssoterms"></a>

Os termos a seguir ajudam você a entender o processo e a configuração por trás do Centro de Identidade do AWS IAM. A documentação do AWS SDK APIs usa nomes diferentes do IAM Identity Center para alguns desses conceitos de autenticação. É útil conhecer os dois nomes. 

A tabela a seguir mostra como os nomes alternativos se relacionam.


| Nome do IAM Identity Center | Nome da API do SDK | Description | 
| --- | --- | --- | 
| Identity Center  | sso  | Embora o AWS Single Sign-On tenha sido renomeado, os namespaces da sso API manterão seu nome original para fins de compatibilidade com versões anteriores. Para obter mais informações, consulte [Renomear o IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html#renamed) no Guia do usuário do Centro de Identidade do AWS IAM . | 
| Console do IAM Identity CenterConsole administrativo |   | O console que você usa para configurar o single sign-on.  | 
| AWS URL do portal de acesso  |  | Um URL exclusivo para sua conta do IAM Identity Center, como https://xxx.awsapps.com/start. Você faz login neste portal usando suas credenciais de login do IAM Identity Center.  | 
| Sessão do portal de acesso ao IAM Identity Center  | Sessão de autenticação  | Fornece um token de acesso do portador ao chamador.  | 
| Sessão de definição de permissões  |   | A sessão do IAM que o SDK usa internamente para fazer as AWS service (Serviço da AWS) chamadas. Em discussões informais, você pode ver isso incorretamente chamado de “sessão de funções”. | 
| Credenciais do conjunto de permissões  | AWS credenciaiscredenciais sigv4  | As credenciais que o SDK realmente usa para a maioria das AWS service (Serviço da AWS) chamadas (especificamente, todas as chamadas sigv4 AWS service (Serviço da AWS) ). Em discussões informais, você pode ver isso incorretamente chamado de “credenciais de função”. | 
| Provedor de credenciais do IAM Identity Center  | Provedor de credenciais de SSO  | Como você obtém as credenciais, como a classe ou o módulo que fornece a funcionalidade.  | 

## Entenda a resolução de credenciais do SDK para Serviços da AWS
<a name="idccredres"></a>

A API do IAM Identity Center troca as credenciais do token do portador por credenciais sigv4. A Serviços da AWS maioria é sigv4 APIs, com algumas exceções, como e. Amazon CodeWhisperer Amazon CodeCatalyst A seguir, descrevemos o processo de resolução de credenciais para dar suporte à maioria das AWS service (Serviço da AWS) chamadas para o código do seu aplicativo por meio Centro de Identidade do AWS IAM de. 

### Iniciar uma sessão do portal de AWS acesso
<a name="idccredres1"></a>
+ Inicie o processo entrando na sessão com suas credenciais.
  + Use o `aws sso login` comando no AWS Command Line Interface (AWS CLI). Isso inicia uma nova sessão do IAM Identity Center se você ainda não tiver uma sessão ativa.
+ Ao iniciar uma nova sessão, você recebe um token de atualização e um token de acesso do IAM Identity Center. Ele AWS CLI também atualiza um arquivo JSON de cache SSO com um novo token de acesso e token de atualização e o disponibiliza para uso por. SDKs
+ Se você já tiver uma sessão ativa, o AWS CLI comando reutilizará a sessão existente e expirará sempre que a sessão existente expirar. Para saber como definir a duração de uma sessão do IAM Identity Center, consulte [Configurar a duração das sessões do portal de AWS acesso de seus usuários](https://docs.aws.amazon.com/singlesignon/latest/userguide/configure-user-session.html) no *Guia do Centro de Identidade do AWS IAM usuário*. 
  + A duração máxima da sessão foi estendida para 90 dias para reduzir a necessidade de logins frequentes.

### Como o SDK obtém credenciais para chamadas AWS service (Serviço da AWS)
<a name="idccredres2"></a>

SDKs forneça acesso a Serviços da AWS quando você instancia um objeto cliente por serviço. Quando o perfil selecionado do AWS `config` arquivo compartilhado é configurado para resolução de credenciais do IAM Identity Center, o IAM Identity Center é usado para resolver as credenciais do seu aplicativo. 
+ O [processo de resolução de credenciais](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html#credentialProviderChain) é concluído durante o runtime quando um cliente é criado.

Para recuperar credenciais para sigv4 APIs usando o login único do IAM Identity Center, o SDK usa o token de acesso do IAM Identity Center para obter uma sessão do IAM. Essa sessão do IAM é chamada de sessão de conjunto de permissões e fornece AWS acesso ao SDK assumindo uma função do IAM. 
+  A duração da sessão do conjunto de permissões é definida independentemente da duração da sessão do IAM Identity Center.
  + Para saber como definir a duração da sessão do conjunto de permissões, consulte [Definir a duração da sessão](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtosessionduration.html) no *Guia do usuário do Centro de Identidade do AWS IAM *.
+  Lembre-se de que as credenciais do conjunto de permissões também são chamadas de credenciais e *AWS credenciais* *sigv4 na maioria das documentações* da API do SDK. AWS 

As credenciais do conjunto de permissões são retornadas de uma chamada [getRoleCredentials](https://docs.aws.amazon.com/singlesignon/latest/PortalAPIReference/API_GetRoleCredentials.html)da API do IAM Identity Center para o SDK. O objeto cliente do SDK usa essa função assumida do IAM para fazer chamadas para o AWS service (Serviço da AWS), como pedir ao Amazon S3 que liste os buckets em sua conta. O objeto cliente pode continuar operando usando essas credenciais do conjunto de permissões até que a sessão do conjunto de permissões expire. 

### Expiração e atualização da sessão
<a name="idccredres3"></a>

Ao usar o [Configuração do provedor de token do SSO](feature-sso-credentials.md#sso-token-config), o token de acesso por hora obtido do IAM Identity Center é atualizado automaticamente usando o token de atualização.
+ Se o token de acesso expirar quando o SDK tentar usá-lo, o SDK usará o token de atualização para tentar obter um novo token de acesso. O IAM Identity Center compara o token de atualização com a duração da sessão do portal de acesso do IAM Identity Center. Se o token de atualização não expirar, o IAM Identity Center responderá com outro token de acesso.
+ Esse token de acesso pode ser usado para atualizar a sessão do conjunto de permissões de clientes existentes ou para resolver credenciais para novos clientes. 

No entanto, se a sessão do portal de acesso do IAM Identity Center expirar, nenhum novo token de acesso será concedido. Portanto, a duração do conjunto de permissões não pode ser renovada. Ele expirará (e o acesso será perdido) sempre que a duração da sessão definida em cache expirar para os clientes existentes. 

Qualquer código que crie um novo cliente falhará na autenticação assim que a sessão do IAM Identity Center expirar. Isso ocorre porque as credenciais do conjunto de permissões não são armazenadas em cache. Seu código não conseguirá criar um novo cliente e concluir o processo de resolução de credenciais até que você tenha um token de acesso válido. 

Para recapitular, quando o SDK precisa de novas credenciais de conjunto de permissões, ele primeiro verifica se há credenciais válidas existentes e as usa. Isso se aplica se as credenciais são para um novo cliente ou para um cliente existente com credenciais expiradas. Se as credenciais não forem encontradas ou não forem válidas, o SDK chama a API do IAM Identity Center para obter novas credenciais. Para chamar a API, ela precisa do token de acesso. Se o token de acesso expirar, o SDK usará o token de atualização para tentar obter um novo token de acesso a partir do seriço IAM Identity Center. Esse token é concedido se sua sessão do portal de acesso ao IAM Identity Center não tiver expirado. 

# Usando o IAM Roles Anywhere para autenticação AWS SDKs e ferramentas
<a name="access-rolesanywhere"></a>

Você pode usar o IAM Roles Anywhere para obter credenciais de segurança temporárias no IAM para cargas de trabalho, como servidores, contêineres e aplicativos executados fora do. AWS Para usar o IAM Roles Anywhere, seu workload deve usar certificados X.509. Seu administrador de nuvem deve fornecer o certificado e a chave privada necessários para configurar o IAM Roles Anywhere como seu provedor de credenciais.

## Etapa 1: configurar IAM Roles Anywhere
<a name="config-ira"></a>

O IAM Roles Anywhere fornece uma maneira de obter credenciais temporárias para uma carga de trabalho ou processo executado fora do. AWS Uma âncora de confiança é estabelecida com a autoridade de certificação para obter credenciais temporárias para o perfil do IAM associado. A função define as permissões que seu workload terá quando seu código for autenticado com o IAM Roles Anywhere.

Para ver as etapas para configurar a âncora de confiança, a função do IAM e o perfil do IAM Roles Anywhere, consulte [Como criar uma âncora de confiança e um perfil em AWS Identity and Access Management Roles Anywhere no Guia](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/getting-started.html) do *usuário do IAM Roles Anywhere*.

**nota**  
Um *perfil* no *Guia do usuário do IAM Roles Anywhere* se refere a um conceito exclusivo no serviço IAM Roles Anywhere. Não está relacionado aos perfis no AWS `config` arquivo compartilhado. 

## Etapa 2: usar IAM Roles Anywhere
<a name="use-ira"></a>

Para obter credenciais de segurança temporárias do IAM Roles Anywhere, use a ferramenta de assistente de credenciais fornecida pelo IAM Roles Anywhere. A ferramenta de credenciais implementa o processo de assinatura do IAM Roles Anywhere.

Para obter instruções sobre como baixar a ferramenta auxiliar de credenciais, consulte [Obter credenciais de segurança temporárias do AWS Identity and Access Management Roles Anywhere no Guia do](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/credential-helper.html) usuário do *IAM Roles Anywhere*.

Para usar credenciais de segurança temporárias do IAM Roles Anywhere with AWS SDKs and the AWS CLI, você pode definir a `credential_process` configuração no AWS `config` arquivo compartilhado. O SDKs e AWS CLI suporta um provedor de credenciais de processo que usa `credential_process` para autenticar. O seguinte mostra a estrutura geral a definir `credential_process`.

```
credential_process = [path to helper tool] [command] [--parameter1 value] [--parameter2 value] [...]  
```

O comando `credential-process` da ferramenta auxiliar retorna credenciais temporárias em um formato JSON padrão compatível com a configuração `credential_process`. Observe que o nome do comando contém um hífen, mas o nome da configuração contém um sublinhado. O comando requer os seguintes parâmetros:
+ `private-key`: o caminho para a chave privada que assinou a solicitação. 
+ ` certificate`: o caminho para o certificado. 
+ `role-arn`: o ARN da função para a qual obter credenciais temporárias. 
+ `profile-arn`: o ARN do perfil que fornece um mapeamento para a função especificada. 
+ `trust-anchor-arn`: o ARN da âncora de confiança usada para autenticar. 

Seu administrador de nuvem deve fornecer o certificado e uma chave privada. Todos os três valores de ARN podem ser copiados do Console de gerenciamento da AWS. O exemplo a seguir mostra um arquivo `config` compartilhado que configura a recuperação de credenciais temporárias da ferramenta auxiliar. 

```
[profile dev]
credential_process = ./aws_signing_helper credential-process --certificate /path/to/certificate --private-key /path/to/private-key --trust-anchor-arn arn:aws:rolesanywhere:region:account:trust-anchor/TA_ID --profile-arn arn:aws:rolesanywhere:region:account:profile/PROFILE_ID --role-arn arn:aws:iam::account:role/ROLE_ID
```

 Para parâmetros opcionais e detalhes adicionais da ferramenta auxiliar, consulte [IAM Roles Anywhere Credential Helper](https://github.com/aws/rolesanywhere-credential-helper#readme) on. GitHub 

Para obter detalhes sobre a própria configuração do SDK e o provedor de credenciais do processo, consulte [Provedor de credenciais de processo](feature-process-credentials.md) neste guia.

# Assumindo uma função com AWS credenciais para autenticação AWS SDKs e ferramentas
<a name="access-assume-role"></a>

Assumir um perfil envolve o uso de um conjunto de credenciais temporárias de segurança para acessar recursos da AWS aos quais você talvez não tenha acesso de outra forma. Essas credenciais de segurança temporárias consistem em um ID de chave de acesso, uma chave de acesso secreta e um token de segurança. Para saber mais sobre as solicitações de API AWS Security Token Service (AWS STS), consulte [Ações](https://docs.aws.amazon.com/STS/latest/APIReference/API_Operations.html) na *Referência da API do AWS Security Token Service *. 

Para configurar seu SDK ou ferramenta para assumir um perfil, você deve primeiro criar ou identificar um *perfil* específico a ser assumido. Os perfis do IAM são identificados exclusivamente por um perfil do nome do recurso da Amazon ([ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)). Os perfis estabelecem as relações de confiança com uma outra entidade. A entidade confiável que usa a função pode ser uma AWS service (Serviço da AWS) ou outra Conta da AWS. Para obter mais informações sobre perfis do IAM, consulte [Perfis do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) no *Guia do usuário do IAM*. 

Depois que perfil do IAM for identificado, se você tiver a confiança desse perfil, poderá configurar seu SDK ou ferramenta para usar as permissões concedidas pelo perfil. 

**nota**  
É uma prática AWS recomendada usar endpoints regionais sempre que possível e configurar seus[Região da AWS](feature-region.md). 

## Assumir um perfil do IAM
<a name="credOrSourceAssumeRole"></a>

Ao assumir uma função, AWS STS retorna um conjunto de credenciais de segurança temporárias. Essas credenciais são provenientes de outro perfil ou da instância ou contêiner em que seu código está sendo executado. O uso mais comum desse método de assumir um perfil é quando você tem credenciais da AWS para uma conta, mas a aplicação precisa acessar recursos em outra conta. 

### Etapa 1: Configurar um perfil do IAM
<a name="credOrSourceAssumeRole_step1"></a>

Para configurar seu SDK ou ferramenta para assumir um perfil, você deve primeiro criar ou identificar um perfil específico a ser assumido. Os perfis do IAM são identificados exclusivamente usando um [ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) de perfil. Os perfis estabelecem relações de confiança com outra entidade, normalmente dentro da sua conta ou para acesso entre contas. Para saber mais, consulte [Criar perfis do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html) no *Guia do usuário do IAM*.

### Etapa 2: Configurar o SDK ou a ferramenta
<a name="credOrSourceAssumeRole_step2"></a>

Configure o SDK ou a ferramenta para obter credenciais de `credential_source` ou `source_profile`. 

Use `credential_source` para obter credenciais de um contêiner do Amazon ECS, de uma instância do Amazon EC2 ou de variáveis de ambiente. 

Use `source_profile` para obter credenciais de outro perfil. O `source_profile` também suporta o encadeamento de perfis, que são hierarquias de perfis em que um perfil assumido é então usado para assumir outro perfil.

Quando você especifica isso em um perfil, o SDK ou a ferramenta faz automaticamente a chamada de AWS STS [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API correspondente para você. Para recuperar e usar credenciais temporárias assumindo uma função, especifique os seguintes valores de configuração no arquivo compartilhado. AWS `config` Para obter mais detalhes sobre cada uma dessas configurações, consulte a seção [Assuma as configurações do provedor de credenciais do perfil](feature-assume-role-credentials.md#feature-assume-role-credentials-settings). 
+ `role_arn`: a partir do perfil do IAM que você criou na Etapa 1
+ Configure um `credential_source` ou `source_profile`
+ (Optional) `duration_seconds`
+ (Optional) `external_id`
+ (Optional) `mfa_serial`
+ (Optional) `role_session_name` 

Os exemplos a seguir mostram a configuração de ambas as opções de perfis assumidos em um arquivo compartilhado `config`:

```
role_arn = arn:aws:iam::123456789012:role/my-role-name
credential_source = Ec2InstanceMetadata
```

```
[profile-with-user-that-can-assume-role]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
aws_session_token=IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZVERYLONGSTRINGEXAMPLE

[profile dev]
region = us-east-1
output = json
role_arn = arn:aws:iam::123456789012:role/my-role-name
source_profile = profile-with-user-that-can-assume-role
role_session_name = my_session
```

Para obter mais detalhes sobre todas as configurações do provedor de credenciais para assumir o perfil, consulte este guia [Assuma o perfil de provedor de credenciais](feature-assume-role-credentials.md).

# Assumir uma função com identidade da web ou OpenID Connect AWS SDKs para autenticação e ferramentas
<a name="access-assume-role-web"></a>

Assumir um perfil envolve o uso de um conjunto de credenciais temporárias de segurança para acessar recursos da AWS aos quais você talvez não tenha acesso de outra forma. Essas credenciais de segurança temporárias consistem em um ID de chave de acesso, uma chave de acesso secreta e um token de segurança. Para saber mais sobre as solicitações de API AWS Security Token Service (AWS STS), consulte [Ações](https://docs.aws.amazon.com/STS/latest/APIReference/API_Operations.html) na *Referência da API do AWS Security Token Service *. 

Para configurar seu SDK ou ferramenta para assumir um perfil, você deve primeiro criar ou identificar um *perfil* específico a ser assumido. Os perfis do IAM são identificados exclusivamente por um perfil do nome do recurso da Amazon ([ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)). Os perfis estabelecem as relações de confiança com uma outra entidade. A entidade de confiança que usa o perfil pode ser um provedor de identidades de web ou OpenID Connect (OIDC), ou uma federação SAML. Para saber mais sobre perfis do IAM, consulte [Métodos para assumir um perfil](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html) no *Guia do usuário do IAM*. 

Depois que a função do IAM for configurada em seu SDK, se essa função estiver configurada para confiar em seu provedor de identidade, você poderá configurar ainda mais seu SDK para assumir essa função a fim de obter credenciais temporárias AWS .

**nota**  
É uma prática AWS recomendada usar endpoints regionais sempre que possível e configurar seus[Região da AWS](feature-region.md). 

## Federar com identidade da Web ou OpenID Connect
<a name="webidentity"></a>

Você pode usar os JSON Web Tokens (JWTs) de provedores de identidade públicos, como Login With Amazon, Facebook, Google, para obter AWS credenciais temporárias usando. `AssumeRoleWithWebIdentity` Dependendo de como eles são usados, eles JWTs podem ser chamados de tokens de ID ou tokens de acesso. Você também pode usar JWTs emitidos por provedores de identidade (IdPs) que sejam compatíveis com o protocolo de descoberta do OIDC, como EntraId ou. PingFederate

Se você estiver usando o Amazon Elastic Kubernetes Service, esse atributo permite especificar diferentes perfis do IAM para cada uma das suas contas de serviço no cluster do Amazon EKS. Esse recurso do Kubernetes é distribuído JWTs para seus pods, que são usados por esse provedor de credenciais para obter credenciais temporárias. AWS Para obter mais informações sobre essa configuração do Amazon EKS, consulte [Perfis do IAM para contas de serviço](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) no **Guia do usuário do Amazon EKS**. No entanto, como uma opção mais simples, recomendamos que você use o [Amazon EKS Pod Identities](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html) se seu [SDK for compatível](feature-container-credentials.md#feature-container-credentials-sdk-compat).

### Etapa 1: Configurar um provedor de identidades e um perfil do IAM
<a name="webidentity_step1"></a>

Para configurar a federação com um IdP externo, use um provedor de identidade do IAM para informar AWS sobre o IdP externo e sua configuração. Isso estabelece *confiança* entre o seu Conta da AWS e o IdP externo. Antes de configurar o SDK para usar o JSON Web Token (JWT), você deve primeiro configurar o provedor de identidades (IdP) e o perfil do IAM usado para acessá-lo. Para configurá-los, consulte [Criar um perfil para identidades da Web ou federação do OpenID Connect (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html) no *Guia do usuário do IAM*.

### Etapa 2: Configurar o SDK ou a ferramenta
<a name="webidentity_step2"></a>

Configure o SDK ou a ferramenta para usar um JSON Web Token (JWT) para autenticação. AWS STS 

Quando você especifica isso em um perfil, o SDK ou a ferramenta faz automaticamente a chamada de AWS STS [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)API correspondente para você. Para recuperar e usar credenciais temporárias usando a federação de identidade da web, especifique os seguintes valores de configuração no arquivo compartilhado AWS `config`. Para obter mais detalhes sobre cada uma dessas configurações, consulte a seção [Assuma as configurações do provedor de credenciais do perfil](feature-assume-role-credentials.md#feature-assume-role-credentials-settings). 
+ `role_arn`: a partir do perfil do IAM que você criou na Etapa 1
+ `web_identity_token_file`: do IdP externo
+ (Optional) `duration_seconds`
+ (Optional) `role_session_name` 

Veja a seguir um exemplo de uma configuração de arquivo `config` compartilhado para assumir um perfil com a identidade da web:

```
[profile web-identity]
role_arn=arn:aws:iam::123456789012:role/my-role-name
web_identity_token_file=/path/to/a/token
```

**nota**  
Para aplicações móveis, recomendamos o uso do Amazon Cognito. O Amazon Cognito atua como um agente de identidades e realiza a maioria do trabalho de federação para você. No entanto, o provedor de identidade do Amazon Cognito não está incluído nas bibliotecas principais das ferramentas SDKs e, como outros provedores de identidade. Para acessar a API do Amazon Cognito, inclua o cliente do serviço Amazon Cognito na compilação ou nas bibliotecas do seu SDK ou ferramenta. Para uso com AWS SDKs, consulte [Exemplos de código no Guia](https://docs.aws.amazon.com/cognito/latest/developerguide/service_code_examples.html) do *desenvolvedor do Amazon Cognito*.

Para obter mais detalhes sobre todas as configurações do provedor de credenciais para assumir o perfil, consulte este guia [Assuma o perfil de provedor de credenciais](feature-assume-role-credentials.md).

# Usando chaves de AWS acesso para autenticação AWS SDKs e ferramentas
<a name="access-users"></a>

Usar chaves de AWS acesso é uma opção para autenticação ao usar AWS SDKs ferramentas.

## Use credenciais de curto prazo
<a name="credentials-temporary"></a>

 Recomendamos configurar o seu SDK ou ferramenta para usar [Usando o IAM Identity Center para autenticar o AWS SDK e as ferramentas](access-sso.md) para usar as opções de duração de sessão estendida. 

No entanto, para configurar diretamente as credenciais temporárias do SDK ou da ferramenta, consulte [Usando credenciais de curto prazo para autenticação e ferramentas AWS SDKsCredenciais de curto prazo](access-temp-idc.md).

## Use credenciais de longo prazo
<a name="credentials-long-term"></a>

**Atenção**  
Para evitar riscos de segurança, não use usuários do IAM para autenticação ao desenvolver software com propósito específico ou trabalhar com dados reais. Em vez disso, use federação com um provedor de identidade, como [Centro de Identidade do AWS IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html).

### Gerencie o acesso em Contas da AWS
<a name="manage-access-accounts"></a>

Como prática recomendada de segurança, recomendamos o uso AWS Organizations com o IAM Identity Center para gerenciar o acesso em todos os seus Contas da AWS. Para obter mais informações, consulte [Práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) no *Guia do usuário do IAM*.

Você pode criar usuários no IAM Identity Center, usar o Microsoft Active Directory, usar um provedor de identidade (IdP) SAML 2.0 ou federar seu IdP individualmente para. Contas da AWS Usando uma dessas abordagens, você pode fornecer uma experiência de login único para seus usuários. Você também pode aplicar a autenticação multifator (MFA) e usar credenciais temporárias para acesso. Conta da AWS Isso difere de um usuário do IAM, que é uma credencial de longo prazo que pode ser compartilhada e que pode aumentar o risco de segurança de seus recursos da AWS .

### Crie usuários do IAM somente para ambientes de sandbox
<a name="create-iam-user-sandbox"></a>

Se você é novato AWS, pode criar um usuário de teste do IAM e usá-lo para executar tutoriais e explorar o que AWS tem a oferecer. Não há problema em usar esse tipo de credencial quando você está aprendendo, mas recomendamos que você evite usá-la fora de um ambiente sandbox.

Para os seguintes casos de uso, pode fazer sentido começar com os usuários do IAM em AWS:
+ Comece a usar seu AWS SDK ou ferramenta e explore Serviços da AWS em um ambiente sandbox.
+ Executar scripts agendados, trabalhos e outros processos automatizados que não oferecem suporte a um processo de login assistido por humanos como parte de seu aprendizado.

Se você estiver usando usuários do IAM fora desses casos de uso, faça a transição para o IAM Identity Center ou federe seu provedor de identidade o mais rápido Contas da AWS possível. Para obter mais informações, consulte [Federação de identidades na AWS](https://aws.amazon.com/identity/federation/).

### Garanta chaves de acesso para usuários do IAM
<a name="secure-iam-access-keys"></a>

Você deve alternar chaves de acesso de usuário do IAM regularmente. Siga as orientações em [Alternar chaves de acesso](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey) no *Guia do usuário do IAM*. Se você acredita que compartilhou acidentalmente suas chaves de acesso de usuário do IAM, alterne suas chaves de acesso.

As chaves de acesso do usuário do IAM devem ser armazenadas no AWS `credentials` arquivo compartilhado na máquina local. Não armazene as chaves de acesso do usuário do IAM em seu código. Não inclua arquivos de configuração que contenham suas chaves de acesso de usuário do IAM em nenhum software de gerenciamento de código-fonte. Ferramentas externas, como o projeto de código aberto [git-secrets](https://github.com/awslabs/git-secrets), podem ajudar a evitar o envio inadvertido de informações confidenciais em um repositório Git. Para obter mais informações, consulte [Identidades IAM (usuários, grupos e funções)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) no *Guia Usuário do IAM*.

Para configurar um usuário do IAM para começar, consulte [Usando credenciais de longo prazo para autenticação e ferramentas AWS SDKs](access-iam-users.md).

# Usando credenciais de curto prazo para autenticação e ferramentas AWS SDKs
<a name="access-temp-idc"></a>

 Recomendamos configurar seu AWS SDK ou ferramenta para uso [Usando o IAM Identity Center para autenticar o AWS SDK e as ferramentas](access-sso.md) com opções de duração de sessão estendida. No entanto, você pode copiar e usar credenciais temporárias que estão disponíveis no portal de AWS acesso. As novas credenciais precisarão ser copiadas quando essas expirarem. É possível usar as credenciais temporárias em um perfil ou usá-las como valores para propriedades do sistema e variáveis de ambiente.

Prática recomendada: em vez de gerenciar manualmente as chaves de acesso e um token no arquivo de credenciais, recomendamos que a aplicação use credenciais temporárias fornecidas por: 
+ Um serviço de AWS computação, como executar seu aplicativo no Amazon Elastic Compute Cloud ou em. AWS Lambda
+ Outra opção da cadeia de fornecedores de credenciais, como [Usando o IAM Identity Center para autenticar o AWS SDK e as ferramentas](access-sso.md).
+ Ou use [Provedor de credenciais de processo](feature-process-credentials.md) para recuperar credenciais temporárias.

**Configurar um arquivo de credenciais usando credenciais de curto prazo recuperadas do portal de acesso AWS**

1. [Criar um arquivo de credenciais compartilhadas](https://docs.aws.amazon.com/sdkref/latest/guide/file-location.html).

1. No arquivo de credenciais, cole o texto do espaço reservado a seguir até colar as credenciais temporárias de trabalho.

   ```
   [default]
   aws_access_key_id=<value from AWS access portal>
   aws_secret_access_key=<value from AWS access portal>
   aws_session_token=<value from AWS access portal>
   ```

1. Salve o arquivo. Agora, o arquivo `~/.aws/credentials` deve existir em seu sistema de desenvolvimento local. Esse arquivo contém o [perfil [padrão]](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#file-format-profile) que o SDK ou a ferramenta usa se um perfil nomeado específico não for especificado. 

1. [Faça login no portal de AWS acesso](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtosignin.html).

1. Siga estas instruções para [atualização manual de credenciais](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtogetcredentials.html#how-to-get-temp-credentials) para copiar as credenciais da função do IAM do AWS portal de acesso.

   1. Na etapa 4 das instruções vinculadas, escolha o nome do perfil do IAM que concede acesso para suas necessidades de desenvolvimento. Essa função geralmente tem um nome como **PowerUserAccess**ou **Desenvolvedor**.

   1. Para a etapa 7 nas instruções vinculadas, selecione a opção **Adicionar manualmente um perfil ao seu arquivo de credenciais da AWS ** e copie o conteúdo.

1. Copie e as credenciais copiadas em seu arquivo `credentials` local. O nome do perfil gerado não é necessário se você estiver usando o perfil `default`. Seu arquivo deve se parecer com o seguinte.

   ```
   [default]
   aws_access_key_id=AKIAIOSFODNN7EXAMPLE
   aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   aws_session_token=IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZVERYLONGSTRINGEXAMPLE
   ```

1. Salve o arquivo `credentials`.

Quando o SDK cria um cliente de serviço, ele acessa essas credenciais temporárias e as usa para cada solicitação. As configurações do perfil do IAM escolhidas na etapa 5a determinam [por quanto tempo as credenciais temporárias são válidas](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtosessionduration.html). A duração máxima é de doze horas.

Depois que as credenciais temporárias expirarem, repita as etapas de 4 a 7.

# Usando credenciais de longo prazo para autenticação e ferramentas AWS SDKs
<a name="access-iam-users"></a>

**Atenção**  
Para evitar riscos de segurança, não use usuários do IAM para autenticação ao desenvolver software com propósito específico ou trabalhar com dados reais. Em vez disso, use federação com um provedor de identidade, como [Centro de Identidade do AWS IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html).

Se você usa um usuário do IAM para executar seu código, o SDK ou a ferramenta em seu ambiente de desenvolvimento é autenticado usando credenciais de usuário do IAM de longo prazo no arquivo compartilhado. AWS `credentials` Analise o tópico [Melhores práticas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) e faça a transição para o IAM Identity Center ou outras credenciais temporárias assim que possível.

## Avisos e orientações importantes para credenciais
<a name="iam-warnings-and-guidelines"></a>

**Avisos para credenciais**
+ ***NÃO*** use as credenciais de raiz da sua conta para acessar os recursos da AWS . Estas credenciais fornecem acesso ilimitado à conta e são difíceis de revogar.
+ ***NÃO*** coloque chaves de acesso literais ou informações de credenciais em arquivos de aplicações. Se colocar, criará um risco de exposição acidental das credenciais se, por exemplo, fizer upload do projeto em um repositório público.
+ ***NÃO*** inclua arquivos que contenham credenciais em sua área de projeto.
+ Esteja ciente de que todas as credenciais armazenadas no AWS `credentials` arquivo compartilhado são armazenadas em texto simples.

**Orientação adicional para gerenciar credenciais com segurança**

Para uma discussão geral sobre como gerenciar AWS credenciais com segurança, consulte [Melhores práticas para gerenciar chaves de AWS acesso](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html) no. [Referência geral da AWS](https://docs.aws.amazon.com/general/latest/gr/) Além dessa discussão, considere o seguinte:
+ Use [perfis do IAM para tarefas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) do Amazon Elastic Container Service (Amazon ECS).
+ Use [perfis do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) para aplicações em execução nas instâncias do Amazon EC2.

## Pré-requisitos: Crie uma conta AWS
<a name="signup"></a>

Para usar um usuário do IAM para acessar AWS serviços, você precisa de uma AWS conta e AWS credenciais.

1. **Crie uma conta.**

   Para criar uma AWS conta, consulte [Primeiros passos: você é um AWS usuário iniciante](https://docs.aws.amazon.com/accounts/latest/reference/welcome-first-time-user.html)? no *Guia AWS Gerenciamento de contas de referência*.

1. **Crie um usuário administrativo.**

   Evite usar a conta de usuário raiz (a conta inicial criada) para acessar serviços e o console de gerenciamento. Em vez disso, crie uma conta de usuário administrativo, conforme explicado em [Criar um usuário administrativo](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-set-up.html#create-an-admin) no *Guia do usuário do IAM*.

   Depois de criar a conta de usuário administrativo e registrar os detalhes de login, **saia da conta de usuário raiz** e faça login novamente usando a conta administrativa.

Nenhuma dessas contas é apropriada para desenvolvimento AWS ou execução de aplicativos AWS. Como prática recomendada, você precisa criar usuários, conjuntos de permissões ou perfis de serviço que sejam apropriados para essas tarefas. Para obter mais informações, consulte [Aplicar permissões de privilégio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege), no *Guia do usuário do IAM*.

## Etapa 1: criar o usuário do IAM
<a name="step1authIamUser"></a>
+ Crie o usuário do IAM seguindo o procedimento de [Criação de usuários do IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console) no *Guia do usuário do IAM*. Ao criar o usuário do IAM:
  + Recomendamos que você selecione **Fornecer acesso de usuário ao Console de gerenciamento da AWS**. Isso permite visualizar os Serviços da AWS relacionados ao código que você está executando em um ambiente visual, como verificação de logs de diagnóstico do AWS CloudTrail ou upload de arquivos para o Amazon Simple Storage Service, que é útil ao depurar código.
  + Em **Definir permissões**: **Opções de permissão**, selecione **Anexar políticas diretamente** para definir como você deseja atribuir permissões a esse usuário. 
    + A maioria dos tutoriais de “Conceitos básicos” do SDK usa o serviço Amazon S3 como exemplo. Para fornecer à aplicação acesso total ao Amazon S3, selecione a política `AmazonS3FullAccess` para anexar a esse usuário.
  + Você pode ignorar as etapas opcionais deste procedimento em relação à definição de limites de permissão ou tags. 

## Etapa 2: obter as chaves de acesso
<a name="stepGetKeys"></a>

1. No painel de navegação do console do IAM, selecione **Usuários** e depois selecione o **User name** do usuário que você criou anteriormente.

1. Na página do usuário, selecione a página **Credenciais de segurança**. Depois, em **Chaves de acesso**, selecione **Criar chave de acesso**.

1. Para **Criar chave de acesso: etapa 1**, escolha **interface de linha de comandos (CLI)** ou **Código local**. Ambas as opções geram o mesmo tipo de chave para usar com SDKs o. AWS CLI 

1. Em **Criar chave de acesso: etapa 2**, insira uma tag opcional e selecione **Próximo**.

1. Em **Criar chave de acesso: etapa 3**, selecione **Baixar arquivo .csv** para salvar um arquivo `.csv` com a chave de acesso e a chave de acesso secreta do usuário do IAM. Você precisará dessas informações posteriormente.
**Atenção**  
Use medidas de segurança apropriadas para manter essas credenciais seguras.

1. Selecione **Concluído**. 

## Etapa 3: atualizar o arquivo `credentials` compartilhado
<a name="stepauthIamUser"></a>

1. Crie ou abra o arquivo AWS `credentials` compartilhado. Esse arquivo é `~/.aws/credentials` em sistemas Linux e macOS e `%USERPROFILE%\.aws\credentials` no Windows. Para obter mais informações, consulte [Arquivos de credenciais de local.](https://docs.aws.amazon.com/credref/latest/refdocs/file-location.html)

1. Adicione o texto a seguir ao arquivo `credentials` compartilhado. Substitua o valor de ID de exemplo e o valor de chave de exemplo pelos valores no arquivo `.csv` que você baixou anteriormente. 

   ```
   [default]
   aws_access_key_id = AKIAIOSFODNN7EXAMPLE
   aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   ```

   

1. Salve o arquivo.

O arquivo `credentials` compartilhado é a forma mais comum de armazenar credenciais. Eles também podem ser definidos como variáveis de ambiente, consulte [AWS teclas de acesso](feature-static-credentials.md) para ver os nomes das variáveis de ambiente. Essa é uma forma de começar, mas recomendamos que você faça a transição para o IAM Identity Center ou outras credenciais temporárias o mais rápido possível. Depois de deixar de usar credenciais de longo prazo, lembre-se de excluir essas credenciais do arquivo `credentials` compartilhado.

# Usando funções do IAM para autenticar aplicativos implantados na Amazon EC2
<a name="access-iam-roles-for-ec2"></a>

Este exemplo aborda a configuração de uma AWS Identity and Access Management função com acesso ao Amazon S3 para uso em seu aplicativo implantado em uma instância do Amazon Elastic Compute Cloud. 

Para executar seu aplicativo AWS SDK em uma instância do Amazon Elastic Compute Cloud, crie uma função do IAM e, em seguida, conceda à sua EC2 instância da Amazon acesso a essa função. Para obter mais informações, consulte [Funções do IAM para a Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) no *Guia EC2 do usuário da Amazon*.

## Criar um perfil do IAM
<a name="createRoleForEc2"></a>

O aplicativo AWS SDK que você desenvolve provavelmente acessa pelo menos um AWS service (Serviço da AWS) para realizar ações. Crie um perfil do IAM que conceda as permissões necessárias para a execução da aplicação.

 Esse procedimento cria um perfil que concede acesso somente leitura ao Amazon S3, por exemplo. Muitos dos guias do AWS SDK têm tutoriais de “introdução” que são lidos no Amazon S3.

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, selecione **Perfis** e, em seguida, **Criar perfil**.

1. Em **Selecionar entidade confiável**, em **Tipo de entidade confiável**, escolha **AWS service (Serviço da AWS)**.

1. Em **Caso de uso**, escolha **Amazon EC2** e selecione **Avançar**.

1. Em **Adicionar permissões**, marque a caixa de seleção do **Acesso somente leitura do Amazon S3** na lista de políticas e, em seguida, selecione **Próximo**. 

1. Insira um nome para o perfil e, em seguida, escolha **Criar perfil**. *Lembre-se desse nome porque você precisará dele ao criar sua EC2 instância da Amazon.*

## Inicie uma EC2 instância da Amazon e especifique sua função do IAM
<a name="launchAndSpecify"></a>

Você pode criar e iniciar uma EC2 instância da Amazon usando sua função do IAM fazendo o seguinte:
+ Siga [Execute rapidamente uma instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html#liw-quickly-launch-instance) no *Guia do EC2 usuário da Amazon*. Porém, antes da etapa de envio final, faça também o seguinte:
  + Em **Detalhes avançados**, em **Perfil de instância do IAM**, escolha o perfil criado na etapa anterior.

 Com essa EC2 configuração do IAM e da Amazon, você pode implantar seu aplicativo na EC2 instância da Amazon e seu aplicativo terá acesso de leitura ao serviço Amazon S3. 

## Conecte-se à EC2 instância
<a name="net-dg-hosm-connect"></a>

Conecte-se à EC2 instância da Amazon para poder transferir seu aplicativo para ela e, em seguida, executar o aplicativo. Você precisará do arquivo que contém a parte privada do par de chaves que usou em **Par de chaves (login)** quando criou a instância, ou seja, o arquivo PEM.

Você pode fazer isso seguindo as orientações para o tipo de instância: [Conectar-se à instância do Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html) ou [Conectar-se à sua instância do Windows](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connecting_to_windows_instance.html). Ao conectar-se, faça isso de maneira que possa transferir arquivos da sua máquina de desenvolvimento para sua instância. 

**nota**  
No terminal do Linux ou do macOS, você pode usar o comando secure copy para copiar a aplicação. Para usar `scp` com um par de chaves, você pode usar o seguinte comando: `scp -i path/to/key file/to/copy ec2-user@ec2-xx-xx-xxx-xxx.compute.amazonaws.com:~`.  
Para obter mais informações sobre o Windows, consulte [Transferir arquivos para instâncias do Windows](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instanceWindowsFileTransfer.html).

Se você estiver usando um AWS kit de ferramentas, geralmente também poderá se conectar à instância usando o kit de ferramentas. Para obter mais informações, consulte o Guia do usuário específico para o kit de ferramentas que você usa.

## Execute seu aplicativo na EC2 instância
<a name="net-dg-hosm-run-the-app"></a>

1. Copie os arquivos do aplicativo da sua unidade local para sua EC2 instância da Amazon.

1. Inicie o aplicativo e verifique se ele é executado com os mesmos resultados da sua máquina de desenvolvimento.

1. (Opcional) Verifique se o aplicativo usa as credenciais fornecidas pelo perfil do IAM.

   1. Faça login no Console de gerenciamento da AWS e abra o EC2 console da Amazon em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

   1. Selecione a instância.

   1. Escolha **Ações**, **Segurança** e, depois, **Modificar perfil do IAM**.

   1.  Em **Perfil do IAM**, desanexe o perfil do IAM escolhendo **Nenhum perfil do IAM**.

   1.  Escolha **Atualizar perfil do IAM**.

   1. Execute o aplicativo novamente e confirme se ele retorna um erro de autorização.

# Usando o plugin TIP para acessar Serviços da AWS
<a name="access-tip"></a>

 A propagação de identidade confiável (TIP) é um recurso Centro de Identidade do AWS IAM que permite que os administradores concedam permissões com base nos atributos do usuário, como associações de grupos. Serviços da AWS Com a propagação de identidade confiável, o contexto de identidade é adicionado a uma função do IAM para identificar o usuário que está solicitando acesso aos AWS recursos. Esse contexto é propagado para outros Serviços da AWS. 

 O contexto de identidade compreende informações que são Serviços da AWS usadas para tomar decisões de autorização ao receber solicitações de acesso. Essas informações incluem metadados que identificam o solicitante (por exemplo, um usuário do IAM Identity Center), o acesso AWS service (Serviço da AWS) ao qual o acesso é solicitado (por exemplo, Amazon Redshift) e o escopo do acesso (por exemplo, acesso somente para leitura). O destinatário AWS service (Serviço da AWS) usa esse contexto e todas as permissões atribuídas ao usuário para autorizar o acesso aos seus recursos. Para obter mais informações, consulte a [visão geral da propagação de identidade confiável](https://docs.aws.amazon.com/singlesignon/latest/userguide/trustedidentitypropagation-overview.html) no Guia do Centro de Identidade do AWS IAM usuário. 

 O plug-in TIP pode ser usado com Serviços da AWS esse suporte à propagação confiável de identidade. Como caso de uso de referência, consulte [Configuring an Amazon Q Business application using Centro de Identidade do AWS IAM](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/create-application.html) no *Amazon Q Business User Guide*. 

**nota**  
 Se você estiver usando o Amazon Q Business, consulte [Configuring an Amazon Q Business application using Centro de Identidade do AWS IAM](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/create-application.html) para obter instruções específicas para o serviço. 

## Pré-requisitos para o uso do plug-in TIP
<a name="prereq-tip"></a>

Os seguintes recursos são necessários para o plug-in funcionar: 

1. Você deve estar usando o AWS SDK para Java ou AWS SDK para JavaScript o. 

1. Verifique se o serviço que você está usando é compatível com propagação de identidades confiáveis.

   Consulte a coluna **Enables trusted identity propagation through IAM Identity Center** da tabela [AWS managed applications that integrate with IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/awsapps-that-work-with-identity-center.html) no *Centro de Identidade do AWS IAM User Guide*. 

1. Habilite o IAM Identity Center e a propagação de identidades confiáveis.

   Consulte [TIP prerequisites and considerations](https://docs.aws.amazon.com/singlesignon/latest/userguide/trustedidentitypropagation-overall-prerequisites.html) no *Centro de Identidade do AWS IAM User Guide*. 

1. Você deve ter um Identity-Center-integrated aplicativo. 

   Consulte [AWS managed applications](https://docs.aws.amazon.com/singlesignon/latest/userguide/awsapps-quick-start-setting-up-identity-center-to-test-awsmanagedapps.html) ou [Customer managed applications](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-trusted-identity-propagation-set-up-your-own-app-OAuth2.html) no *Centro de Identidade do AWS IAM User Guide*. 

1. Você deve configurar um emissor de token confiável (TTI) e conectar seu serviço ao IAM Identity Center. 

   Consulte [Prerequisites for trusted token issuers](https://docs.aws.amazon.com/singlesignon/latest/userguide/using-apps-with-trusted-token-issuer.html#trusted-token-issuer-prerequisites) e [Tasks for setting up a trusted token issuer](https://docs.aws.amazon.com/singlesignon/latest/userguide/setuptrustedtokenissuer.html#setuptrustedtokenissuer-tasks) no *Centro de Identidade do AWS IAM User Guide*.

## Para usar o plug-in TIP no código
<a name="using-tip"></a>

1. Crie uma instância do plug-in de propagação de identidades confiáveis.

1. Crie uma instância de cliente de serviço para interagir com você AWS service (Serviço da AWS) e personalize o cliente de serviço adicionando o plug-in confiável de propagação de identidade. 

O plug-in TIP aceita os seguintes parâmetros de entrada:
+ **`webTokenProvider`**: uma função que o cliente implementa para obter um token do OpenID do respectivo provedor de identidades externo. 
+ **`accessRoleArn`**: o ARN do perfil do IAM a ser assumido pelo plug-in com o contexto de identidade do usuário para obter as credenciais aprimoradas com identidade. 
+ **`applicationArn`**: string do identificador específico do cliente ou da aplicação. Esse valor é um ARN do aplicativo que tem OAuth concessões configuradas. 
+ **`ssoOidcClient`**: (Opcional) Um cliente OIDC SSO, como [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/ssooidc/SsoOidcClient.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/ssooidc/SsoOidcClient.html)para Java ou for JavaScript, com configurações [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sso-oidc/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sso-oidc/)definidas pelo cliente. Se não for fornecido, um cliente do OIDC usando o `applicationRoleArn` será instanciado e usado. 
+  **`stsClient`**: (opcional) um cliente do AWS STS com configurações definidas pelo cliente, usado para assumir o `accessRoleArn` com o contexto da identidade do usuário. Se não for fornecido, um AWS STS cliente usando `applicationRoleArn` será instanciado e usado. 
+ **`applicationRoleArn`**: (Opcional) O ARN da função do IAM a ser assumido para que o OIDC e os AWS STS clientes `AssumeRoleWithWebIdentity` possam ser inicializados.
  + Se não forem fornecidos, **ambos** os parâmetros `ssoOidcClient` e `stsClient` deverão ser fornecidos.
  + Se fornecido, o `applicationRoleArn` não poderá ser igual ao valor do parâmetro `accessRoleArn`. `applicationRoleArn` é usado para compilar o STSClient, que é usado para assumir o accessRole. Se o mesmo papel for usado para ambos `applicationRole` e`accessRole`, isso significaria usar um papel para assumir a si mesmo (suposição de papel próprio), o que é desencorajado por. AWS Consulte [announcement](https://aws.amazon.com/blogs/security/announcing-an-update-to-iam-role-trust-policy-behavior/) para obter mais detalhes.

### Considerações sobre os parâmetros `ssoOidcClient`, `stsClient` e `applicationRoleArn`
<a name="considerations-tip"></a>

Ao configurar o plug-in TIP, considere os seguintes requisitos de permissão com base nos parâmetros que você fornecer:
+ Se você fornecer `ssoOidcClient` e `stsClient`:
  + As credenciais no `ssoOidcClient` devem ter permissão de `oauth:CreateTokenWithIAM` para chamar a central de identidade para obter o contexto do usuário específico da central de identidade.
  + As credenciais no `stsClient` devem ter as permissões `sts:AssumeRole` e `sts:SetContext` no`accessRole`. O `accessRole` também precisa ser configurado com uma relação de confiança com as credenciais no `stsClient`.
+ Se você estiver fornecendo `applicationRoleArn`:
  + O `applicationRole` deve ter as permissões `oauth:CreateTokenWithIAM`, `sts:AssumeRole` e `sts:SetContext` nos recursos necessários (instância do IdC, `accessRole`), pois ele será usado para compilar os clientes do OIDC e do STS.
  + `applicationRole`deve ter uma relação de confiança com o provedor de identidade usado para gerar o`webToken`, pois `webToken` será usado para assumir o ApplicationRole por meio da [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)chamada do plug-in.

**Exemplo ApplicationRole de configuração:**

Política de confiança com o provedor de tokens Web:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::ACCOUNT_ID:oidc-provider/IDENTITY_PROVIDER_URL"
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringEquals": {
                    "IDENTITY_PROVIDER_URL:aud": "CLIENT_ID_TO_BE_TRUSTED"
                }
            }
        }
    ]
}
```

Política de permissão:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole",
                "sts:SetContext"
            ],
            "Resource": [
                "accessRoleArn"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "sso-oauth:CreateTokenWithIAM"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

## Exemplos de código usando TIP
<a name="tip-code-example"></a>

Os exemplos abaixo mostram como implementar o plug-in TIP em seu código usando o AWS SDK para Java ou AWS SDK para JavaScript o.

------
#### [ Java ]

Para usar o plug-in TIP em seu AWS SDK para Java projeto, você precisa declará-lo como uma dependência no arquivo do `pom.xml` seu projeto. 

```
<dependency>
<groupId>software.amazon.awsidentity.trustedIdentityPropagation</groupId>
<artifactId>aws-sdk-java-trustedIdentityPropagation-java-plugin</artifactId>
   <version>2.0.0</version>
</dependency>
```

No código-fonte, inclua a instrução de pacote necessária para `software.amazon.awssdk.trustedidentitypropagation`. 

Os exemplos a seguir mostram duas maneiras de criar uma instância do plug-in de propagação de identidades confiáveis e adicioná-lo a um cliente de serviço. Ambos os exemplos usam o Amazon S3 como serviço e o utilizam `S3AccessGrantsPlugin` para gerenciar permissões específicas do usuário, mas podem ser aplicados a qualquer um AWS service (Serviço da AWS) que ofereça suporte à propagação de identidade confiável (TIP). 

**nota**  
Para esses exemplos, você precisa configurar as permissões específicas do usuário de Concessão de Acesso do S3. Consulte a [documentação de Concessão de Acesso do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants.html) para obter mais detalhes.

**Opção 1: criar e transmitir clientes do OIDC e do STS**

```
SsoOidcClient oidcClient = SsoOidcClient.builder()
    .region(Region.US_EAST_1)
    .credentialsProvider(credentialsProvider).build();

StsClient stsClient = StsClient.builder()
    .region(Region.US_EAST_1)
    .credentialsProvider(credentialsProvider).build();

TrustedIdentityPropagationPlugin trustedIdentityPropagationPlugin = TrustedIdentityPropagationPlugin.builder()
        .webTokenProvider(() -> webToken)
        .applicationArn(idcApplicationArn)
        .accessRoleArn(accessRoleArn)
        .ssoOidcClient(oidcClient)
        .stsClient(stsClient)
        .build();

S3AccessGrantsPlugin accessGrantsPlugin = S3AccessGrantsPlugin.builder()
        .build();

S3Client s3Client =
        S3Client.builder().region(Region.US_EAST_1)
                .crossRegionAccessEnabled(true)
                .addPlugin(trustedIdentityPropagationPlugin)
                .addPlugin(accessGrantsPlugin)
                .build();

final var resp = s3Client.getObject(GetObjectRequest.builder()
        .key("path/to/object/fileName")
        .bucket("bucketName")
        .build());
```

**Opção 2: passar applicationRoleArn e adiar a criação do cliente para o plug-in**

```
TrustedIdentityPropagationPlugin trustedIdentityPropagationPlugin = TrustedIdentityPropagationPlugin.builder()
        .webTokenProvider(() -> webToken)
        .applicationArn(idcApplicationArn)
        .accessRoleArn(accessRoleArn)
        .applicationRoleArn(applicationRoleArn)
        .build();

S3AccessGrantsPlugin accessGrantsPlugin = S3AccessGrantsPlugin.builder()
        .build();

S3Client s3Client =
        S3Client.builder().region(Region.US_EAST_1)
                .crossRegionAccessEnabled(true)
                .addPlugin(trustedIdentityPropagationPlugin)
                .addPlugin(accessGrantsPlugin)
                .build();

final var resp = s3Client.getObject(GetObjectRequest.builder()
        .key("path/to/object/fileName")
        .bucket("bucketName")
        .build());
```

Para obter detalhes adicionais e fontes, consulte [ trusted-identity-propagation-java](https://github.com/aws-sdk-plugin/trusted-identity-propagation-java)em GitHub.

------
#### [ JavaScript ]

Execute o comando a seguir para instalar o pacote do plug-in de autenticação TIP em seu AWS SDK para JavaScript projeto: 

```
$  npm i @aws-sdk-extension/trusted-identity-propagation
```

O `package.json` final deve incluir uma dependência semelhante à seguinte: 

```
  "dependencies": {
"@aws-sdk-extension/trusted-identity-propagation": "^2.0.0"
  },
```

 No seu código-fonte, importe a dependência de `TrustedIdentityPropagationExtension` necessária. 

 Os exemplos a seguir mostram duas maneiras de criar uma instância do plug-in de propagação de identidades confiáveis e adicioná-lo a um cliente de serviço. Ambos os exemplos usam o Amazon S3 como serviço e utilizam os Amazon S3 Access Grants para gerenciar permissões específicas do usuário, mas podem ser aplicados a AWS service (Serviço da AWS) qualquer um que ofereça suporte à propagação de identidade confiável (TIP). 

**nota**  
Para esses exemplos, você precisa configurar as permissões específicas do usuário de Concessão de Acesso do Amazon S3. Consulte a documentação de [Concessão de Acesso do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants.html) para obter mais detalhes.

**Opção 1: criar e transmitir clientes do OIDC e do STS**

```
import { S3Client, GetObjectCommand } from "@aws-sdk/client-s3";
import { S3ControlClient, GetDataAccessCommand } from "@aws-sdk/client-s3-control";
import { TrustedIdentityPropagationExtension } from "@aws-sdk-extension/trusted-identity-propagation";

const s3ControlClient = new S3ControlClient({
    region: "us-east-1",
    extensions: [
        TrustedIdentityPropagationExtension.create({
            webTokenProvider: async () => {
                return 'ID_TOKEN_FROM_YOUR_IDENTITY_PROVIDER';
            },
            ssoOidcClient: customOidcClient,
            stsClient: customStsClient,
            accessRoleArn: accessRoleArn,
            applicationArn: applicationArn,
        }),
    ],
});

const getDataAccessParams = {
  Target: "S3_URI_PATH",
  Permission: "READ",
  AccountId: ACCOUNT_ID,
  InstanceArn: S3_ACCESS_GRANTS_ARN,
  TargetType: "Object",
};

try {
  const command = new GetDataAccessCommand(getDataAccessParams);
  const response = await s3ControlClient.send(command);

  const credentials = response.Credentials;

  // Create a new S3 client with the temporary credentials
  const temporaryS3Client = new S3Client({
    region: "us-east-1",
    credentials: {
      accessKeyId: credentials.AccessKeyId,
      secretAccessKey: credentials.SecretAccessKey,
      sessionToken: credentials.SessionToken,
    },
  });

  // Use the temporary S3 client to perform the operation
  const s3Params = {
    Bucket: "BUCKET_NAME",
    Key: "S3_OBJECT_KEY",
  };
  const getObjectCommand = new GetObjectCommand(s3Params);
  const s3Object = await temporaryS3Client.send(getObjectCommand);

  const fileContent = await s3Object.Body.transformToString();

  // Process the S3 object data
  console.log("Successfully retrieved S3 object:", fileContent);
} catch (error) {
  console.error("Error accessing S3 data:", error);
}
```

**Opção 2: passar applicationRoleArn e adiar a criação do cliente para o plug-in**

```
import { S3Client, GetObjectCommand } from "@aws-sdk/client-s3";
import { S3ControlClient, GetDataAccessCommand } from "@aws-sdk/client-s3-control";
import { TrustedIdentityPropagationExtension } from "@aws-sdk-extension/trusted-identity-propagation";

const s3ControlClient = new S3ControlClient({
    region: "us-east-1",
    extensions: [
        TrustedIdentityPropagationExtension.create({
            webTokenProvider: async () => {
                return 'ID_TOKEN_FROM_YOUR_IDENTITY_PROVIDER';
            },
            accessRoleArn: accessRoleArn,
            applicationRoleArn: applicationRoleArn,
            applicationArn: applicationArn,
        }),
    ],
});

// Same S3 AccessGrants workflow as Option 1
const getDataAccessParams = {
  Target: "S3_URI_PATH",
  Permission: "READ",
  AccountId: ACCOUNT_ID,
  InstanceArn: S3_ACCESS_GRANTS_ARN,
  TargetType: "Object",
};

try {
  const command = new GetDataAccessCommand(getDataAccessParams);
  const response = await s3ControlClient.send(command);

  const credentials = response.Credentials;

  const temporaryS3Client = new S3Client({
    region: "us-east-1",
    credentials: {
      accessKeyId: credentials.AccessKeyId,
      secretAccessKey: credentials.SecretAccessKey,
      sessionToken: credentials.SessionToken,
    },
  });

  const s3Params = {
    Bucket: "BUCKET_NAME",
    Key: "S3_OBJECT_KEY",
  };
  const getObjectCommand = new GetObjectCommand(s3Params);
  const s3Object = await temporaryS3Client.send(getObjectCommand);

  const fileContent = await s3Object.Body.transformToString();

  console.log("Successfully retrieved S3 object:", fileContent);
} catch (error) {
  console.error("Error accessing S3 data:", error);
}
```

Para obter detalhes adicionais e fontes, consulte [trusted-identity-propagation-js](https://github.com/aws-sdk-plugin/trusted-identity-propagation-js)em GitHub.

------