Uso de URLs pré-assinados para o S3 no Outposts
Você pode usar um URL pré-assinado para conceder acesso por tempo limitado a objetos armazenados localmente em um Outpost sem atualizar sua política de bucket. Com URLs pré-assinados, como proprietário do bucket, você pode compartilhar objetos com indivíduos em sua nuvem privada virtual (VPC) ou conceder a eles a capacidade de carregar ou excluir objetos.
Ao criar um URL pré-assinado usando os AWS SDKs ou a AWS Command Line Interface (AWS CLI), você associa o URL a uma ação específica. Você também concede acesso por tempo limitado ao URL pré-assinado escolhendo um tempo de expiração personalizado a partir de 1 segundo e de até 7 dias. Ao compartilhar o URL pré-assinado, o indivíduo na VPC pode executar a ação incorporada no URL como se fosse o usuário da assinatura original. Ao atingir o tempo de expiração, o URL expira e não funciona mais.
Limitar recursos de pre-signed URLs
Os recursos de um URL pré-assinado são limitados pelas permissões do usuário que o criou. Em essência, os URLs pré-assinados são tokens ao portador que concedem acesso ao portador. Dessa forma, recomendamos que você os proteja adequadamente.
AWS Signature Version 4 (SigV4)
Para aplicar um comportamento específico quando solicitações de URL pré-assinado forem autenticadas usando AWS Signature Version 4 (SigV4), você pode usar chaves de condição nas políticas de bucket e políticas de ponto de acesso. Por exemplo, você pode criar uma política de bucket que use a condição s3-outposts:signatureAge
para negar qualquer solicitação de URL pré-assinado do Amazon S3 no Outposts em objetos no bucket example-outpost-bucket
se a assinatura tiver mais de 10 minutos de idade. Para usar esse exemplo, substitua os
por suas próprias informações.user input
placeholders
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Deny a presigned URL request if the signature is more than 10 minutes old", "Effect": "Deny", "Principal": {"AWS":"
444455556666
"}, "Action": "s3-outposts:*", "Resource": "arn:aws:s3-outposts:us-east-1
:111122223333
:outpost/op-01ac5d28a6a232904
/bucket/example-outpost-bucket
/object/*", "Condition": { "NumericGreaterThan": {"s3-outposts:signatureAge": 600000}, "StringEquals": {"s3-outposts:authType": "REST-QUERY-STRING"} } } ] }
Para obter uma lista de chaves de condição e exemplos adicionais de política que você pode usar para aplicar um comportamento específico quando solicitações de URL pré-assinado forem autenticadas usando o Signature Version 4, consulte Chaves de política específicas de autenticação do AWS Signature Version 4 (SigV4).
Restrição de caminho de rede
Se quiser restringir o uso de URLs pré-assinados e qualquer acesso do S3 no Outposts a caminhos específicos de rede, você poderá criar políticas que exijam um caminho específico de rede. Para definir a restrição na entidade principal do IAM que faz a chamada, você pode usar políticas do AWS Identity and Access Management (IAM) baseadas em identidade (por exemplo, políticas de usuário, grupo ou perfil). Para definir a restrição no recurso do S3 no Outposts, você pode usar políticas baseadas em recursos (p. ex., políticas de bucket e ponto de acesso).
Uma restrição de caminho de rede na entidade principal do IAM exige que o usuário dessas credenciais faça solicitações pela rede especificada. Uma restrição no bucket ou no ponto de acesso exige que todas as solicitações encaminhadas para esse recurso tenham origem na rede especificada. Essas restrições também são aplicadas fora do cenário de URL pré-assinado.
A condição global do IAM que você usa depende do tipo de endpoint. Se estiver usando o endpoint público para o S3 no Outposts, use aws:SourceIp
. Se estiver usando um endpoint da VPC para o S3 no Outposts, use aws:SourceVpc
ou aws:SourceVpce
.
A declaração de política do IAM a seguir requer que a entidade principal só acesse a AWS do intervalo de rede especificado. Com essa declaração de política, exige-se que qualquer acesso tenha origem nesse intervalo. Isso inclui o caso de alguém que esteja usando um URL pré-assinado para o S3 no Outposts. Para usar esse exemplo, substitua os
por suas próprias informações.user input
placeholders
{ "Sid": "NetworkRestrictionForIAMPrincipal", "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "NotIpAddressIfExists": {"aws:SourceIp": "
IP-address-range
"}, "BoolIfExists": {"aws:ViaAWSService": "false"} } }
Para ver um exemplo de política de bucket que usa a chave de condição global aws:SourceIP
da AWS para restringir o acesso a um bucket do S3 no Outposts a um intervalo específico de rede, consulte Configurar o IAM com o S3 on Outposts.
Quem pode criar um URL pré-assinado
Qualquer um com credenciais de segurança válidas pode criar um pre-signed URL. Porém, para que um usuário na VPC tenha êxito no acesso a um objeto, o URL pré-assinado deve ter sido criado por alguém que tenha permissão para executar a operação na qual o URL pré-assinado é baseado.
Você pode usar as seguintes credenciais para criar um URL pré-assinado:
-
Perfil de instância do IAM: válido por até 6 horas.
-
AWS Security Token Service: válido por até 36 horas quando assinado com credenciais permanentes, como as credenciais do usuário raiz da Conta da AWS ou um usuário do IAM.
-
Usuário do IAM: válido por até 7 dias quando você estiver usando o AWS Signature Version 4.
Para criar um URL pré-assinado que seja válido por até 7 dias, primeiro delegue credenciais de usuário do IAM (a chave de acesso e a chave secreta) ao SDK que estiver usando. Em seguida, gere um URL pré-assinado usando o AWS Signature Version 4.
nota
-
Se tiver criado um URL pré-assinado usando um token temporário, o URL expirará quando o token expirar, mesmo que você tenha criado o URL com um tempo de expiração posterior.
-
Como os URLs pré-assinados concedem acesso aos seus buckets do S3 no Outposts a quem tiver o URL, recomendamos protegê-los adequadamente. Para obter mais informações sobre como proteger URLs pré-assinados, consulte Limitar recursos de pre-signed URLs.
Quando o S3 no Outposts confere a data e a hora de validade de um URL pré-assinado?
O S3 no Outposts confere a data e a hora de expiração de um URL assinado ao receber a solicitação HTTP. Por exemplo, se um cliente começar a baixar um arquivo grande imediatamente antes do tempo de expiração, o download continuará mesmo que o tempo de expiração acabe durante o download. No entanto, se a conexão cair e o cliente tentar reiniciar o download posteriormente ao término do tempo de expiração, o download vai falhar.
Para obter mais informações sobre como usar um URL pré-assinado para compartilhar ou carregar objetos, consulte os tópicos a seguir.