Tester et démontrer les options de cryptage S3 sur StorageGRID
Par Aron Klein
StorageGRID et l'API S3 proposent plusieurs façons de chiffrer vos données au repos. Pour en savoir plus, voir "Étudiez les méthodes de cryptage StorageGRID".
Ce guide présente les méthodes de chiffrement de l'API S3.
Chiffrement côté serveur (SSE)
SSE permet au client de stocker un objet et de le chiffrer à l'aide d'une clé unique gérée par StorageGRID. Lorsque l'objet est demandé, il est décrypté par la clé stockée dans StorageGRID.
Exemple SSE
-
PLACER un objet avec SSE
aws s3api put-object --bucket <bucket> --key <file> --body "<file>" --server-side-encryption AES256 --endpoint-url https://s3.example.com
-
DIRIGEZ l'objet pour vérifier le chiffrement
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": {} }
-
OBTENIR l'objet
aws s3api get-object --bucket <bucket> --key <file> <file> --endpoint-url https://s3.example.com
Chiffrement côté serveur avec clés fournies par le client (SSE-C)
SSE permet au client de stocker un objet et de le chiffrer à l'aide d'une clé unique fournie par le client avec l'objet. Lorsque l'objet est demandé, la même clé doit être fournie pour décrypter et renvoyer l'objet.
Exemple SSE-C.
-
Vous pouvez créer une clé de chiffrement à des fins de test ou de démonstration
-
Créez une clé de chiffrement
openssl enc -aes-128-cbc -pass pass:secret -P`
salt=E9DBB6603C7B3D2A key=23832BAC16516152E560F933F261BF03 iv =71E87C0F6EC3C45921C2754BA131A315
-
-
Placer un objet avec la clé générée
aws s3api put-object --bucket <bucket> --key <file> --body "file" --sse-customer-algorithm AES256 --sse-customer-key 23832BAC16516152E560F933F261BF03 --endpoint-url https://s3.example.com
-
Dirigez l'objet
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==" }
Si vous ne fournissez pas la clé de cryptage, vous recevrez une erreur « une erreur s'est produite (404) lors de l'appel de l'opération HeadObject : introuvable ». |
-
Obtenir l'objet
aws s3api get-object --bucket <bucket> --key <file> <file> --sse-customer-algorithm AES256 --sse-customer-key 23832BAC16516152E560F933F261BF03 --endpoint-url https://s3.example.com
Si vous ne fournissez pas la clé de cryptage, vous recevrez une erreur "une erreur s'est produite (InvalidRequest) lors de l'appel de l'opération GetObject: L'objet a été stocké à l'aide d'une forme de chiffrement côté serveur. Les paramètres corrects doivent être fournis pour récupérer l'objet. » |
Chiffrement côté serveur godet (SSE-S3)
SSE-S3 permet au client de définir un comportement de cryptage par défaut pour tous les objets stockés dans un compartiment. Les objets sont chiffrés avec une clé unique gérée par StorageGRID. À la demande de l'objet, celui-ci est décrypté par la clé stockée dans StorageGRID.
Exemple de godet SSE-S3
-
Créez un compartiment et définissez une règle de chiffrement par défaut
-
Créer un nouveau compartiment
aws s3api create-bucket --bucket <bucket> --region us-east-1 --endpoint-url https://s3.example.com
-
Put bucket Encryption
aws s3api put-bucket-encryption --bucket <bucket> --server-side-encryption-configuration '{"Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "AES256"}}]}' --endpoint-url https://s3.example.com
-
-
Placer un objet dans le godet
aws s3api put-object --bucket <bucket> --key <file> --body "file" --endpoint-url https://s3.example.com
-
Dirigez l'objet
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": {} }
-
OBTENIR l'objet
aws s3api get-object --bucket <bucket> --key <file> <file> --endpoint-url https://s3.example.com