Pesquise

Configurando Imutabilidade no Object Storage S3

Instalando AWS CLI

Neste artigo vamos instalar e configurar o cliente AWS CLI, um cliente em linha de comando, para Object Storage que roda em sistemas operacionais Linux, Mac e Windows.

Passo 1 – Baixe o arquivo de instalação 

Use o comando “curl”: A opção “-o” especifica o nome do arquivo no qual o pacote baixado é gravado. As opções no comando de exemplo a seguir gravam o arquivo baixado no diretório atual com o nome local “awscliv2.zip”.

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

URL utilizada: https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip

Passo 2 – Descompacte o instalador. Se sua distribuição Linux não possuir comando Unzip integrado, use um equivalente para descompactá-lo. O comando de exemplo a seguir descompacta o pacote e cria um diretório nomeado AWS no diretório atual.

unzip awscliv2.zip

Passo 3 – Execute o programa de instalação.

O comando de instalação usa um arquivo nomeado install no diretório recém-descompactado AWS. Por padrão, os arquivos são todos instalados em /user/local/aws-cli, e um link simbólico é criado em /user/local/bin. O comando sudo (se necessário) inclui conceder permissões de gravação a esses diretórios.

sudo ./aws/install

Passo 4 – Confirme a instalação com o seguinte comando.

aws --version

Configure a AWS CLI para se conectar ao Object Storage S3

Em seu terminal insira o comando “aws configure” para inserir as credenciais de acesso ao Object Storage S3 conforme exemplo abaixo


*Access Key: Portal Web

*Secret Key: Portal Web

*Default Region: (Deixar em branco e apertar Enter)

*Default output format: (Deixar em branco e apertar Enter)

Criando um bucket e ativando os parâmetros de Imutabilidade via AWS CLI S3API

Insira o comando em seu terminal alterando as variáveis em negrito:

aws –endpoint-url Endpoint(URL do S3) s3api create-bucket –object-lock-enabled-for-bucket  –bucket  nomedoseubucket

Exemplo:

aws --endpoint-url https://s3-dc3-001.mspclouds.com s3api create-bucket --object-lock-enabled-for-bucket  --bucket  bucket-teste

Definindo/alterando a configuração padrão de retenção:

Insira o comando abaixo no seu terminal, alterando a quantidade de dias no parâmetro “Days”

aws --endpoint-url https://s3-dc3-001.mspclouds.com s3api put-object-lock-configuration \
--bucket  bucket-teste --object-lock-configuration '{ "ObjectLockEnabled": "Enabled", "Rule": { "DefaultRetention": { "Mode": "COMPLIANCE", "Days": 3 }}}'

Diferenças entre os modos

O S3 Object Lock fornece dois modos de retenção, esses modos aplicam diferentes níveis de proteção aos seus objetos:

COMPLIANCE: No modo de compliance, uma versão de objeto protegido não pode ser substituída ou excluída por qualquer usuário, incluindo o usuário root

GOVERNANCE: No modo de governance, os usuários não podem substituir e excluir uma versão do objeto ou alterar suas configurações de bloqueio, a menos que tenham permissões especiais.

Abaixo imagem evidenciando que após subir alguns arquivos, e tentar fazer algumas alterações, ocorreu o versionamento de cada alteração

Cada objeto possui um cabeçalho “Headers”. Quando o bucket é criado com a opção de imutabilidade ele aplica a variável x-amz-object-lock-retain-until-date em todo novo objeto. É nesse parâmetro que é configurado a retenção, ou seja, até que a data da variável x-amz-object-lock-retain-until-date seja atingida, o objeto não poderá ser alterado.

Na imagem abaixo, é apresentando as informações do cabeçalho, onde a data do campo x-amz-object-lock-retain-until-date é superior à data da variável Date. Sendo assim este arquivo não poderá ser alterado ou excluído até que seja atingida a data da variável x-amz-object-lock-retain-until-date.

Evidência da variável Date

Pontos importantes:

  1. A imutabilidade pode ser habilitada APENAS quando está sendo criado o Bucket.
  2. O volume do bucket aumenta toda vez que um arquivo é versionado. A formula a ser considerada para cálculo do volume é: quantidade de versões x tamanho do arquivo.
  3. É possível fazer a recuperação de versionamento a qualquer momento.
  4. Enquanto existirem objetos versionados com a data de retenção superior à variável date, não será possível fazer a deleção do bucket. (através de acesso com accesskey secretkey)
  5. Cada objeto pode receber a variável x-amz-object-lock-retain-until-date independente do bucket, ou seja, a informação mais específica sobrepõe as informações do bucket;
  6. É possível fazer a criação de uma nova versão de um determinado objeto fazendo uma alteração na variável x-amz-object-lock-retain-until-date.
  7. Não houve diferença no comportamento do S3 utilizando os parâmetros GOVERNANCE ou COMPLIANCE na variável x-amz-object-lock-mode.

Nos dois formatos, não foi possível efetuar a deleção dos objetos versionados. Em todo caso recomendamos FORTEMENTE a utilização do parâmetro COMPLIANCE.

  • O volume total do bucket é a soma de todos os arquivos, considerando os versionamentos.  É importante tomar cuidado, pois as ferramentas (ex. S3Browser) desconsideram as informações de utilização de versionamento.

Links úteis:

https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html

https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-aws-cli&locale=pt-BR

https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object-lock-configuration.html

https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/create-bucket.html

Este artigo foi útil?
Deixe sua opinião sobre esse artigo