Acesso entre contas da funcionalidade Concessões de Acesso do S3 - Amazon Simple Storage Service

Acesso entre contas da funcionalidade Concessões de Acesso do S3

Com a funcionalidade Concessões de Acesso do S3, você pode conceder acesso aos dados do Amazon S3 ao seguinte:

  • Identidades do AWS Identity and Access Management (IAM) em sua conta

  • Identidades do IAM em outras contas da AWS

  • Diretório de usuários ou grupos na instância do AWS IAM Identity Center

Primeiro, configure o acesso entre contas para a outra conta. Essa ação requer a concessão de acesso à instância da funcionalidade Concessões de Acesso do S3 por meio de uma política de recursos. Em seguida, conceda acesso aos seus dados do S3 (buckets, prefixos ou objetos) usando concessões.

Após a configuração do acesso entre contas, a outra conta pode solicitar credenciais de acesso temporário aos seus dados do Amazon S3 por meio da funcionalidade Concessões de Acesso do S3. A imagem a seguir mostra o fluxo de usuários para acesso entre contas ao S3 por meio da funcionalidade Concessões de Acesso do S3:

Fluxo de usuários da funcionalidade Concessões de Acesso do S3
  1. Os usuários ou as aplicações em uma segunda conta (B) solicitam credenciais da instância da funcionalidade Concessões de Acesso do S3 em sua conta (A), na qual os dados do Amazon S3 são armazenados. Para ter mais informações, consulte Solicitar acesso aos dados do Amazon S3 por meio da funcionalidade Concessões de Acesso do S3.

  2. A instância da funcionalidade Concessões de Acesso do S3 em sua conta (A) retornará credenciais temporárias se houver uma concessão que dê à segunda conta acesso aos seus dados do Amazon S3. Para ter mais informações, consulte Criar concessões.

  3. Os usuários ou as aplicações na segunda conta (B) usam as credenciais fornecidas pela funcionalidade Concessões de Acesso do S3 para acessar os dados do S3 em sua conta (A).

Acesso entre contas da funcionalidade Concessões de Acesso do S3

Para conceder acesso entre contas ao S3 por meio da funcionalidade Concessões de Acesso do S3, siga estas etapas:

  • Etapa 1: configure uma instância da funcionalidade Concessões de Acesso do S3 em sua conta (por exemplo, ID de conta 111122223333), na qual os dados do S3 são armazenados.

  • Etapa 2: configure a política de recursos para a instância da funcionalidade Concessões de Acesso do S3 em sua conta 111122223333 para dar acesso à segunda conta (por exemplo, ID de conta 444455556666).

  • Etapa 3: configure as permissões do IAM para a entidade principal do IAM na segunda conta (444455556666) para solicitar credenciais da instância da funcionalidade Concessões de Acesso do S3 em sua conta 111122223333.

  • Etapa 4: crie uma concessão em sua conta 111122223333 que dê à entidade principal do IAM na segunda conta (444455556666) acesso a alguns dos dados do S3 em sua conta 111122223333.

Etapa 1: configurar uma instância da funcionalidade Concessões de Acesso do S3 em sua conta

Primeiro, você deve ter uma instância da funcionalidade Concessões de Acesso do S3 em sua conta 111122223333 para gerenciar o acesso aos dados do Amazon S3. É necessário criar uma instância da funcionalidade Concessões de Acesso do S3 em cada Região da AWS na qual os dados do S3 que você deseja compartilhar são armazenados. Se você compartilhar dados em mais de uma Região da AWS, repita cada uma dessas etapas de configuração para cada Região da AWS. Se você já tiver uma instância da funcionalidade Concessões de Acesso do S3 na Região da AWS local em que os dados do S3 são armazenados, passe para a próxima etapa. Se você não configurou uma instância da funcionalidade Concessões de Acesso do S3, consulte Criar uma instância da funcionalidade Concessões de Acesso do S3 para concluir esta etapa.

