Bucket Policy
Bucket policies são regras de controle de acesso associadas a um bucket de armazenamento, que definem quem pode acessar ou gerenciar os objetos armazenados dentro desse bucket e de que forma. Essas políticas permitem que você controle permissões de forma detalhada, especificando ações permitidas, condições para acesso e usuários ou grupos que têm acesso.
Para mais informações sobre Bucket Policy, consulte a documentação de Bucket Policy.
Criar Bucket Policy
- 🖥️ Console
- MGC-CLI
- AWS-CLI
Você pode gerenciar suas Bucket Policies diretamente através do console de gerenciamento disponível em: https://console.magalu.cloud/.
-
Navegue até "Object Storage"
-
Clique nos três pontos laterais, e terá uma visualização como a mostrada abaixo:

-
Clique em "Editar Política"
Esse painel permite:
- Criar novas políticas.
- Editar políticas existentes.
Esse recurso proporciona um ambiente centralizado e de fácil uso para garantir que suas políticas estão configuradas de acordo com as melhores práticas de segurança e governança de dados.
Para adicionar uma bucket policy ao bucket, siga o passo abaixo:
mgc object-storage buckets policy set --dst NOME_DO_BUCKET --policy '{POLICY}'
Segue um exemplo de como criar uma bucket policy que permite apenas leitura no bucket:
mgc object-storage buckets policy set --dst NOME_DO_BUCKET --policy '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":"*","Action":"s3:GetObject","Resource":"NOME_DO_BUCKET/*"}]}'
Dependendo do terminal que você estiver usando, pode ser necessário adicionar uma barra invertida (\) antes de cada aspa dupla que faz parte do conteúdo do JSON:
mgc object-storage buckets policy set --dst=NOME_DO_BUCKET --policy="{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"s3:GetObject\",\"Resource\":\"NOME_DO_BUCKET/*\"}]}"
Para mais exemplos de policy, confira a seção Exemplos
Para adicionar uma bucket policy ao bucket, siga o passo abaixo:
aws s3api put-bucket-policy --bucket NOME_DO_BUCKET --policy file://POLICY-PATH
Segue um exemplo de como criar uma bucket policy que permite apenas leitura no bucket:
- Crie um arquivo
.jsoncontendo a política que deseja aplicar ao bucket.
Arquivo: bucket-policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "NOME_DO_BUCKET/*"
}
]
}
- Execute o comando:
aws s3api put-bucket-policy --bucket NOME_DO_BUCKET --policy file://bucket-policy.json
Para mais exemplos de policy, confira a seção Exemplos
Consultar Bucket Policy atual
Para consultar a sua Bucket Policy atual siga os passos abaixo:
- 🖥️ Console
- MGC-CLI
- AWS-CLI
O gerenciamento de Bucket Policies pode ser realizado através do console de gerenciamento disponível em: https://console.magalu.cloud/.
-
Navegue até "Object Storage"
-
Clique nos três pontos laterais, e terá uma visualização como a mostrada abaixo:

-
Clique em "Editar Política" A política atual será apresentada
- Consultar a Bucket Policy atual:
mgc object-storage buckets policy get --dst NOME_DO_BUCKET
- Consultar a Bucket Policy atual:
aws s3api get-bucket-policy --bucket NOME_DO_BUCKET
Remover Bucket Policy
Para remover uma Bucket Policy siga os passos abaixo:
- 🖥️ Console
- MGC-CLI
- AWS-CLI
Hoje não é possivel remover a bucket policy via Console, use a CLI nesses casos.
mgc object-storage buckets policy delete --dst NOME_DO_BUCKET
aws s3api delete-bucket-policy --bucket NOME_DO_BUCKET
Editar Bucket Policy
Esta página fornece instruções sobre como editar a Bucket Policy no nosso serviço de Object Storage. A Bucket Policy é crucial para controlar o acesso e as permissões do seu bucket.
Atualmente, não permitimos a edição direta de bucket policy via CLI, para a substituição, siga os passos abaixo.
- 🖥️ Console
- MGC-CLI
- AWS-CLI
O gerenciamento de Bucket Policies pode ser realizado diretamente através do console de gerenciamento disponível em: https://console.magalu.cloud/.
-
Navegue até "Object Storage"
-
Clique nos três pontos laterais, e terá uma visualização como a mostrada abaixo:

