Skip to main content
Uma versão mais recente deste produto está disponível.
O português é fornecido por meio de tradução automática para sua conveniência. O inglês precede o português em caso de inconsistências.

Use a API REST S3 para configurar o S3 Object Lock do StorageGRID

Se a configuração global de Bloqueio de Objetos S3 estiver habilitada para o seu sistema StorageGRID, você pode criar buckets com o Bloqueio de Objetos S3 ativado. Você pode especificar o período de retenção padrão para cada bucket ou as configurações de retenção para cada versão de objeto.

Como habilitar o S3 Object Lock para um bucket

Se a configuração global de S3 Object Lock estiver ativada para o seu sistema StorageGRID, você pode, opcionalmente, ativar o S3 Object Lock ao criar cada bucket.

O Bloqueio de Objetos do S3 é uma configuração permanente que só pode ser ativada ao criar um bucket. Você não pode adicionar ou desativar o Bloqueio de Objetos do S3 depois que um bucket é criado.

Para ativar o S3 Object Lock para um bucket, use um destes métodos:

  • Crie o bucket usando o Gerenciador de Locatários. Consulte "Criar bucket S3".

  • Crie o bucket usando uma solicitação CreateBucket com o cabeçalho de solicitação x-amz-bucket-object-lock-enabled. Veja "Operações em buckets".

O S3 Object Lock requer o versionamento do bucket, que é ativado automaticamente quando o bucket é criado. Você não pode suspender o versionamento do bucket. Consulte "Versionamento de objetos".

Configurações de retenção padrão para um bucket

Quando o S3 Object Lock está habilitado para um bucket, você pode opcionalmente habilitar a retenção padrão para o bucket e especificar um modo de retenção padrão e um período de retenção padrão.

Modo de retenção padrão

  • No modo COMPLIANCE:

    • O objeto não pode ser excluído até que sua retain-until-date seja atingida.

    • A data de retenção do objeto pode ser aumentada, mas não pode ser diminuída.

    • A data de retenção do objeto não pode ser removida até que essa data seja atingida.

  • No modo GOVERNANÇA:

    • Usuários com a s3:BypassGovernanceRetention permissão podem usar o x-amz-bypass-governance-retention: true cabeçalho da solicitação para ignorar as configurações de retenção.

    • Esses usuários podem excluir uma versão de objeto antes que a data de retenção seja atingida.

    • Esses usuários podem aumentar, diminuir ou remover a retain-until-date de um objeto.

Período de retenção padrão

Cada bucket pode ter um período de retenção padrão especificado em anos ou dias.

Como definir a retenção padrão para um bucket

Para definir a retenção padrão de um bucket, use um destes métodos:

PutObjectLockConfiguration

A solicitação PutObjectLockConfiguration permite que você defina e modifique o modo de retenção padrão e o período de retenção padrão para um bucket com o S3 Object Lock ativado. Você também pode remover as configurações de retenção padrão previamente definidas.

Quando novas versões de objetos são ingeridas no bucket, o modo de retenção padrão é aplicado se x-amz-object-lock-mode e x-amz-object-lock-retain-until-date não forem especificados. O período de retenção padrão é usado para calcular a data de retenção até se x-amz-object-lock-retain-until-date não for especificado.

Se o período de retenção padrão for modificado após a ingestão de uma versão de objeto, a data de retenção da versão do objeto permanecerá a mesma e não será recalculada usando o novo período de retenção padrão.

Você precisa ter a s3:PutBucketObjectLockConfiguration permissão, ou ser o root da conta, para concluir esta operação.

O `Content-MD5`cabeçalho da requisição deve ser especificado na solicitação PUT.

Exemplo de solicitação

Este exemplo habilita o S3 Object Lock para um bucket e define o modo de retenção padrão como COMPLIANCE e o período de retenção padrão como 6 anos.

PUT /bucket?object-lock HTTP/1.1
Accept-Encoding: identity
Content-Length: 308
Host: host
Content-MD5: request header
User-Agent: s3sign/1.0.0 requests/2.24.0 python/3.8.2
X-Amz-Date: date
X-Amz-Content-SHA256: authorization-string
Authorization: authorization-string