Etapa 2: configurar a política de recursos da instância da funcionalidade Concessões de Acesso do S3 para conceder acesso entre contas

Depois de criar uma instância da funcionalidade Concessões de Acesso do S3 em sua conta 111122223333 para acesso entre contas, configure a política baseada em recursos para a instância da funcionalidade Concessões de Acesso do S3 em sua conta 111122223333 a fim de conceder acesso entre contas. A instância da funcionalidade Concessões de Acesso do S3 é compatível com políticas baseadas em recurso. Com a política baseada em recursos correta em vigor, você pode conceder a usuários ou perfis do AWS Identity and Access Management (IAM) de outras Contas da AWS acesso à sua instância da funcionalidade Concessões de Acesso do S3. O acesso entre contas concede somente estas permissões (ações):

  • s3:GetAccessGrantsInstanceForPrefix: o usuário, o perfil ou a aplicação pode recuperar a instância da funcionalidade Concessões de Acesso do S3 que contém um prefixo específico.

  • s3:ListAccessGrants

  • s3:ListAccessLocations

  • s3:GetDataAccess: o usuário, o perfil ou a aplicação pode solicitar credenciais temporárias com base no acesso concedido por meio da funcionalidade Concessões de Acesso do S3. Use essas credenciais para acessar os dados do S3 aos quais você recebeu acesso.

Você pode escolher quais dessas permissões deseja incluir na política de recursos. Essa política de recursos na instância da funcionalidade Concessões de Acesso do S3 é uma política normal baseada em recursos e é compatível com tudo o que a linguagem de política do IAM permite. Na mesma política, você pode conceder acesso a identidades do IAM específicas na conta 111122223333 (por exemplo, usando a condição aws:PrincipalArn), mas não precisa fazer isso com a funcionalidade Concessões de Acesso do S3. Em vez disso, na instância da funcionalidade Concessões de Acesso do S3, é possível criar concessões para identidades do IAM individuais de sua conta, bem como para a outra conta. Ao gerenciar cada concessão de acesso por meio da funcionalidade Concessões de Acesso do S3, você pode escalar suas permissões.

Se você já usa o AWS Resource Access Manager (AWS RAM), é possível utilizá-lo para compartilhar recursos do s3:AccessGrants com outras contas ou dentro da sua organização. Para obter mais informações, consulte Working with shared AWS resources. Se você não usa o AWS RAM, também pode adicionar a política de recursos usando as operações de API da funcionalidade Concessões de Acesso do S3 ou a AWS Command Line Interface (AWS CLI).

Recomendamos que você use o console do AWS Resource Access Manager (AWS RAM) para compartilhar recursos do s3:AccessGrants com outras contas ou dentro da sua organização. Para compartilhar a funcionalidade Concessões de Acesso do S3 entre contas, faça o seguinte:

Para configurar a política de recursos da instância da funcionalidade Concessões de Acesso do S3:
  1. Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. Selecione a Região da AWS no seletor de Região da AWS.

  3. No painel de navegação esquerdo, escolha Concessões de acesso.

  4. Na página da instância da funcionalidade Concessões de Acesso, na seção Instância nesta conta, selecione Compartilhar instância. Isso redirecionará você para o console do AWS RAM.

  5. Selecione Criar compartilhamento de recursos.

  6. Siga as etapas do AWS RAM para criar um compartilhamento de recursos. Para obter mais informações, consulte Creating a resource share in AWS RAM.

Para instalar a AWS CLI, consulte Instalar a AWS CLI no Guia do usuário da AWS Command Line Interface.

Você pode adicionar a política de recursos usando o comando put-access-grants-instance-resource-policy da CLI.

Quanto ao acesso entre contas para a instância da funcionalidade Concessões de Acesso do S3 que está em sua conta 111122223333, se você quiser concedê-lo à segunda conta (444455556666), a política de recursos da instância da funcionalidade Concessões de Acesso do S3 em sua conta 111122223333 deve dar à segunda conta (444455556666) permissão para realizar as seguintes ações:

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