-
Clique em "Editar Política"
-
A política atual será apresentada
-
Altere conforme a sua necessidade
-
Clique em salvar alterações no canto inferior direito
- Recupere a Bucket Policy atual:
mgc object-storage buckets policy get --dst NOME_DO_BUCKET
-
Altere conforme a sua necessidade
-
Aplique a nova Bucket Policy:
mgc object-storage buckets policy set --dst NOME_DO_BUCKET --policy '{POLICY}'
- Recupere a Bucket Policy atual:
aws s3api get-bucket-policy --bucket NOME_DO_BUCKET
-
Altere conforme a sua necessidade, segue documentações com exemplos abaixo:
-
Aplique a nova Bucket Policy:
aws s3api put-bucket-policy --bucket NOME_DO_BUCKET --policy file://POLICY-PATH
Considerações de Segurança
Ao editar a Bucket Policy, certifique-se de:
- Não conceder mais permissões do que o necessário
- Revisar cuidadosamente a policy antes de aplicá-la
- Testar o acesso após a aplicação da nova policy
Exemplos
Para políticas que sejam necessários especificar usuários ou organizações que serão afetados, será necessário o TENANT-ID do mesmo
Recuperando o Tenant ID
mgc auth tenant list
O campo "uuid" é o Tenant-ID do usuário/organização.
Exemplo Prático: Criando uma Service Account e Adicionando como Principal
Este exemplo mostra como criar uma Service Account via mgc CLI e usar o seu email como principal em uma Bucket Policy.
Passo 1: Criar a Service Account
mgc iam service-accounts create \
--name app-object-storage \
--email app-object-storage \
--description 'Service Account para acesso ao Object Storage'
O retorno será semelhante a:
description: Service Account para acesso ao Object Storage
email: app-object-storage@COU-6123.sa.idmagalu.com
name: app-object-storage
uuid: 11111111-2222-3333-4444-555555555555
Anote o email — ele será usado no TENANT-ID para a Bucket Policy.
Passo 2: Criar a API Key vinculada à Service Account
mgc iam service-accounts api-keys create \
--sa-uuid 11111111-2222-3333-4444-555555555555 \
--name chave-object-storage
O retorno incluirá o campo api_key. Guarde-o em local seguro — ele não poderá ser visualizado novamente.
api_key: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
uuid: 99999999-8888-7777-6666-555555555555
Em seguida, defina os escopos necessários para Object Storage:
mgc iam service-accounts api-keys update \
--sa-uuid 11111111-2222-3333-4444-555555555555 \
--apikey-uuid 99999999-8888-7777-6666-555555555555 \
--scopes 'object-storage.read, object-storage.write'
Passo 3: Aplicar a Bucket Policy usando o UUID da Service Account como Principal
Com o uuid da Service Account em mãos, aplique a política ao bucket:
mgc object-storage buckets policy set \
--dst meu-bucket \
--policy '{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "MGC": ["<TENANT_ID_PROPRIETARIO>:sa/app-object-storage@COU-6123.sa.idmagalu.com"] },
"Action": ["s3:GetObject", "s3:PutObject", "s3:ListBucket"],
"Resource": ["meu-bucket/*", "meu-bucket"]
}
]
}'
Permitir Acessos com Policies
Permitir que um Usuário Específico Possa Realizar Somente Leitura, no Console da Magalu Cloud
Este exemplo ilustra como atribuir permissões de Visualizador para um usuário em meu-bucket, identificado pelo MGC, no Console da Magalu Cloud, garantindo que ele possa consultar recursos e configurações sem a capacidade de criar, modificar ou excluir. Essa configuração é ideal para cenários de auditoria ou monitoramento, onde o acesso à informação é necessário, mas a integridade da infraestrutura deve ser preservada contra alterações acidentais.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"MGC": ["TENANT-ID"]
},
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"meu-bucket/*",
"meu-bucket"
]
}
]
}
Permitir Somente Leitura
Este exemplo ilustra como permitir a ação s3:GetObject para todos os usuários em meu-bucket, garantindo que o
conteúdo do bucket possa ser acessado sem restrições de leitura. Essa configuração é útil para compartilhar dados
publicamente, mantendo a integridade e a segurança dos arquivos.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "meu-bucket/*"
}
]
}
Importante: Para que um usuário consiga visualizar e navegar pelos arquivos através do Console Magalu Cloud, a permissão "s3:GetObject" sozinha não é suficiente. É indispensável a atribuição da permissão "s3:ListBucket", que autoriza a listagem dos buckets e objetos. Sem ela, o console não poderá exibir o conteúdo do diretório.
Permitir que um Usuário Específico Possa Armazenar Objetos em uma Pasta
Este exemplo demonstra como permitir a ação s3:PutObject para um usuário identificado pelo MGC, restringindo o
acesso à pasta imagens dentro de meu-bucket. Essa configuração é útil para organizar dados e manter o controle
sobre quem pode adicionar novos arquivos em determinadas áreas do bucket.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"MGC": ["TENANT-ID"]
},
"Action": "s3:PutObject",
"Resource": "meu-bucket/imagens/*"
}
]
}
Permitir Acesso a um Bucket Somente para um Usuário Específico
Este exemplo ilustra como permitir a ação s3:GetObject para um usuário específico, identificado pelo MGC, em
meu-bucket. Essa abordagem é ideal para situações em que você precisa proteger dados sensíveis, garantindo que
apenas usuários autorizados possam acessar os recursos do bucket.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"MGC": ["TENANT-ID"]
},
"Action": "s3:GetObject",
"Resource": "meu-bucket/*"
}
]
}
Importante: Para que um usuário consiga visualizar e navegar pelos arquivos através do Console Magalu Cloud, a permissão "s3:GetObject" sozinha não é suficiente. É indispensável a atribuição da permissão "s3:ListBucket", que autoriza a listagem dos buckets e objetos. Sem ela, o console não poderá exibir o conteúdo do diret ório.
Permitir que Qualquer Usuário Delete Objetos
Esse exemplo ilustra como permitir a ação s3:DeleteObject para todos os usuários, garantindo que qualquer um possa
excluir objetos contidos em meu-bucket.
É importante ter em mente que essa configuração pode ter implicações significativas de segurança, portanto, deve ser utilizada com cautela.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:DeleteObject",
"Resource": "meu-bucket/*"
}
]
}
Permitir Várias Ações para Diferentes Principais em um Bucket
Nesta seção, você aprenderá como configurar permissões de acesso a um bucket de forma a permitir diferentes ações para diferentes entidades (principais). Utilizando uma política JSON, você poderá especificar quais usuários ou grupos têm permissão para realizar ações como obter, adicionar ou deletar objetos, além de listar o conteúdo do bucket.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"MGC": [
"TENANT-ID",
"TENANT-ID"
]
},
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": "meu-bucket/*"
},
{
"Effect": "Allow",
"Principal": {
"MGC": ["TENANT-ID"]
},
"Action": "s3:ListBucket",
"Resource": "meu-bucket"
}
]
}
Usando Condicionais para Permitir o Acesso ao Bucket
Demonstração de como utilizar IpAddress para permitir o acesso ao bucket por IPs especificados.
O exemplo abaixo permite o acesso de apenas pelos usuários com os IPs: 0.0.0.1 e os contidos na subrede 1.1.1.0/24.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"MGC": ["TENANT-ID"]
},
"Action": "s3:ListBucket",
"Resource": "meu-bucket",
"Condition": {
"IpAddress": {
"aws:SourceIp": ["0.0.0.1", "1.1.1.0/24"]
}
}
}
]
}
O exemplo abaixo permite o acesso do bucket por todos usuários, com exceção daqueles com os IPs: 0.0.0.2 e os contidos na subrede 2.2.2.0/24.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"MGC": ["TENANT-ID"]
},
"Action": "s3:ListBucket",
"Resource": "outro-bucket",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": ["0.0.0.2", "2.2.2.0/24"]
}
}
}
]
}
Negar Acessos com Policies
Negar Acesso Geral a um Bucket
Este exemplo ilustra como negar a ação s3:GetObject para todos os usuários em meu-bucket, garantindo que o conteúdo do bucket não possa ser acessado sem autorização. Essa configuração é útil para proteger dados sensíveis.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "meu-bucket/*"
}
]
}
Negar Acesso a uma Pasta para Usuários Não Autorizados
Este exemplo demonstra como negar a ação s3:PutObject para usuários que não estão identificados pelo
MGC, restringindo o acesso à pasta imagens dentro de meu-bucket. Essa configuração é útil para manter
o controle sobre quem pode adicionar novos arquivos.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": {
"MGC": ["TENANT-ID"]
},
"Action": "s3:PutObject",
"Resource": "meu-bucket/imagens/*"
}
]
}