Proteções de integridade de dados para o Amazon S3 - SDKs e ferramentas da AWS

Proteções de integridade de dados para o Amazon S3

nota

Para obter ajuda em compreender o layout das páginas de configurações ou interpretar a tabela Compatibilidade com SDKs e ferramentas da AWS a seguir, consulte Entender as páginas de configurações deste guia.

Já há algum tempo, os SDKs da AWS são compatíveis com verificações de integridade de dados ao carregar ou baixar dados do Amazon Simple Storage Service. Antes, essas verificações eram opcionais. Agora, habilitamos essas verificações por padrão, usando algoritmos baseados em CRC, como CRC32 ou CRC64NVME. Embora cada SDK ou ferramenta tenha um algoritmo padrão, você pode escolher um algoritmo diferente. Você também pode continuar fornecendo manualmente uma soma de verificação pré-calculada para os uploads, se desejar. O comportamento consistente entre uploads, uploads em várias partes, downloads e modos de criptografia simplifica as verificações de integridade do lado do cliente.

As versões mais recentes de nossos SDKs e AWS CLI da AWS calculam automaticamente uma soma de verificação baseada em verificação de redundância cíclica (CRC) para cada upload e a enviam ao Amazon S3. Em seguida, o Amazon S3 calcula independentemente um valor de soma de verificação do objeto do lado do servidor e o valida com o valor fornecido antes de armazenar o objeto e o valor da soma de verificação nos metadados do objeto. Armazenando a soma de verificação nos metadados junto com o objeto, quando o objeto é baixado, a mesma soma de verificação também pode ser retornada automaticamente e usada para validar os downloads. Você também pode confirmar a soma de verificação armazenada nos metadados do objeto a qualquer momento.

Para saber mais sobre operações de soma de verificação, uploads com várias partes ou a lista de algoritmos de soma de verificação compatíveis, consulte Verificar a integridade do objeto no Amazon S3 Guia do usuário do Amazon Simple Storage Service.

Uploads com várias partes:

O Amazon S3 também fornece aos desenvolvedores somas de verificação completas e consistentes entre os objetos em uploads com uma única parte e com várias partes.

Ao carregar arquivos em várias partes, os SDKs calculam as somas de verificação para cada parte. O Amazon S3 usa essas somas de verificação para verificar a integridade de cada parte por meio da API UploadPart. Além disso, o Amazon S3 valida o tamanho e a soma de verificação do arquivo inteiro quando você chama a API CompleteMultipartUpload.

Se o SDK tiver um Amazon S3 Transfer Manager para auxiliar nos uploads de várias partes, as somas de verificação serão validadas para as partes usando o algoritmo padrão específico do SDK encontrado na tabela Compatibilidade com SDKs e ferramentas da AWS. Você pode optar por uma soma de verificação do objeto completo definindo a configuração checksum_type como FULL_OBJECT ou escolhendo usar o algoritmo CRC64NVME.

Se você estiver usando uma versão mais antiga de SDK ou AWS CLI:

Mesmo que a aplicação usar uma versão de SDK ou ferramenta anterior a dezembro de 2024, o Amazon S3 computa uma soma de verificação CRC64NVME em novos objetos e a armazena nos metadados do objeto para referência futura. Você pode comparar depois o CRC armazenado com um CRC calculado do seu lado e verificar se a transmissão da rede estava correta. Além disso, você ainda pode estender manualmente a proteção de integridade fornecendo suas próprias somas de verificação computadas previamente com suas solicitações de PutObject ou UploadPart, que é a técnica padrão para lidar com isso nas versões mais antigas.

Configure essa funcionalidade usando o seguinte:

request_checksum_calculation: configuração de arquivo config da AWS compartilhado
AWS_REQUEST_CHECKSUM_CALCULATION: variável de ambiente
aws.requestChecksumCalculation: propriedade do sistema de JVM: apenas Java/Kotlin

Por padrão, os usuários optam por calcular a soma de verificação da solicitação ao enviar uma solicitação. O usuário pode escolher um dos algoritmos de soma de verificação disponíveis como parte da criação da solicitação. Caso contrário, é usado um algoritmo padrão específico do SDK. Consulte a tabela Compatibilidade com SDKs e ferramentas da AWS para ver o algoritmo padrão para cada SDK ou ferramenta.

Valor padrão: WHEN_SUPPORTED