Na política de recursos da instância da funcionalidade Concessões de Acesso do S3, especifique o ARN da sua instância da funcionalidade Concessões de Acesso do S3 como o Resource e a segunda conta (444455556666) como a Principal. Para usar o exemplo a seguir, substitua os espaços reservados para entrada do usuário por suas próprias informações.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "444455556666" }, "Action": [ "s3:ListAccessGrants", "s3:ListAccessGrantsLocations", "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" } ] }

Para adicionar ou atualizar a política de recursos da instância da funcionalidade Concessões de Acesso do S3, use o comando a seguir. Ao usar o comando de exemplo a seguir, substitua os user input placeholders por suas próprias informações.

exemplo Adicionar ou atualizar uma política de recursos da instância da funcionalidade Concessões de Acesso do S3
aws s3control put-access-grants-instance-resource-policy \ --account-id 111122223333 \ --policy file://resourcePolicy.json \ --region us-east-2 { "Policy": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"444455556666\"\n },\n \"Action\": [\n \"s3:ListAccessGrants\",\n \"s3:ListAccessGrantsLocations\",\n \"s3:GetDataAccess\",\n \"s3:GetAccessGrantsInstanceForPrefix\"\n ],\n \"Resource\": \"arn:aws:s3:us-east-2:111122223333:access-grants/default\"\n }\n ]\n }\n", "CreatedAt": "2023-06-16T00:07:47.473000+00:00" }
exemplo Obter uma política de recursos da funcionalidade Concessões de Acesso do S3

Você também pode usar a CLI para obter ou excluir uma política de recursos para uma instância da funcionalidade Concessões de Acesso do S3.

Para obter uma política de recursos da funcionalidade Concessões de Acesso do S3, use o comando de exemplo a seguir. Para usar esse exemplo de comando, substitua os user input placeholders por suas próprias informações.

aws s3control get-access-grants-instance-resource-policy \ --account-id 111122223333 \ --region us-east-2 { "Policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::111122223333:root\"},\"Action\":[\"s3:ListAccessGrants\",\"s3:ListAccessGrantsLocations\",\"s3:GetDataAccess\"],\"Resource\":\"arn:aws:s3:us-east-2:111122223333:access-grants/default\"}]}", "CreatedAt": "2023-06-16T00:07:47.473000+00:00" }
exemplo Excluir uma política de recursos da funcionalidade Concessões de Acesso do S3

Para excluir uma política de recursos da funcionalidade Concessões de Acesso do S3, use o comando de exemplo a seguir. Para usar esse exemplo de comando, substitua os user input placeholders por suas próprias informações.

aws s3control delete-access-grants-instance-resource-policy \ --account-id 111122223333 \ --region us-east-2 // No response body

Você pode adicionar a política de recursos usando a API PutAccessGrantsInstanceResourcePolicy.

Quanto ao acesso entre contas para a instância da funcionalidade Concessões de Acesso do S3 que está em sua conta 111122223333, se você quiser concedê-lo à segunda conta (444455556666), a política de recursos da instância da funcionalidade Concessões de Acesso do S3 em sua conta 111122223333 deve dar à segunda conta (444455556666) permissão para realizar as seguintes ações:

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

Na política de recursos da instância da funcionalidade Concessões de Acesso do S3, especifique o ARN da sua instância da funcionalidade Concessões de Acesso do S3 como o Resource e a segunda conta (444455556666) como a Principal. Para usar o exemplo a seguir, substitua os espaços reservados para entrada do usuário por suas próprias informações.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "444455556666" }, "Action": [ "s3:ListAccessGrants", "s3:ListAccessGrantsLocations", "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" } ] }

Em seguida, você pode usar a API PutAccessGrantsInstanceResourcePolicy para configurar a política.

