

# Configurar o Navegador de Armazenamento para S3
<a name="setup-storagebrowser"></a>

Para conectar usuários finais a *locais* do Amazon S3, primeiro é necessário configurar um método de autenticação e autorização. Há três métodos de configurar um método de autenticação e autorização com o Navegador de Armazenamento:
+ [Método 1: gerenciar o acesso aos dados para os clientes e parceiros terceiros](#setup-storagebrowser-method1)
+ [Método 2: gerenciar o acesso aos dados para as entidades principais do IAM da sua conta da AWS](#setup-storagebrowser-method2)
+ [Método 3: gerenciar o acesso aos dados em grande escala](#setup-storagebrowser-method3)

## Método 1: gerenciar o acesso aos dados para os clientes e parceiros terceiros
<a name="setup-storagebrowser-method1"></a>

Com esse método, você pode usar o [AWS Amplify Auth](https://docs.amplify.aws/react/build-a-backend/auth/set-up-auth/) para gerenciar o controle de acesso e a segurança dos arquivos. Esse método é ideal quando você deseja conectar os clientes ou parceiros terceiros aos dados no S3. Com essa opção, os clientes podem se autenticar usando provedores de identidades sociais ou corporativas.

Forneça credenciais do IAM para os usuários finais e parceiros terceiros usando o AWS Amplify Auth com um bucket do S3 configurado para usar o armazenamento do Amplify. O AWS Amplify Auth é baseado no [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html), um serviço de gerenciamento de identidades e acesso de clientes totalmente gerenciado, em que você pode autenticar e autorizar usuários de um diretório de usuários integrado ou de um diretório corporativo, ou também de provedores de identidades de consumidores. O modelo de autorização do Amplify define quais prefixos o usuário autenticado atual pode acessar. Para ter mais informações sobre como configurar a autorização para o AWS Amplify, consulte [Set up storage](https://docs.amplify.aws/react/build-a-backend/storage/set-up-storage/).

Para inicializar o componente com os métodos de autenticação e armazenamento do Amplify, adicione o seguinte trecho de código ao aplicativo web:

```
import {
  createAmplifyAuthAdapter,
  createStorageBrowser,
} from '@aws-amplify/ui-react-storage/browser';
import "@aws-amplify/ui-react-storage/styles.css";

import config from './amplify_outputs.json';

Amplify.configure(config);

export const { StorageBrowser } = createStorageBrowser({
  config: createAmplifyAuthAdapter(),
});
```

## Método 2: gerenciar o acesso aos dados para as entidades principais do IAM da sua conta da AWS
<a name="setup-storagebrowser-method2"></a>

Se você quiser gerenciar o acesso das entidades principais do IAM ou da sua Conta da AWS diretamente, poderá criar um perfil do IAM que tenha permissões para invocar a operação de API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetDataAccess.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetDataAccess.html) do S3. Para configurar isso, você deve criar uma instância da Concessão de Acesso do S3 e associar as permissões para buckets de uso geral e prefixos do S3 às identidades do IAM especificadas. O componente Navegador de Armazenamento (que deve ser chamado do lado do cliente após a obtenção das credenciais do IAM) invocará então a operação de API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListCallerAccessGrants.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListCallerAccessGrants.html) do S3 para buscar as concessões disponíveis para o solicitante de identidade e preencher os locais no componente. Depois de conseguir a permissão `s3:GetDataAccess`, essas credenciais são usadas pelo componente Navegador de Armazenamento para solicitar acesso aos dados no S3.

```
import {
  createManagedAuthAdapter,
  createStorageBrowser,
} from '@aws-amplify/ui-react-storage/browser';
import "@aws-amplify/ui-react-storage/styles.css";

export const { StorageBrowser } = createStorageBrowser({
  config: createManagedAuthAdapter({
    credentialsProvider: async (options?: { forceRefresh?: boolean }) => {
      // return your credentials object
      return {
        credentials: {
          accessKeyId: 'my-access-key-id',
          secretAccessKey: 'my-secret-access-key',
          sessionToken: 'my-session-token',
          expiration: new Date()
        },
      }
    },
    // AWS `region` and `accountId`
    region: '',
    accountId: '',
    // call `onAuthStateChange` when end user auth state changes 
    // to clear sensitive data from the `StorageBrowser` state
    registerAuthListener: (onAuthStateChange) => {},
  })
});
```

## Método 3: gerenciar o acesso aos dados em grande escala
<a name="setup-storagebrowser-method3"></a>

Se você quiser associar uma instância da funcionalidade [Concessão de Acesso do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants.html) ao Centro de Identidade do IAM para conseguir uma solução mais escalável (como fornecer acesso aos dados para toda a empresa), poderá solicitar dados do Amazon S3 em nome do usuário autenticado atual. Por exemplo, você pode conceder aos grupos de usuários no seu diretório corporativo acesso aos dados no S3. Essa abordagem permite que você gerencie centralmente as permissões da funcionalidade Concessão de Acesso do S3 para os usuários e grupos, incluindo aqueles hospedados em provedores externos, como Microsoft Entra, Okta e outros.

Ao usar esse método, a [integração com o Centro de Identidade do IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/trustedidentitypropagation.html) permite que você use os diretórios de usuários existentes. Outro benefício da propagação de identidades confiáveis do Centro de Identidade do IAM é que cada [evento de dados do AWS CloudTrail para o Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-cloudtrail-logging-for-s3.html) contém uma referência direta à identidade do usuário final que acessou os dados do S3.

Se você tiver uma aplicação compatível com o OAuth 2.0 e os usuários precisarem de acesso aos serviços da AWS por meio dessa aplicação, recomendamos que use a propagação de identidades confiáveis. Com a propagação de identidades confiáveis, um usuário pode fazer login em uma aplicação e essa aplicação pode transmitir a identidade do usuário em todas as solicitações que acessam dados nos serviços da AWS. Essa aplicação interage com o Centro de Identidade do IAM em nome de qualquer usuário autenticado. Para ter mais informações, consulte [Using trusted identity propagation with customer managed applications](https://docs.aws.amazon.com/singlesignon/latest/userguide/trustedidentitypropagation-using-customermanagedapps-setup.html).

A [propagação de identidade confiável](https://docs.aws.amazon.com//singlesignon/latest/userguide/trustedidentitypropagation-overview.html) é um recurso do Centro de Identidade do AWS IAM que os administradores de Serviços da AWS conectados podem usar para conceder e auditar o acesso aos dados do serviço. O acesso a esses dados é baseado em atributos do usuário, como associações de grupo. A configuração da propagação de identidade confiável requer a colaboração entre os administradores de Serviços da AWS conectados e os administradores do Centro de Identidade do IAM. Para ter mais informações, consulte [Prerequisites and considerations](https://docs.aws.amazon.com//singlesignon/latest/userguide/trustedidentitypropagation-overall-prerequisites.html).

### Configuração
<a name="setup-workflow-storagebrowser-method3"></a>

Para configurar a autenticação do Navegador de Armazenamento no Console de gerenciamento da AWS usando a funcionalidade [Concessão de Acesso do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants.html) e a [propagação de identidades confiáveis do Centro de Identidade do IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/trustedidentitypropagation.html), as aplicações devem solicitar dados do Amazon S3 em nome do usuário autenticado atual. Com essa abordagem, você pode conceder aos usuários ou grupos de usuários do seu diretório corporativo acesso direto aos buckets, prefixos ou objetos do S3. Isso significa que a aplicação não precisará mapear nenhum usuário para nenhuma entidade principal do IAM.

O fluxo de trabalho a seguir descreve as etapas para configurar o Navegador de Armazenamento para S3 usando o Centro de Identidade do IAM e a funcionalidade Concessão de Acesso do S3:


| Etapas | Descrição | 
| --- | --- | 
| 1 | [Habilitar o Centro de Identidade do IAM para o AWS Organizations](#enable-iam-idc-org) | 
| 2 | [Configurar a federação do Centro de Identidade do AWS Identity and Access Management](#configure-iam-idc)  | 
| 3 | [Adicionar um emissor de tokens confiáveis no console do Centro de Identidade do AWS Identity and Access Management](#add-trusted-token-issuer-idc) O emissor de tokens confiáveis representa o provedor de identidades (IdP) externo no Centro de Identidade do IAM, permitindo que ele reconheça tokens de identidade para os usuários autenticados da aplicação.  | 
| 4 | [Criar um perfil do IAM para a aplicação `bootstrap` e para `identity bearer`](#create-iam-role-bootstrap)  | 
| 5 | [Criar e configurar uma aplicação no Centro de Identidade do IAM](#create-app-iam-idc) Essa aplicação interage com o Centro de Identidade do IAM em nome dos usuários autenticados.  | 
| 6 | [Adicionar a funcionalidade Concessão de Acesso do S3 como uma aplicação confiável para propagação de identidades](#add-s3-ag-app) Esta etapa conecta a aplicação à funcionalidade Concessão de Acesso do S3, para que ela possa fazer solicitações a essa funcionalidade em nome de usuários autenticados.  | 
| 7 | [Criar uma concessão para um usuário ou grupo](#create-grant-user-group) Esta etapa sincroniza os usuários do Centro de Identidade do AWS Identity and Access Management com o System for Cross-domain Identity Management (SCIM). O SCIM mantém as identidades do Centro de Identidade do IAM sincronizadas com as identidades do provedor de identidades (IdP).  | 
| 8 | [Criar o componente Navegador de Armazenamento para S3](#create-storage-browser-component)  | 

### Habilitar o Centro de Identidade do IAM para o AWS Organizations
<a name="enable-iam-idc-org"></a>

Para habilitar o Centro de identidade do IAM para o AWS Organizations, execute as seguintes etapas:

1. Faça login no Console de gerenciamento da AWS usando um dos seguintes métodos:

   1. ****Iniciante na AWS (usuário-raiz)****: faça login como proprietário da conta, escolhendo a opção Usuário-raiz e inserindo o endereço de e-mail da Conta da AWS. Na próxima página, insira a senha.

   1. ****Já usa a AWS (credenciais do IAM)****: faça login usando as credenciais do IAM com permissões administrativas.

1. Abra o [console do IAM Identity Center](https://console.aws.amazon.com/singlesignon).

1. Em **Habilitar o IAM Identity Center**, escolha **Habilitar**.
**nota**  
O Centro de Identidade do IAM exige a configuração do AWS Organizations. Se você não configurou uma organização, pode optar para que a AWS crie uma para você. Escolha **Criar organização da AWS** para concluir esse processo.

1. Selecione **Habilitar com AWS Organizations**.

1. Escolha **Continuar**.

1. (Opcional) Adicione as tags que deseja associar a essa instância de organização.

1. (Opcional) Configure a administração delegada.
**nota**  
Se você estiver usando um ambiente com várias contas, recomendamos que configure a administração delegada. Com a administração delegada, você pode limitar o número de pessoas que precisam de acesso à conta de gerenciamento no AWS Organizations. Para ter mais informações, consulte [Delegated administration](https://docs.aws.amazon.com/singlesignon/latest/userguide/delegated-admin.html).

1. Escolha **Salvar**.

A AWS Organizations envia um e-mail de verificação automaticamente para o endereço associado à sua conta de gerenciamento. Talvez haja um atraso até você receber o e-mail de verificação. Verifique seu endereço de e-mail dentro de 24 horas, antes que o e-mail de verificação expire.

### Configurar a federação do Centro de Identidade do AWS Identity and Access Management
<a name="configure-iam-idc"></a>

Para usar o Navegador de Armazenamento para S3 com usuários do diretório corporativo, você deve configurar o Centro de Identidade do IAM para usar um provedor de identidades (IdP) externo. Você pode usar o provedor de identidades de sua escolha. No entanto, esteja ciente de que cada provedor de identidades usa configurações diferentes. Para tutoriais sobre como usar diferentes provedores de identidades externos, consulte [IAM Identity Center source tutorials](https://docs.aws.amazon.com/singlesignon/latest/userguide/tutorials.html).

**nota**  
Registre o URL do emissor e os atributos de público do provedor de identidades que você configurou, pois precisará consultá-los em etapas posteriores. Se você não tiver o acesso ou as permissões necessárias para configurar um IdP, talvez precise entrar em contato com o administrador do IdP externo para obtê-los. 

### Adicionar um emissor de tokens confiáveis no console do Centro de Identidade do AWS Identity and Access Management
<a name="add-trusted-token-issuer-idc"></a>

O emissor de tokens confiáveis representa o provedor de identidades externo no Centro de Identidade do AWS Identity and Access Management e reconhece os tokens para os usuários autenticados da aplicação. O proprietário da conta da instância do Centro de Identidade do IAM no AWS Organizations deve executar essas etapas. Essas etapas podem ser executadas no console do Centro de Identidade do IAM ou de maneira programática. 

Para adicionar um emissor de tokens confiáveis no console do Centro de Identidade do AWS Identity and Access Management, execute as seguintes etapas:

1. Abra o [console do IAM Identity Center](https://console.aws.amazon.com/singlesignon).

1. Escolha **Settings**.

1. Escolha a guia **Autenticação**.

1. Navegue até a seção **Emissores de tokens confiáveis** e preencha os seguintes detalhes:

   1. Em **URL do emissor**, insira o URL do IdP externo que serve como emissor de tokens confiáveis. Talvez seja necessário entrar em contato com o administrador do IdP externo para ter essas informações. Para ter mais informações, consulte [Using applications with a trusted token issuer](https://docs.aws.amazon.com/singlesignon/latest/userguide/using-apps-with-trusted-token-issuer.html).

   1. Em **Nome do emissor de tokens confiáveis**, insira um nome para o emissor de tokens confiáveis. Esse nome aparecerá na lista de emissores de tokens confiáveis que você pode selecionar na *Etapa 8*, quando um recurso da aplicação for configurado para propagação de identidades.

1. Atualize os **Atributos de mapeamento** para o atributo de aplicação de sua preferência, em que o atributo de cada provedor de identidades é mapeado para um atributo do Centro de Identidade do IAM. Por exemplo, você pode [mapear o atributo `email` da aplicação](https://docs.aws.amazon.com/singlesignon/latest/userguide/mapawsssoattributestoapp.html) para o atributo `email` do usuário do Centro de Identidade do IAM. Para ver a lista de atributos de usuário permitidos no Centro de Identidade do IAM, consulte a tabela em [Attribute mappings for AWS Managed Microsoft AD directory](https://docs.aws.amazon.com/singlesignon/latest/userguide/attributemappingsconcept.html).

1. (Opcional) Se você quiser adicionar uma tag de recurso, insira o par de chave/valor. Para adicionar várias tags de recursos, escolha **Adicionar nova tag** para gerar uma nova entrada e inserir os pares de chave/valor.

1. Escolha **Criar emissor de tokens confiáveis.**

1. Depois de concluir a criação do emissor de tokens confiáveis, entre em contato com o administrador da aplicação para informar o nome do emissor de tokens confiáveis, para que ele possa confirmar que o emissor de tokens confiáveis está visível no console aplicável. 

1. Garanta que o administrador da aplicação selecione esse emissor de tokens confiáveis no console aplicável para permitir o acesso do usuário à aplicação usando as aplicações configuradas para a propagação de identidades confiáveis.

### Criar um perfil do IAM para a aplicação `bootstrap` e para `identity bearer`
<a name="create-iam-role-bootstrap"></a>

Para garantir que a aplicação `bootstrap` e os usuários de `identity bearer` possam trabalhar adequadamente entre si, [crie dois perfis do IAM](https://docs.aws.amazon.com/managedservices/latest/onboardingguide/create-iam-role.html). Um perfil do IAM é necessário para a aplicação `bootstrap` e o outro perfil do IAM deve ser usado para o portador da identidade ou para os usuários finais que estão acessando o aplicativo web que solicita acesso por meio da funcionalidade Concessão de Acesso do S3. A aplicação `bootstrap` recebe o token emitido pelo provedor de identidades e invoca a API `CreateTokenWithIAM`, trocando esse token pelo token emitido pelo Centro de Identidade.

Crie um perfil do IAM, como `bootstrap-role`, com permissões como as mostradas a seguir. O seguinte exemplo de política do IAM concede permissões a `bootstrap-role` para realizar a troca de tokens:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
        "Action": [
            "sso-oauth:CreateTokenWithIAM",
        ],
        "Resource": "arn:${Partition}:sso::${AccountId}:application/${InstanceId}/${ApplicationId}",
        "Effect": "Allow"
    },
    {
        "Action": [
            "sts:AssumeRole",
            "sts:SetContext"
        ],
        "Resource": "arn:aws:iam::${AccountId}:role/identity-bearer-role",
        "Effect": "Allow"
    }]
}
```

Depois, crie outro perfil do IAM (como `identity-bearer-role`) que o intermediador de identidades usa para gerar as credenciais do IAM. As credenciais do IAM retornadas do intermediador de identidades para o aplicativo web são usadas pelo componente Navegador de Armazenamento para S3 a fim de permitir o acesso aos dados do S3:

```
{
    "Action": [
        "s3:GetDataAccess",
        "s3:ListCallerAccessGrants",
    ],
    "Resource": "arn:${Partition}:s3:${Region}:${Account}:access-grants/default",
    "Effect": "Allow"
}
```

Esse perfil do IAM (`identity-bearer-role`) deve usar uma política de confiança com a seguinte instrução:

```
{
   "Effect": "Allow",
   "Principal": {
      "AWS": "arn:${Partition}:iam::${Account}:role/${RoleNameWithPath}"
   },
   "Action": [
       "sts:AssumeRole",
       "sts:SetContext"
   ]
}
```

### Criar e configurar uma aplicação no Centro de Identidade do IAM
<a name="create-app-iam-idc"></a>

**nota**  
Antes de começar, confirme que você criou os perfis do IAM necessários na etapa anterior. Você precisará especificar um desses perfis do IAM nesta etapa.

Para criar e configurar uma aplicação gerenciada pelo cliente no Centro de Identidade do AWS IAM, execute as seguintes etapas:

1. Abra o [console do IAM Identity Center](https://console.aws.amazon.com/singlesignon).

1. Selecione **Aplicações**.

1. Escolha a guia **Gerenciada pelo cliente**.

1. Escolha **Adicionar aplicação**.

1. Na página **Selecionar tipo de aplicação**, em **Preferências de configuração**, escolha **Eu tenho uma aplicação que quero configurar**.

1. Em **Tipo de aplicação**, escolha **OAuth 2.0.**

1. Escolha **Próximo**. A página **Especificar aplicação** é exibida.

1. Na seção **Nome e descrição da aplicação**, insira um **Nome de exibição** para a aplicação, como **storage-browser-oauth**.

1. Insira uma **Descrição**. A descrição da aplicação aparece somente no console do Centro de Identidade do IAM e nas solicitações de API, não no portal de acesso da AWS.

1. Em **Método de atribuição de usuários e grupos**, escolha **Não exigir atribuições**. Essa opção permita que todos os usuários e grupos autorizados do Centro de Identidade do IAM acessem essa aplicação.

1. Em **Portal de acesso da AWS**, insira um URL de aplicação onde os usuários possam acessar a aplicação.

1. (Opcional) Se você quiser adicionar uma tag de recurso, insira o par de chave/valor. Para adicionar várias tags de recursos, escolha **Adicionar nova tag** para gerar uma nova entrada e inserir os pares de chave/valor.

1. Escolha **Próximo**. A página **Especificar autenticação** é exibida.

1. Em **Autenticação com emissor de tokens confiáveis**, use a caixa de seleção para selecionar o emissor de tokens confiáveis que você criou anteriormente.

1. Em **Configurar os emissores de tokens confiáveis selecionados**, insira a [declaração aud](https://docs.aws.amazon.com/singlesignon/latest/userguide/trusted-token-issuer-configuration-settings.html#trusted-token-issuer-aud-claim). A **declaração aud** identifica o público do token JSON da web (JWT) e é o nome pelo qual o emissor de tokens confiáveis identifica essa aplicação.
**nota**  
Talvez seja necessário entrar em contato com o administrador do IdP externo para ter essas informações.

1. Escolha **Próximo**. A página **Especificar credenciais de autenticação** é exibida.

1. Em **Método de configuração**, escolha **Inserir um ou mais perfis do IAM**.

1. Em **Inserir perfis do IAM**, adicione o [perfil do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) ou o nome do recurso da Amazon (ARN) para o token do portador da identidade. Você deve inserir o perfil do IAM que criou na etapa anterior para a aplicação do intermediador de identidades (por exemplo, **bootstrap-role**).

1. Escolha **Próximo**.

1. Na página **Revisar e configurar**, revise os detalhes da configuração da aplicação. Se você precisar modificar qualquer uma das configurações, escolha **Editar** para a seção que deseja editar e faça as alterações.

1. Selecione **Enviar**. É exibida a página de detalhes da aplicação que acabou de adicionar.

Depois que você configurou as aplicações, os usuários podem acessá-las no portal de acesso da AWS com base nos [conjuntos de permissões que você criou](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-started-create-a-permission-set.html) e no [acesso de usuário que você atribuiu](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-started-assign-account-access-user.html).

### Adicionar a funcionalidade Concessão de Acesso do S3 como uma aplicação confiável para propagação de identidades
<a name="add-s3-ag-app"></a>

Depois de configurar a aplicação gerenciada pelo cliente, você deve especificar a funcionalidade Concessão de Acesso do S3 para a propagação de identidades. A funcionalidade Concessão de Acesso do S3 fornece credenciais para que os usuários acessem os dados do Amazon S3. Quando você faz login na aplicação gerenciada pelo cliente, a funcionalidade Concessão de Acesso do S3 envia sua identidade de usuário para a aplicação confiável.

 **Pré-requisito:** configure a funcionalidade Concessão de Acesso do S3 (como [criar uma instância da funcionalidade Concessão de Acesso do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-instance-create.html) e [registrar um local](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-location-register.html)) antes de seguir estas etapas. Para ter mais informações, consulte [Conceitos básicos da funcionalidade Concessões de Acesso do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-get-started.html).

Para adicionar a funcionalidade Concessão de Acesso do S3 para propagação de identidades à aplicação gerenciada pelo cliente, execute as seguintes etapas:

1. Abra o [console do IAM Identity Center](https://console.aws.amazon.com/singlesignon).

1. Selecione **Aplicações**.

1. Escolha a guia **Gerenciada pelo cliente**.

1. Na lista **Aplicações gerenciadas pelo cliente**, selecione a aplicação OAuth 2.0 para a qual você deseja inicializar solicitações de acesso. Essa é a aplicação na qual os usuários farão login.

1. Na **página Detalhes**, em **Aplicações confiáveis para a propagação de identidades**, escolha **Especificar aplicações confiáveis**.

1. Em Tipo de configuração, selecione Aplicações individuais e especificar acesso e escolha **Avançar**.

1. Na página **Selecionar serviço**, escolha **Concessão de Acesso do S3**. A funcionalidade Concessão de Acesso do S3 tem aplicações que você pode usar para definir seu próprio aplicativo web para propagação de identidades confiáveis.

1. Escolha **Próximo**. Você selecionará as aplicações na próxima etapa.

1. Na página **Selecionar aplicações**, escolha **Aplicações individuais**, marque a caixa de seleção de cada aplicação que pode receber solicitações de acesso e escolha **Avançar**.

1. Na página **Configurar acesso**, em **Método de configuração**, escolha uma das seguintes opções: 
   + **Selecionar acesso por aplicação**: selecione essa opção para configurar diferentes níveis de acesso para cada aplicação. Escolha a aplicação para a qual você deseja configurar o nível de acesso e depois escolha **Editar acesso**. Em **Nível de acesso a ser aplicado**, altere os níveis de acesso conforme necessário e escolha **Salvar alterações**.
   + ****Aplicar o mesmo nível de acesso a todos as aplicações:**** selecione essa opção se você não precisar configurar níveis de acesso por aplicação.

1. Escolha **Próximo**.

1. Na página **Revisar configuração**, revise as escolhas que fez. 
**nota**  
Você deve garantir que a permissão `s3:access_grants:read_write` seja concedida aos usuários. Essa permissão possibilita que os usuários recuperem credenciais para acessar o Amazon S3. Use a política do IAM que você criou anteriormente ou a funcionalidade Concessão de Acesso do S3 para limitar o acesso às operações de gravação.

1. Para fazer alterações, escolha **Editar** para a seção de configuração que deseja alterar. Em seguida, faça as alterações necessárias e selecione **Salvar alterações**.

1. Escolha **Aplicações confiáveis** para adicionar a aplicação confiável para propagação de identidades.

### Criar uma concessão para um usuário ou grupo
<a name="create-grant-user-group"></a>

Nesta etapa, você usa o Centro de Identidade do IAM para provisionar os usuários. Você pode usar o SCIM para [provisionamento de usuários e grupos de maneira automatizada ou manual](https://docs.aws.amazon.com/singlesignon/latest/userguide/provision-automatically.html). O SCIM mantém as identidades do Centro de Identidade do IAM sincronizadas com as identidades do provedor de identidades (IdP). Isso inclui qualquer provisionamento, atualizações e desprovisionamento de usuários entre seu IdP e o IAM Identity Center.

**nota**  
Essa etapa é necessária porque, quando a funcionalidade Concessão de Acesso do S3 é usada com o Centro de Identidade do IAM, os usuários locais do Centro de Identidade do IAM não são usados. Em vez disso, os usuários devem ser sincronizados do provedor de identidades com o Centro de Identidade do IAM.

Para sincronizar usuários do seu provedor de identidades com o Centro de Identidade do IAM, execute as seguintes etapas:

1. [Habilitar o provisionamento automático](https://docs.aws.amazon.com/singlesignon/latest/userguide/how-to-with-scim.html).

1. [Gerar um token de acesso](https://docs.aws.amazon.com/singlesignon/latest/userguide/generate-token.html).

Para ver exemplos de como configurar o provedor de identidades com o Centro de Identidade do IAM para um caso de uso específico, consulte [IAM Identity Center Identity source tutorials](https://docs.aws.amazon.com/singlesignon/latest/userguide/tutorials.html).

### Criar o componente Navegador de Armazenamento para S3
<a name="create-storage-browser-component"></a>

Depois de configurar a instância do Centro de Identidade do IAM e criar concessões na funcionalidade Concessão de Acesso do S3, abra a aplicação React. Na aplicação React, use `createManagedAuthAdapter` para configurar as regras de autorização. Você deve fornecer um provedor de credenciais para retornar as credenciais obtidas do Centro de Identidade do IAM. Depois, você pode chamar `createStorageBrowser` para inicializar o componente Navegador de Armazenamento para S3:

```
import {
    createManagedAuthAdapter,
    createStorageBrowser,
} from '@aws-amplify/ui-react-storage/browser';
import '@aws-amplify/ui-react-storage/styles.css';

export const { StorageBrowser } = createStorageBrowser({
   config: createManagedAuthAdapter({
    credentialsProvider: async (options?: { forceRefresh?: boolean }) => {
      // return your credentials object
      return {
        credentials: {
          accessKeyId: 'my-access-key-id',
          secretAccessKey: 'my-secret-access-key',
          sessionToken: 'my-session-token',
          expiration: new Date(),
        },
      }
    },
    // AWS `region` and `accountId` of the S3 Access Grants Instance.
    region: '',
    accountId: '',
    // call `onAuthStateChange` when end user auth state changes 
    // to clear sensitive data from the `StorageBrowser` state
    registerAuthListener: (onAuthStateChange) => {},
  })
});
```



Em seguida, crie um mecanismo para trocar os tokens JSON da web (JWTs) do aplicativo web com as credenciais do IAM do Centro de Identidade do IAM. Para ter mais informações sobre como trocar o JWT, consulte os seguintes recursos:
+ Publicação [How to develop a user-facing data application with IAM Identity Center and S3 Access Grants](https://aws.amazon.com/blogs/storage/how-to-develop-a-user-facing-data-application-with-iam-identity-center-and-s3-access-grants-part-2/) no *AWS Storage Blog*
+ Publicação [Scaling data access with S3 Access Grants](https://aws.amazon.com/blogs/storage/scaling-data-access-with-amazon-s3-access-grants/) no *AWS Storage Blog*
+ [S3 Access Grants workshop](https://catalog.us-east-1.prod.workshops.aws/workshops/77b0af63-6ad2-4c94-bfc0-270eb9358c7a/en-US) no *AWS workshop studio*
+ [S3 Access Grants workshop](https://github.com/aws-samples/s3-access-grants-workshop) no *GitHub*

Depois, configure um endpoint de API para lidar com solicitações de busca de credenciais. Para validar a troca de tokens JSON da web (JWTs), execute as seguintes etapas:

1. Recupere o token JSON da web do cabeçalho de autorização para solicitações recebidas.

1. Valide o token usando as chaves públicas do URL do conjunto de chaves JSON da web (JWKS) especificado.

1. Verifique a expiração do token, o emissor, o assunto e as reivindicações de público.

Para trocar o token JSON da web do provedor de identidades por credenciais do AWS IAM, execute as seguintes etapas: 

**dica**  
Evite evitar registrar qualquer informação confidencial. Recomendamos que você use controles de tratamento de erros para autorizações ausentes, tokens expirados e outras exceções. Para ter mais informações, consulte a publicação [Implementing AWS Lambda error handling patterns](https://aws.amazon.com/blogs/compute/implementing-aws-lambda-error-handling-patterns/) no *AWS Compute Blog*.

1. Verifique se os parâmetros **Permissão** e **Escopo** necessários foram fornecidos na solicitação.

1. Use a API [https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateTokenWithIAM.html](https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateTokenWithIAM.html) para trocar o token JSON da web por um token do Centro de Identidade do IAM.
**nota**  
Depois que o token JSON da web do IdP é usado, ele não pode ser usado novamente. Um novo token deve ser usado para troca com o Centro de Identidade do IAM.

1. Use a operação de API [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) para assumir um perfil transitório usando o token do Centro de Identidade do IAM. Use o perfil do portador da identidade, também conhecido como perfil que carrega o contexto da identidade (por exemplo, **identity-bearer-role**) para solicitar as credenciais.

1. Retorne as credenciais do IAM para o aplicativo web.
**nota**  
Confirme que você configurou um mecanismo de registro em log adequado. As respostas são retornadas em um formato JSON padronizado com um código de status HTTP apropriado.