Valores válidos:

  • WHEN_SUPPORTED: a validação da soma de verificação é realizada em todas as cargas úteis de solicitação quando compatível com a operação da API, como transferências de dados para o Amazon S3.

  • WHEN_REQUIRED: a validação da soma de verificação é realizada somente quando exigido pela operação da API.

response_checksum_validation: configuração de arquivo config da AWS compartilhado
AWS_RESPONSE_CHECKSUM_VALIDATION: variável de ambiente
aws.responseChecksumValidation: propriedade do sistema de JVM: apenas Java/Kotlin

Por padrão, os usuários optam por uma validação da soma de verificação ao enviar uma solicitação. Uma soma de verificação para a carga útil da resposta é calculada e comparada com o cabeçalho da resposta da soma de verificação. Se houver falha na validação da soma de verificação, será gerado um erro para o usuário quando a carga útil for lida.

O cabeçalho da resposta da soma de verificação também indica o algoritmo para a soma de verificação. O cliente Amazon S3 tenta validar somas de verificação de resposta para todas as operações de API do Amazon S3 compatíveis com somas de verificação. Porém, se o SDK não tiver implementado o algoritmo de soma de verificação especificado, essa validação será ignorada.

Valor padrão: WHEN_SUPPORTED

Valores válidos:

  • WHEN_SUPPORTED: a validação da soma de verificação é realizada em todas as cargas úteis de resposta quando compatível com a operação de API, como transferências de dados para o Amazon S3.

  • WHEN_REQUIRED: a validação da soma de verificação é realizada somente quando compatível com a operação de API e quando o chamador habilitou explicitamente a soma de verificação para a operação. Por exemplo, quando a API GetObject do Amazon S3 é chamada e o parâmetro ChecksumMode é definido como habilitado.

Compatibilidade com SDKs e ferramentas da AWS

Os SDKs a seguir são compatíveis com os recursos e configurações descritos neste tópico. Quaisquer exceções parciais estão anotadas. As configurações de propriedade do sistema de JVM são compatíveis apenas como o AWS SDK para Java e o AWS SDK para Kotlin.

nota

Na tabela a seguir, "CRT" se refere ao Bibliotecas do Common Runtime (CRT) da AWS e pode exigir a adição de uma dependência adicional ao projeto.

SDK Compatível Algoritmo da soma de verificação padrão Algoritmos de soma de verificação compatíveis Notas ou mais informações
AWS CLI v2 da2 Sim CRC64NVME CRC64NVME, CRC32, CRC32C, SHA1, SHA256 Para a AWS CLI v1, o algoritmo padrão e os algoritmos compatíveis serão idênticos ao Python (Boto3).
SDK para C++ Sim CRC64NVME CRC64NVME, CRC32, CRC32C, SHA1, SHA256
SDK para Go V2 (1.x) Sim CRC32 CRC64NVME, CRC32, CRC32C, SHA1, SHA256
SDK para Go 1.x (V1) Não
SDK para Java 2.x Sim CRC32 CRC64NVME (apenas por CRT), CRC32, CRC32C, SHA1, SHA256
SDK para Java 1.x Não
SDK para JavaScript 3.x Sim CRC32 CRC32, CRC32C, SHA1, SHA256
SDK para JavaScript 2.x Não
SDK para Kotlin Sim CRC32 CRC32, CRC32C, SHA1, SHA256
SDK para .NET 4.x Sim CRC32 CRC32, CRC32C, SHA1, SHA256
SDK para .NET 3.x Sim CRC32 CRC32, CRC32C, SHA1, SHA256
SDK para PHP 3.x Sim CRC32 CRC32, CRC32C (apenas via CRT), SHA1, SHA256 A extensão awscrt é requerida para usar CRC32C.
SDK para Python (Boto3) Sim CRC32 CRC64NVME (apenas por CRT), CRC32, CRC32C (apenas por CRT), SHA1, SHA256
SDK para Ruby 3.x Sim CRC32 CRC64NVME (apenas por CRT), CRC32, CRC32C (apenas por CRT), SHA1, SHA256
SDK para Rust Sim CRC32 CRC64NVME, CRC32, CRC32C, SHA1, SHA256
SDK para Swift Sim CRC32 CRC64NVME, CRC32, CRC32C, SHA1, SHA256 Dependência de CRT requerida para todos os algoritmos.
Ferramentas para PowerShell V5 Sim CRC32 CRC32, CRC32C, SHA1, SHA256
Ferramentas para PowerShell V4 Sim CRC32 CRC32, CRC32C, SHA1, SHA256