Para obter informações sobre o suporte à API REST para atualizar, obter ou excluir uma política de recursos para a instância da funcionalidade Concessões de Acesso do S3, consulte as seguintes seções na Referência da API do Amazon Simple Storage Service:

Esta seção fornece exemplos de SDK da AWS sobre como configurar sua política de recursos da funcionalidade Concessões de Acesso do S3 para conceder a uma segunda conta da AWS acesso a alguns dos seus dados do S3.

Java

Adicione, atualize, obtenha ou exclua uma política de recursos para gerenciar o acesso entre contas a uma instância da funcionalidade Concessões de Acesso do S3.

exemplo Adicionar ou atualizar uma política de recursos da instância da funcionalidade Concessões de Acesso do S3

Quanto ao acesso entre contas para a instância da funcionalidade Concessões de Acesso do S3 que está em sua conta 111122223333, se você quiser concedê-lo à segunda conta (444455556666), a política de recursos da instância da funcionalidade Concessões de Acesso do S3 em sua conta 111122223333 deve dar à segunda conta (444455556666) permissão para realizar as seguintes ações:

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

Na política de recursos da instância da funcionalidade Concessões de Acesso do S3, especifique o ARN da sua instância da funcionalidade Concessões de Acesso do S3 como o Resource e a segunda conta (444455556666) como a Principal. Para usar o exemplo a seguir, substitua os espaços reservados para entrada do usuário por suas próprias informações.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "444455556666" }, "Action": [ "s3:ListAccessGrants", "s3:ListAccessGrantsLocations", "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" } ] }

Para adicionar ou atualizar uma política de recursos da instância da funcionalidade Concessões de Acesso do S3, você pode usar o seguinte código de exemplo:

public void putAccessGrantsInstanceResourcePolicy() { PutAccessGrantsInstanceResourcePolicyRequest putRequest = PutAccessGrantsInstanceResourcePolicyRequest.builder() .accountId(111122223333) .policy(RESOURCE_POLICY) .build(); PutAccessGrantsInstanceResourcePolicyResponse putResponse = s3Control.putAccessGrantsInstanceResourcePolicy(putRequest); LOGGER.info("PutAccessGrantsInstanceResourcePolicyResponse: " + putResponse); }

Resposta:

PutAccessGrantsInstanceResourcePolicyResponse( Policy={ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "AWS": "444455556666" }, "Action": [ "s3:ListAccessGrants", "s3:ListAccessGrantsLocations", "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" }] } )
exemplo Obter uma política de recursos da funcionalidade Concessões de Acesso do S3

Para obter uma política de recursos da funcionalidade Concessões de Acesso do S3, você pode usar o código de exemplo a seguir. Para usar o comando a seguir, substitua os user input placeholders por suas próprias informações.

public void getAccessGrantsInstanceResourcePolicy() { GetAccessGrantsInstanceResourcePolicyRequest getRequest = GetAccessGrantsInstanceResourcePolicyRequest.builder() .accountId(111122223333) .build(); GetAccessGrantsInstanceResourcePolicyResponse getResponse = s3Control.getAccessGrantsInstanceResourcePolicy(getRequest); LOGGER.info("GetAccessGrantsInstanceResourcePolicyResponse: " + getResponse); }

Resposta:

GetAccessGrantsInstanceResourcePolicyResponse( Policy={"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::444455556666:root"},"Action":["s3:ListAccessGrants","s3:ListAccessGrantsLocations","s3:GetDataAccess"],"Resource":"arn:aws:s3:us-east-2:111122223333:access-grants/default"}]}, CreatedAt=2023-06-15T22:54:44.319Z )
exemplo Excluir uma política de recursos da funcionalidade Concessões de Acesso do S3

Para excluir uma política de recursos da funcionalidade Concessões de Acesso do S3, você pode usar o código de exemplo a seguir. Para usar o comando a seguir, substitua os user input placeholders por suas próprias informações.

