## Privado (padrão)

Só quem tem Access/Secret Key acessa. É o certo para backups, dados de clientes e qualquer coisa que não seja para download aberto.

## Público (leitura anônima)

Para servir imagens de site, downloads, arquivos estáticos. Qualquer pessoa com a URL baixa o arquivo:

```
https://ENDPOINT-DA-API/NOME-DO-BUCKET/caminho/arquivo.jpg
```

Como tornar público:

- **Pelo painel:** Buckets → seu bucket → **Acesso/Política** → *Público (somente leitura)*.
- **Por linha de comando** (política anônima de leitura):

```
aws s3api put-bucket-policy --bucket midia-site --policy '{
  "Version": "2012-10-17",
  "Statement": [{"Effect": "Allow","Principal": "*","Action": ["s3:GetObject"],"Resource": ["arn:aws:s3:::midia-site/*"]}]
}'
```

Nunca deixe público um bucket de backup. Escrita anônima, jamais.

## Link pré-assinado (compartilhar um arquivo privado por tempo limitado)

O bucket continua privado; você gera uma URL que vale por X minutos:

```
# AWS CLI (1 hora)
aws s3 presign s3://backups-vps/relatorio.pdf --expires-in 3600

# rclone (24 horas)
rclone link lura:backups-vps/relatorio.pdf --expire 24h
```

Em código a maioria dos SDKs tem `getSignedUrl` / `generate_presigned_url`, exemplos em [Como usar o Object Storage em código](/hc/vps/articles/object-storage-como-usar-em-codigo).

## Uma chave por aplicação, com o mínimo de acesso

Não use a chave principal em todo lugar. Crie uma chave para cada uso (site, backup da VPS 1, backup da VPS 2) e restrinja ao bucket necessário. Se uma vazar, você revoga só ela.

Exemplo de política que permite ler e escrever apenas em `backups-vps`:

```json
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": ["s3:ListBucket","s3:GetObject","s3:PutObject","s3:DeleteObject"],
    "Resource": ["arn:aws:s3:::backups-vps","arn:aws:s3:::backups-vps/*"]
  }]
}
```

## CORS (quando o navegador vai acessar direto)

Upload/download feito pelo JavaScript do seu site precisa de CORS no bucket:

```
aws s3api put-bucket-cors --bucket midia-site --cors-configuration '{"CORSRules":[{"AllowedOrigins":["https://seusite.com"],"AllowedMethods":["GET","PUT"],"AllowedHeaders":["*"]}]}'
```
