Policy do Bucket
Criar Bucket Policy
Para mais informações sobre Bucket Policy, consulte a documentação de 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.
- 🖥️ 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.
mgc object-storage buckets policy set --dst NOME_DO_BUCKET --policy POLICY
aws s3api put-bucket-policy --bucket NOME_DO_BUCKET --policy file://POLICY-PATH
Bucket Policy Sintaxe
As políticas são definidas utilizando um documento de política com a seguinte sintaxe:
policy = {
<version_block?>
<id_block?>
<statement_block>
}
<version_block> = "Version" : ("2012-10-17")
<id_block> = "Id" : <policy_id_string>
<statement_block> = "Statement" : [ <statement>, <statement>, ... ]
<statement> = {
<sid_block?>,
<principal_block?>,
<effect_block>,
<action_block>,
<resource_block>
}
<sid_block> = "Sid" : <sid_string>
<effect_block> = "Effect" : ("Allow" | "Deny")
<principal_block> = ("Principal") : ("*" | <principal_map>)
<principal_map> = { <principal_map_entry>, <principal_map_entry>, ... }
<principal_map_entry> = ("MGC") :
[<principal_id_string>, <principal_id_string>, ...]
<action_block> = ("Action") :
("*" | <action_string> | [<action_string>, <action_string>, ...])
<resource_block> = ("Resource") :
: ("*" | <resource_string> | [<resource_string>, <resource_string>, ...])
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, para a substituição, siga os passos abaixo.
- 🖥️ Console
- MGC-CLI
- AWS-CLI
Atualmente, a interface do Console não suporta a edição de policy. Para realizar essa operação, utilize as ferramentas de linha de comando (CLI).
- Recupere a Bucket Policy atual:
mgc object-storage buckets policy get --dst NOME_DO_BUCKET
- Altere conforme a sua necessidade, segue documentações com exemplos abaixo:
- Políticas de Permissão (Allow): Documentação sobre políticas de bucket de exemplo #TODO
- Políticas de Negação (Deny): Documentação sobre políticas de bucket de exemplo com negação #TODO
- Remova a Bucket Policy atual:
mgc object-storage buckets policy delete --dst NOME_DO_BUCKET
- 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:
- Políticas de Permissão (Allow): Documentação sobre políticas de bucket de exemplo #TODO
- Políticas de Negação (Deny): Documentação sobre políticas de bucket de exemplo com negação #TODO
- Remova a Bucket Policy atual:
aws s3api delete-bucket-policy --bucket NOME_DO_BUCKET
- 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
Remover Bucket Policy
Para remover uma Bucket Policy siga os passos abaixo:
- MGC-CLI
- AWS-CLI
mgc object-storage buckets policy delete --dst NOME_DO_BUCKET
aws s3api delete-bucket-policy --bucket NOME_DO_BUCKET
Exemplos
Permitir Acessos com Policies
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/*"
}
]
}
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": ["12345678"]
},
"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/*"
}
]
}
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"
}
]
}
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/*"
}
]
}
Negar Acesso a um Bucket para Usuários Não Autorizados
Este exemplo ilustra como negar a ação s3:GetObject
para qualquer usuário que não esteja identificado pelo MGC
em meu-bucket
. Essa abordagem é ideal para proteger dados sensíveis, garantindo que apenas usuários autorizados possam acessar os recursos do bucket.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": {
"MGC": ["TENANT-ID"]
},
"Action": "s3:GetObject",
"Resource": "meu-bucket/*"
}
]
}
Negar Acesso a Todos para Excluir Objetos
Esse exemplo ilustra como negar a ação s3:DeleteObject
para todos os usuários, garantindo que ninguém
possa excluir objetos contidos em meu-bucket
. Essa configuração ajuda a proteger os dados de exclusões
acidentais ou maliciosas.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:DeleteObject",
"Resource": "meu-bucket/*"
}
]
}
Negar 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 negar diferentes ações para diferentes entidades (principais). Utilizando uma política JSON, você poderá especificar quais usuários ou grupos têm suas ações restritas em relação a obter, adicionar ou deletar objetos, além de listar o conteúdo do bucket.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": {
"MGC": [
"TENANT-ID",
"TENANT-ID"
]
},
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": "meu-bucket/*"
},
{
"Effect": "Deny",
"Principal": {
"MGC": ["TENANT-ID"]
},
"Action": "s3:ListBucket",
"Resource": "meu-bucket"
}
]
}
Negar Acesso a Todos, Exceto a um Usuário Específico
Esse exemplo demonstra como usar duas declarações: a primeira nega explicitamente o acesso a todos os usuários para a ação s3:GetObject
em meu-bucket
, e a segunda permite que um usuário específico (definido pelo MGC) realize a mesma ação. Essa abordagem é útil para proteger dados sensíveis e garantir que apenas usuários autorizados tenham acesso.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "meu-bucket/*"
},
{
"Effect": "Allow",
"Principal": {
"MGC": ["TENANT-ID"]
},
"Action": "s3:GetObject",
"Resource": "meu-bucket/*"
}
]
}