<ObjectLockConfiguration>
    <ObjectLockEnabled>Enabled</ObjectLockEnabled>
    <Rule>
        <DefaultRetention>
            <Mode>COMPLIANCE</Mode>
            <Years>6</Years>
        </DefaultRetention>
    </Rule>
</ObjectLockConfiguration>

Como determinar a retenção padrão para um bucket

Para determinar se o S3 Object Lock está ativado para um bucket e para ver o modo de retenção padrão e o período de retenção, use um destes métodos:

GetObjectLockConfiguration

A solicitação GetObjectLockConfiguration permite que você determine se o S3 Object Lock está habilitado para um bucket e, se estiver habilitado, veja se há um modo de retenção padrão e um período de retenção configurados para o bucket.

Quando novas versões de objetos são ingeridas no bucket, o modo de retenção padrão é aplicado se x-amz-object-lock-mode não for especificado. O período de retenção padrão é usado para calcular a retain-until-date se x-amz-object-lock-retain-until-date não for especificado.

Você precisa ter a s3:GetBucketObjectLockConfiguration permissão, ou ser account root, para concluir esta operação.

Exemplo de solicitação

GET /bucket?object-lock HTTP/1.1
Host: host
Accept-Encoding: identity
User-Agent: aws-cli/1.18.106 Python/3.8.2 Linux/4.4.0-18362-Microsoft botocore/1.17.29
x-amz-date: date
x-amz-content-sha256: authorization-string
Authorization: authorization-string

Exemplo de resposta

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIXk=
x-amz-request-id: B34E94CACB2CEF6D
Date: Fri, 04 Sep 2020 22:47:09 GMT
Transfer-Encoding: chunked
Server: AmazonS3

<?xml version="1.0" encoding="UTF-8"?>
<ObjectLockConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <ObjectLockEnabled>Enabled</ObjectLockEnabled>
    <Rule>
        <DefaultRetention>
            <Mode>COMPLIANCE</Mode>
            <Years>6</Years>
        </DefaultRetention>
    </Rule>
</ObjectLockConfiguration>

Como especificar as configurações de retenção para um objeto

Um bucket com o S3 Object Lock ativado pode conter uma combinação de objetos com e sem configurações de retenção do S3 Object Lock.

As configurações de retenção em nível de objeto são especificadas usando a API REST do S3. As configurações de retenção para um objeto substituem quaisquer configurações de retenção padrão para o bucket.

Você pode especificar as seguintes configurações para cada objeto:

  • Modo de retenção: COMPLIANCE ou GOVERNANÇA.

  • Retain-until-date: Uma data que especifica por quanto tempo a versão do objeto deve ser retida pelo StorageGRID.

    • No modo COMPLIANCE, se a retain-until-date for futura, o objeto poderá ser recuperado, mas não poderá ser modificado ou excluído. A retain-until-date pode ser aumentada, mas essa data não pode ser diminuída ou removida.

    • No modo GOVERNANÇA, usuários com permissões especiais podem ignorar a configuração de retain-until-date. Eles podem excluir uma versão de objeto antes que seu período de retenção tenha expirado. Eles também podem aumentar, diminuir ou até mesmo remover o retain-until-date.

  • Guarda legal: Aplicar uma guarda legal a uma versão de objeto bloqueia imediatamente esse objeto. Por exemplo, você pode precisar aplicar uma guarda legal a um objeto relacionado a uma investigação ou disputa legal. Uma guarda legal não tem data de expiração, mas permanece em vigor até ser explicitamente removida.

    A configuração de guarda legal para um objeto é independente do modo de retenção e da data limite de retenção. Se uma versão de um objeto estiver sob guarda legal, ninguém pode excluir essa versão.

Para especificar as configurações de S3 Object Lock ao adicionar uma versão de objeto a um bucket, emita uma solicitação "PutObject", "CopyObject" ou "CreateMultipartUpload".