public void deleteAccessGrantsInstanceResourcePolicy() { DeleteAccessGrantsInstanceResourcePolicyRequest deleteRequest = DeleteAccessGrantsInstanceResourcePolicyRequest.builder() .accountId(111122223333) .build(); DeleteAccessGrantsInstanceResourcePolicyResponse deleteResponse = s3Control.putAccessGrantsInstanceResourcePolicy(deleteRequest); LOGGER.info("DeleteAccessGrantsInstanceResourcePolicyResponse: " + deleteResponse); }

Resposta:

DeleteAccessGrantsInstanceResourcePolicyResponse()

Etapa 3: conceder às identidades do IAM em uma segunda conta permissão para chamar a instância da funcionalidade Concessões de Acesso do S3 em sua conta

Depois que o proprietário dos dados do Amazon S3 configurar a política entre contas para a instância da funcionalidade Concessões de Acesso do S3 na conta 111122223333, o proprietário da segunda conta (444455556666) deverá criar uma política baseada em identidade para seus usuários ou perfis do IAM e o proprietário deverá conceder a eles acesso à instância da funcionalidade Concessões de Acesso do S3. Na política baseada em identidade, inclua uma ou mais das seguintes ações, dependendo do que é concedido na política de recursos da instância da funcionalidade Concessões de Acesso do S3 e das permissões que você deseja conceder:

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

De acordo com o padrão de acesso entre contas da AWS, os usuários ou perfis do IAM na segunda conta (444455556666) devem ter explicitamente uma ou mais dessas permissões. Por exemplo, conceda a permissão s3:GetDataAccess para que o usuário ou perfil do IAM possa chamar a instância da funcionalidade Concessões de Acesso do S3 na conta 111122223333 para solicitar credenciais.

Para usar esse exemplo de comando, substitua os user input placeholders por suas próprias informações.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetDataAccess", ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" } ] }

Para obter mais informações sobre como editar uma política do IAM baseada em identidade, consulte Edição de políticas do IAM no AWS Identity and Access ManagementGuia do usuário do IAM.

Etapa 4: criar uma concessão na instância da funcionalidade Concessões de Acesso do S3 de sua conta que dê à entidade principal do IAM na segunda conta acesso a alguns de seus dados do S3.

Na etapa final de configuração, você pode criar uma concessão na instância da funcionalidade Concessões de Acesso do S3 em sua conta 111122223333 que dê acesso à identidade do IAM na segunda conta (444455556666) a alguns dos dados do S3 em sua conta. Isso pode ser feito usando o console do Amazon S3, a CLI, a API e os SDKs. Para ter mais informações, consulte Criar concessões.

Na concessão, especifique o ARN da AWS da identidade do IAM da segunda conta e especifique a qual local nos seus dados do S3 (um bucket, prefixo ou objeto) você está concedendo acesso. Esse local já deve estar registrado na instância da funcionalidade Concessões de Acesso do S3. Para ter mais informações, consulte Registrar um local. Você tem a opção de especificar um subprefixo. Por exemplo, se o local ao qual você está concedendo acesso for um bucket e quiser limitar ainda mais o acesso a um objeto específico nesse bucket, passe o nome da chave do objeto no campo S3SubPrefix. Ou, se você quiser limitar o acesso aos objetos no bucket com nomes de chave que começam com um prefixo específico, como 2024-03-research-results/, passe S3SubPrefix=2024-03-research-results/.

Veja a seguir um exemplo de comando da CLI para criar uma concessão de acesso para uma identidade na segunda conta. Consulte Criar concessões Para mais informações. Para usar esse exemplo de comando, substitua os user input placeholders por suas próprias informações.

aws s3control create-access-grant \ --account-id 111122223333 \ --access-grants-location-id default \ --access-grants-location-configuration S3SubPrefix=prefixA* \ --permission READ \ --grantee GranteeType=IAM,GranteeIdentifier=arn:aws:iam::444455556666:role/data-consumer-1

Depois de configurar o acesso entre contas, o usuário ou perfil na segunda conta pode fazer o seguinte: