Configurar o Navegador de Armazenamento para S3 - Amazon Simple Storage Service

Configurar o Navegador de Armazenamento para S3

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

Com esse método, você pode usar o AWS Amplify 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, 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.

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

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 GetDataAccess 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 ListCallerAccessGrants 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

Se você quiser associar uma instância da funcionalidade Concessão de Acesso do S3 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 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 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.

Configuração

Para configurar a autenticação do Navegador de Armazenamento no AWS Management Console usando a funcionalidade Concessão de Acesso do S3 e a propagação de identidades confiáveis do Centro de Identidade do IAM, 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
2 Configurar a federação do Centro de Identidade do AWS Identity and Access Management
3 Adicionar um emissor de tokens confiáveis no console do Centro de Identidade do AWS Identity and Access Management

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
5 Criar e configurar uma aplicação no Centro de Identidade do IAM

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

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

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

Habilitar o Centro de Identidade do IAM para o AWS Organizations

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

  1. Faça login no AWS Management Console 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.

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

  2. Abra o console do IAM Identity Center.

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

  4. Selecione Habilitar com AWS Organizations.

  5. Escolha Continuar.

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

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

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

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.

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

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.

  2. Escolha Settings.

  3. Escolha a guia Autenticação.

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

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

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

  6. (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.

  7. Escolha Criar emissor de tokens confiáveis.

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

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

Para garantir que a aplicação bootstrap e os usuários de identity bearer possam trabalhar adequadamente entre si, crie dois perfis do IAM. 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

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.

  2. Selecione Aplicações.

  3. Escolha a guia Gerenciada pelo cliente.

  4. Escolha Adicionar aplicação.

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

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

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

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

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

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

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

  12. (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.

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

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

  15. Em Configurar os emissores de tokens confiáveis selecionados, insira a declaração aud. 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.

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

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

  18. Em Inserir perfis do IAM, adicione o perfil do IAM 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).

  19. Escolha Próximo.

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

  21. 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 e no acesso de usuário que você atribuiu.

Adicionar a funcionalidade Concessão de Acesso do S3 como uma aplicação confiável para propagação de identidades

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 e registrar um local) antes de seguir estas etapas. Para ter mais informações, consulte Conceitos básicos da funcionalidade Concessões de Acesso do S3.

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.

  2. Selecione Aplicações.

  3. Escolha a guia Gerenciada pelo cliente.

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

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

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

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

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

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

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

  11. Escolha Próximo.

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

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

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

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

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.

Criar o componente Navegador de Armazenamento para S3

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:

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.

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

  3. 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 no AWS Compute Blog.

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

  2. Use a API CreateTokenWithIAM 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.

  3. Use a operação de API AssumeRole 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.

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