Você pode usar o seguinte:

  • x-amz-object-lock-mode, que pode ser COMPLIANCE ou GOVERNANCE (diferencia maiúsculas de minúsculas).

    Observação Se você especificar x-amz-object-lock-mode, você também deve especificar x-amz-object-lock-retain-until-date.
  • x-amz-object-lock-retain-until-date

    • O valor de retain-until-date deve estar no formato 2020-08-10T21:46:00Z. Frações de segundo são permitidas, mas apenas 3 casas decimais são preservadas (precisão em milissegundos). Outros formatos ISO 8601 não são permitidos.

    • A data de retenção deve estar no futuro.

  • x-amz-object-lock-legal-hold

    Se guarda legal estiver ON (diferencia maiúsculas de minúsculas), o objeto é colocado sob guarda legal. Se guarda legal estiver OFF, nenhuma guarda legal é aplicada. Qualquer outro valor resulta em um erro 400 Bad Request (InvalidArgument).

Se você usar algum desses cabeçalhos de solicitação, esteja ciente destas restrições:

  • O `Content-MD5`cabeçalho da requisição é obrigatório se qualquer `x-amz-object-lock-*`cabeçalho de requisição estiver presente na solicitação PutObject. `Content-MD5`Não é obrigatório para CopyObject ou CreateMultipartUpload.

  • Se o bucket não tiver o S3 Object Lock ativado e um x-amz-object-lock-* cabeçalho de solicitação estiver presente, será retornado um erro 400 Bad Request (InvalidRequest).

  • A solicitação PutObject dá suporte ao uso de x-amz-storage-class: REDUCED_REDUNDANCY para corresponder ao comportamento da AWS. No entanto, quando um objeto é ingerido em um bucket com S3 Object Lock ativado, StorageGRID sempre realizará uma ingestão com confirmação dupla.

  • Uma resposta GET ou de versão HeadObject subsequente incluirá os cabeçalhos x-amz-object-lock-mode, x-amz-object-lock-retain-until-date e x-amz-object-lock-legal-hold, se configurados e se o remetente da solicitação tiver as permissões corretas de s3:Get*.

Você pode usar a `s3:object-lock-remaining-retention-days`chave de condição de política para limitar os períodos de retenção mínimos e máximos permitidos para seus objetos.

Como atualizar as configurações de retenção de um objeto

Se você precisar atualizar as configurações de guarda legal ou de retenção para uma versão de objeto existente, pode executar as seguintes operações de sub-recurso de objeto:

  • PutObjectLegalHold

    Se o novo valor de guarda legal estiver ATIVADO, o objeto fica sujeito a guarda legal. Se o valor de guarda legal estiver DESATIVADO, a guarda legal é suspensa.

  • PutObjectRetention

    • O valor do modo pode ser COMPLIANCE ou GOVERNANCE (diferencia maiúsculas de minúsculas).

    • O valor de retain-until-date deve estar no formato 2020-08-10T21:46:00Z. Frações de segundo são permitidas, mas apenas 3 casas decimais são preservadas (precisão em milissegundos). Outros formatos ISO 8601 não são permitidos.

    • Se uma versão de um objeto já possui uma data de retenção definida, você só pode aumentá-la. O novo valor deve estar no futuro.

Como usar o modo GOVERNANCE

Usuários que têm a permissão s3:BypassGovernanceRetention podem ignorar as configurações de retenção ativa de um objeto que utiliza o modo GOVERNANCE. Quaisquer operações DELETE ou PutObjectRetention devem incluir o cabeçalho x-amz-bypass-governance-retention:true da solicitação. Esses usuários podem executar as seguintes operações adicionais:

  • Execute operações DeleteObject ou DeleteObjects para excluir uma versão de objeto antes que seu período de retenção tenha expirado.

    Objetos que estão sob guarda legal não podem ser excluídos. A guarda legal deve estar DESATIVADA.

  • Execute operações PutObjectRetention que alteram o modo de uma versão de objeto de GOVERNANCE para COMPLIANCE antes que o período de retenção tenha expirado.

    A mudança do modo de COMPLIANCE para GOVERNANCE nunca é permitida.

  • Realize operações PutObjectRetention para aumentar, diminuir ou remover o período de retenção de uma versão do objeto.