Rodrigo Fernandes
Posted on May 19, 2023
Anotações sobre o AWS S3 para ajudar na preparação das certificações AWS.
Até o momento as anotações são para as certificações abaixo:
Anotações gerais
- S3 Notification pode enviar para Lambda, SQS e SNS
- Habilitar versionamento NÃO melhora a segurança do Bucket.
- Se perder a KMS Key que criptografou o o objetivo você perde acesso ao objeto.
- Amazon S3-Managed Keys (SSE-S3) usa a criptografia AES-256
Police a nível de Bucket e Objeto
- Bucket Level -
arn:aws:s3:::demo
- Object Level -
arn:aws:s3:::demo/*
- Bucket e Object Level -
arn:aws:s3:::demo*
- Não recomendado
Exemplo de Policy a nível de Bucket
{
"Version": "2012-10-17",
"Statement":
{
"Effect": "Allow",
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::nomedobucket"]
}
}
*Exemplo de Policy a nível de Objeto
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::nomedobucket"]
},
{
"Effect": "Allow",
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::nomedobucket/*"]
}
]
}
*Exemplo de Policy a nível de Bucket e Objeto -- Não recomendado
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::nomedobucket*"]
}
]
}
Logging requests using server access logging
- Habilitar server access log no bucket
Controlling access from VPC endpoints with bucket policies
- Libere o acesso no bucket policy
Amazon S3 Event Notifications
- Não vem habilitado por padrão
- Você pode usar o recurso Notificações de eventos do Amazon S3 para receber notificações quando determinados eventos ocorrerem em seu bucket do S3.
- Para habilitar notificações, adicione uma configuração de notificação que identifique os eventos que você deseja que o Amazon S3 publique.
Destination
- Amazon Simple Notification Service (Amazon SNS) topics
- Amazon Simple Queue Service (Amazon SQS) queues
- AWS Lambda
- Amazon EventBridge
Visão geral das notificações de eventos do Amazon S3
- New object created events
- Object removal events
- Restore object events
- Reduced Redundancy Storage (RRS) object lost events
- Replication events
- S3 Lifecycle expiration events
- S3 Lifecycle transition events
- S3 Intelligent-Tiering automatic archival events
- Object tagging events
- Object ACL PUT events
Problema de acesso a objetos após upload entre contas
- No comando
aws s3api put-object
, inserir--acl "bucket-owner-full-control
para conceder permissões aos objetos
Como usar um ID externo ao conceder acesso aos seus recursos da AWS a terceiros
- o ID externo permite que o usuário que está assumindo a função assegure as circunstâncias nas quais elas operam.
- IAM Role + ExternalID + ARN -> Acesso cross-account
Concessão da permissão s3:PutObject com uma condição que exige que o proprietário do bucket obtenha controle total
- Você pode exigir o cabeçalho x-amz-full-control na solicitação com permissão de controle total do proprietário do bucket.
- A policy de bucket a seguir concede ao usuário Dave a permissão s3:PutObject com uma condição de uso da chave de condição s3:x-amz-grant-full-control, que exige que a solicitação inclua o cabeçalho x-amz-full-control.
Cross Account S3 Access
- IAM Role + External-ID + Fornecer ARN da Role para conta destino -> Acesso Cross-Account
- Cria o Bucket Policy na conta principal liberando acesso das contas de destino
- Na Bucket Policy coloca no
Principal
a conta de destino - Na conta de destino deve-se criar uma Policy/Role que permite acessar o bucket na conta principal
- Utiliza ACL para permissões a nível de Objeto
Exemplo bucket policy conta principal
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
**"AWS": "arn:aws:iam::ACCOUNT-B-NUMBER:root"**
},
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::mykplabs-central/*"
]
}
]
}
Exemplo Policy Conta destino
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::mykplabs-central/*"
}
]
}
Referências
- Como posso oferecer acesso entre contas a objetos que estão em buckets do Amazon S3?
- Permissões do AWS S3
- Como usar um ID externo ao conceder acesso aos seus recursos da AWS a terceiros
S3 ACL
As ACLs são usadas para conceder permissões básicas de leitura/gravação em recursos para outras contas da AWS.
- ACL suporta conjunto de permissões limitadas e
- não pode conceder permissões condicionais, nem pode negar permissões explicitamente
- não pode ser usado para conceder permissões para sub-recursos de bucket
- Utilizando com Cross-Account
- Aplicado a nível de arquivos (objetos)
- Specified in the request using x-amz-acl
- Não veem habilitado por padrão, tem que habilitar manualmente
- Permissão
s3getobject
deve estar na policy
Permissões
Commands
Command to verify the ACL information of a specific object:
aws s3api get-object-acl --bucket bucket --key file.txt
Command to upload object with specific ACL
aws s3 cp file.txt s3://bucket/ --acl bucket-owner-full-control
Referências
- Visão geral da lista de controle de acesso (ACL)
- Bucket owner granting permissions to objects it does not own
- - Como posso oferecer acesso entre contas a objetos que estão em buckets do Amazon S3?
MFA
- A AIM Policy precisa ter a Condition abaixo:
"Bool": {"aws:MultiFactorAuthPresent": true}
Este exemplo mostra como você pode criar uma política baseada em identidade que usa várias condições, que são avaliadas usando um arquivo AND. Ele permite acesso total ao serviço chamado SERVICE-NAME-1, e acesso às ações ACTION-NAME-A e ACTION-NAME-Bno serviço chamado SERVICE-NAME-2. Essas ações são permitidas somente quando o usuário é autenticado usando a autenticação multifator (MFA) .
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": [
"service-prefix-1:*",
"service-prefix-2:action-name-a",
"service-prefix-2:action-name-b"
],
"Resource": "*",
"Condition": {
** "Bool": {"aws:MultiFactorAuthPresent": true},**
"DateGreaterThan": {"aws:CurrentTime": "2017-07-01T00:00:00Z"},
"DateLessThan": {"aws:CurrentTime": "2017-12-31T23:59:59Z"}
}
}
}
MFA CLI
Documentação oficial
- aws ec2 describe-instances --profile mfa
- aws ec2 stop-instances --instance-ids instance-id --profile mfa --region region
- aws sts get-session-token --serial-number arn:aws:iam::accountid:mfa/user _--token-code _code
S3 Versioning
- Você habilita e suspende o versionamento no nível do bucket.
- Depois que um bucket é habilitado para versionamento, ele nunca pode voltar a um estado sem versionamento.
- Mas você pode suspender o versionamento nesse bucket
Os buckets podem estar em um dos três estados:
- Não versionado (Padrão)
- Habilitado para versão
- Com versionamento suspenso
Referências
Pre-signed URL´s
Por padrão, todos os objetos do S3 são privados. Somente o proprietário do objeto tem permissão para acessá-lo. Contudo, o proprietário do objeto pode compartilhar objetos com os outros criando um pre-signed URL, usando suas próprias credenciais de segurança para conceder permissão de prazo limitado para download de objetos.
- Todos os buckets e objetos são privados por padrão.
- Os pre-signed URL permitem que o usuário faça download ou upload de um objeto específico sem exigir credenciais ou permissões de segurança da AWS.
- A pre-signed URL permite que qualquer pessoa acesse o objeto identificado na URL, desde que o criador da URL tenha permissão para acessar esse objeto.
- A criação de pre-signed URL exige que o criador forneça credenciais de segurança, um nome de bucket, uma chave de objeto, um método HTTP (GET para objeto de download e PUT para objetos de upload) e data e hora de expiração
- Os pre-signed URL são válidos apenas até a data e hora de expiração.
-
--expires-in (integer)
Number of seconds until the pre-signed URL expires. - Default is 3600 seconds. Maximum is 604800 seconds.
Comandos
Ex: aws s3 presign s3://DOC-EXAMPLE-BUCKET/test2.txt \
- expires-in 604800
Após executar o comando é gerado a URL pré assinada
Referências
Pre-Signed URLs
Cross Region Replication
O Amazon S3 replica somente itens específicos nos buckets que estão configurados para replicação.
- Por default usa SSL
- Replica em uma direção
- Uma vez replicado o objeto não é replicado novamante
- Usa Amazon S3 managed keys (SSE-S3) ou AWS KMS managed keys (SSE-KMS), mas não é habilitado por padrão
-
aws:SecureTransport
é default no CRR - Delete markers é replicado, mas não é habilitado por padrão
- Versões deletadas dos arquivos não
- Versionamento deve estar habilitado
- Ambas as contas devem ter o IAM Role configurado
Quando usar a replicação entre regiões
- A replicação entre regiões (CRR) do S3 é usada para copiar objetos entre buckets do Amazon S3 em Regiões da AWS diferentes.
- As tags podem ajudar a fazer o seguinte:
- Atender aos requisitos de conformidade: embora o Amazon S3, por padrão, armazene seus dados em diversas zonas de disponibilidade geograficamente distantes, requisitos de conformidade podem exigir que você armazene os dados a distâncias ainda maiores.
- Para atender a esses requisitos, use a Cross-Region Replication para replicar dados entre Regiões da AWS distantes.
- **Minimizar a latência: **se seus clientes estiverem em duas localizações geográficas diferentes, é possível minimizar a latência no acesso a objetos mantendo cópias dos objetos nas Regiões da AWS geograficamente mais próximas dos usuários.
- Aumentar a eficiência operacional: se tiver clusters de computação em duas Regiões da AWS diferentes que analisam o mesmo conjunto de objetos, talvez você prefira manter cópias dos objetos nessas regiões.
Quando usar Replicação na mesma região
- A replicação para a mesma região (SRR) é usada para copiar objetos entre buckets do Amazon S3 na mesma Região da AWS. A SRR pode ajudar a fazer o seguinte:
- Agregar logs em um único bucket: se você armazenar os logs em vários buckets ou em várias contas, será possível replicar facilmente os logs em um único bucket na região.
- Isso permite processar os logs em um único local, o que é mais simples.
- Configurar replicação em tempo real entre contas de produção e teste: se você ou seus clientes tiverem contas de produção e de teste que usam os mesmos dados, será possível replicar objetos entre essas várias contas, mantendo os metadados dos objetos.
- Cumprir as leis de soberania de dados: pode ser necessário armazenar várias cópias dos dados em Contas da AWS separadas em uma determinada região.
- A replicação na mesma região pode ajudar a replicar automaticamente dados vitais quando os regulamentos de conformidade não permitirem que os dados saiam do país.
Referências
- Replicação de objetos
- Amazon S3 Replication Adds Support for Multiple Destination Buckets
- O Amazon S3 apresenta o recurso Same-Region Replication
Lockout Bucket S3
- Conecta com root user, para deletar/alterar a bucket policy
Referências
What can I do if I am locked out of my bucket?
Posted on May 19, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.