2016-09-08 3 views
3

AWS KMS 설정을 사용하여 server side encryption을 사용하여 객체를 S3에 업로드하려고합니다.CLI를 사용하는 AWS S3 서버 측 암호화

설명서에 업로드 된 개체가 암호화되어야한다고 나와 있습니다.

서버 측 암호화 나머지-IS에서 데이터 암호화에 관한 것입니다, 아마존 S3는 데이터 센터에 디스크에 기록으로 개체 수준에서 데이터를 암호화하고 당신이 그것을 액세스 할 때 당신을 위해 그것을 해독 .

I 설치 KMS 마스터 키와

aws s3api put-object --bucket test --key keys/test.txt --server-side-encryption aws:kms --ssekms-key-id <my_master_Key_id> --body test.txt 

업로드가 성공적으로 다음과 같은 방법으로 객체를 업로드 CLI를 사용하려고 시도를했습니다 나는

{ 
    "SSEKMSKeyId": "arn:aws:kms:eu-central-1:<id>:key/<my_master_key>", 
    "ETag": "\"a4f4fdf078bdd5df758bf81b2d9bc94d\"", 
    "ServerSideEncryption": "aws:kms" 
} 

또한 다음과 같은 응답을 참조 S3에서 파일을 검사 할 때 세부적인 내용은 올바른 마스터 키가있는 서버 쪽에서 암호화 된 것입니다.

KMS 마스터 키를 사용할 수있는 권한이없는 사용자가 파일을 다운로드 할 때 암호화해야 할 때 문제없이 파일을 열고 읽을 수 있습니다.

참고 : PutObject 정책은 서버 측 암호화없이 모든 업로드를 거부하므로 정상적으로 작동합니다.

내가 서버 측 암호화를 잘못 이해했는지 또는 잘못된 것이 있습니까? 어떤 도움을 주셔서 감사합니다.

+0

어떻게 개체를 검색하나요? kms 키를 제공하지 않으면 요청이 실패해야합니다. 버킷 내의 모든 객체가 암호화되어 있으면 매개 변수 머리글없이 GetObject를 거부하는 버킷 정책을 만들 수 있지만 암호화 된 것으로 표시된 객체에 대해서는 자동으로 수행해야합니다. –

+0

@ FrédéricHenri CLI get-object를 사용하려고합니다. 또한 다운로드 할 수 있었던 두 경우 모두에서 AWS S3 콘솔에서 직접 시도했습니다. 나는 PutObject 정책을 가지고 있지만 얻을 수는 없다. get을 위해서도 추가하려고 시도하는 것이 좋다. – vtor

+1

@ FrédéricHenri 개체를 다운로드하기 위해 키가 필요한 곳에 문서를 보여줄 수 있습니까? 요청이 실패해야한다고 말하지만 그것이 옳다고 생각하지 않습니다. 서버 측 암호화는 S3 서비스 내의 일부 디스크 볼륨에 저장된 데이터 만 암호화한다고 생각합니다. S3는 개체를 다운로드 할 때 자동으로 암호화를 해제합니다. –

답변

2

불행히도 S3에서 서버 측 암호화를 오해 한 것 같습니다. S3 서버 측 암호화 (SSE) docs에서

서버 측 암호화는 데이터를 안전하게 보호하기위한 것입니다. S3는 개체를 수신하면

는, 그 데이터 키 (안 마스터 키)를 사용하여 데이터를 암호화, 데이터 키를 생성하기 위해 KMS를 호출하고, 암호화 된 데이터와 함께 암호화 된 데이터 키를 저장합니다.

암호화 된 파일을 다운로드하려고하면 S3에서 암호화 된 것으로 확인하고 KMS에 마스터 키를 사용하여 데이터 키의 암호를 해독하도록 요청한 다음 해독 된 데이터 키를 사용하여 데이터를 해독 한 다음 사용자에게 반환합니다. 문서와 SSE 및 KMS의 작동 방식을 이해하면 S3가 작동하기 위해서는 마스터 키에 대한 액세스 권한이 필요하다는 가정이 없다는 것입니다. S3가 액세스 할 수 있으면 충분합니다.

은 기재된 유스 케이스 S3 client-side encryption 더 비슷하다

클라이언트 측 암호화 아마존 S3로 전송하기 전에 데이터를 암호화 지칭한다. 이 시나리오에서는

, A (마스터 키에서 파생 된) KMS 데이터 키를 암호화 데이터의 클라이언트 측 요청하고 업로드합니다 (대신 백엔드 S3에) S3 클라이언트입니다. 서버에서 암호를 해독 할 수 없으며 클라이언트가 (암호화 된) 파일을 다운로드 할 때 해독은 클라이언트 측에서 수행해야합니다 (S3 클라이언트가 처리합니다).