Teste e demonstre as opções de criptografia S3 no StorageGRID
Por Aron Klein
O StorageGRID e a API S3 oferecem várias maneiras diferentes de criptografar seus dados em repouso. Para saber mais, "Reveja os métodos de encriptação StorageGRID" consulte .
Este guia demonstrará os métodos de criptografia da API S3.
Criptografia do lado do servidor (SSE)
O SSE permite que o cliente armazene um objeto e criptografe-o com uma chave única que é gerenciada pelo StorageGRID. Quando o objeto é solicitado, o objeto é descriptografado pela chave armazenada no StorageGRID.
Exemplo SSE
-
COLOQUE um objeto com SSE
aws s3api put-object --bucket <bucket> --key <file> --body "<file>" --server-side-encryption AES256 --endpoint-url https://s3.example.com
-
DIRIJA o objeto para verificar a criptografia
aws s3api head-object --bucket <bucket> --key <file> --endpoint-url https://s3.example.com
{ "AcceptRanges": "bytes", "LastModified": "2022-05-02T19:03:03+00:00", "ContentLength": 47, "ETag": "\"82e8bfb872e778a4687a26e6c0b36bc1\"", "ContentType": "text/plain", "ServerSideEncryption": "AES256", "Metadata": {} }
-
OBTENHA o objeto
aws s3api get-object --bucket <bucket> --key <file> <file> --endpoint-url https://s3.example.com
Criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C)
SSE permite que o cliente armazene um objeto e criptografe-o com uma chave única que é fornecida pelo cliente com o objeto. Quando o objeto é solicitado, a mesma chave deve ser fornecida para descriptografar e retornar o objeto.
Exemplo SSE-C.
-
Para fins de teste ou demonstração, você pode criar uma chave de criptografia
-
Crie uma chave de criptografia
openssl enc -aes-128-cbc -pass pass:secret -P`
salt=E9DBB6603C7B3D2A key=23832BAC16516152E560F933F261BF03 iv =71E87C0F6EC3C45921C2754BA131A315
-
-
Coloque um objeto com a chave gerada
aws s3api put-object --bucket <bucket> --key <file> --body "file" --sse-customer-algorithm AES256 --sse-customer-key 23832BAC16516152E560F933F261BF03 --endpoint-url https://s3.example.com
-
Cabeça o objeto
aws s3api head-object --bucket <bucket> --key <file> --sse-customer-algorithm AES256 --sse-customer-key 23832BAC16516152E560F933F261BF03 --endpoint-url https://s3.example.com
{ "AcceptRanges": "bytes", "LastModified": "2022-05-02T19:20:02+00:00", "ContentLength": 47, "ETag": "\"f92ef20ab87e0e13951d9bee862e9f9a\"", "ContentType": "binary/octet-stream", "Metadata": {}, "SSECustomerAlgorithm": "AES256", "SSECustomerKeyMD5": "rjGuMdjLpPV1eRuotNaPMQ==" }
Se você não fornecer a chave de criptografia, você receberá um erro "ocorreu um erro (404) ao chamar a operação HeadObject: Not found" |
-
Obtenha o objeto
aws s3api get-object --bucket <bucket> --key <file> <file> --sse-customer-algorithm AES256 --sse-customer-key 23832BAC16516152E560F933F261BF03 --endpoint-url https://s3.example.com
Se você não fornecer a chave de criptografia, você receberá um erro "ocorreu um erro (InvalidRequest) ao chamar a operação GetObject: O objeto foi armazenado usando uma forma de criptografia do lado do servidor. Os parâmetros corretos devem ser fornecidos para recuperar o objeto." |
Criptografia do lado do servidor do bucket (SSE-S3)
O SSE-S3 permite que o cliente defina um comportamento de criptografia padrão para todos os objetos armazenados em um bucket. Os objetos são criptografados com uma chave exclusiva que é gerenciada pelo StorageGRID. Quando o objeto é solicitado, o objeto é descriptografado pela chave armazenada no StorageGRID.
Exemplo SSE-S3 do bucket
-
Crie um novo intervalo e defina uma política de criptografia padrão
-
Crie um novo balde
aws s3api create-bucket --bucket <bucket> --region us-east-1 --endpoint-url https://s3.example.com
-
Coloque criptografia de bucket
aws s3api put-bucket-encryption --bucket <bucket> --server-side-encryption-configuration '{"Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "AES256"}}]}' --endpoint-url https://s3.example.com
-
-
Coloque um objeto no balde
aws s3api put-object --bucket <bucket> --key <file> --body "file" --endpoint-url https://s3.example.com
-
Cabeça o objeto
aws s3api head-object --bucket <bucket> --key <file> --endpoint-url https://s3.example.com
{ "AcceptRanges": "bytes", "LastModified": "2022-05-02T20:16:23+00:00", "ContentLength": 47, "ETag": "\"82e8bfb872e778a4687a26e6c0b36bc1\"", "ContentType": "binary/octet-stream", "ServerSideEncryption": "AES256", "Metadata": {} }
-
OBTENHA o objeto
aws s3api get-object --bucket <bucket> --key <file> <file> --endpoint-url https://s3.example.com