2017-02-13 6 views
0

S3 내 비즈니스에 중요한 대용량 파일을 백업하고 있습니다. 일단 업로드되면 이러한 파일의 무결성을 확인하고 손상되지 않았 음을 확신 할 수 있습니까?AWS S3 무결성 업로드

확장 성 및 가용성과 관련하여 많은 문서가 있지만 무결성 및/또는 체크섬에 대한 정보는 찾을 수 없습니다.

+0

여기에서 'Content-MD5' 헤더를 확인하십시오. http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html – moondaisy

답변

0

로컬에서 MD5 체크섬을 수행 한 다음 S3의 개체에 대한 MD5 체크섬과 비교하여 데이터 무결성을 보장 할 수 있습니다. Content-MD5, S3에 업로드 할 때 Here is a guide

1

는 선택적인 요청 헤더있다 (제 생각에 하지은 선택해야한다,하지만 난 빗나가 다). 이 값을 요청 본문의 MD5 해시에 대한 base64 인코딩으로 설정하면 S3에서 불일치가 발생해도 업로드가 거부되므로 손상된 데이터를 업로드 할 수 없습니다.

ETag 헤더는 개체의 16 진 인코딩 MD5 해시로 설정되며, 단일 부분 업로드 (일부 유형의 서버 쪽 암호화는 예외)입니다.

멀티 파트 업로드의 경우 Content-MD5 헤더는 각 부분에 대해 동일한 값으로 설정됩니다.

S3가 멀티 파트 업로드 부분을 최종 개체에 결합하면 ETag 헤더는 연결된 각 부분의 이진 인코딩 된 (원시 바이트) MD5 해시의 16 진수 MD5 해시와 -에 더하여 설정됩니다. 부품 수.

멀티 파트 업로드 부분을 결합하는 마지막 단계를 S3에게 요청하면 원본 부품의 업로드 중에 제공 한 ETag를 S3에게 돌려줘야합니다. S3ags는 S3가 무엇인지 결합은 귀하가 생각하는 것입니다. 불행히도 업로드 한 부분에 대해 S3에게 묻기 위해 요청할 수있는 API 요청이 있습니다. 일부 게으른 개발자는 S3에이 목록을 요청한 다음 바로 돌아가서 문서 본문에 경고하지만, 일하러 가자. "

멀티 파트 업로드는 5GB가 넘는 개체에는 필요하며 5MB를 초과하는 업로드에는 필요합니다.

이 기능을 사용하면 정상적인 업로드가 보장됩니다.

이전 버전에서는 선택 사항 인 서명 버전 4를 사용하는 경우 추가 무결성 메커니즘이 있으며이 옵션은 선택 사항이 아닙니다 (실제로 V4를 사용하는 경우). 업로드에 요청 헤더가 있어야합니다. x-amz-content-sha256 , 페이로드의 16 진수 SHA-256 해시로 설정되며 여기에도 불일치가 있으면 요청이 거부됩니다.

필자 소개 : 이러한 기능 중 일부는 선택 사항이므로 코드를 감사하지 않는 한 모든 도구가 올바르게 작동한다고 신뢰할 수는 없습니다.

나는 내 데이터를 가진 사람을 신뢰하지 않으므로, 내 자신의 목적으로 내부적으로 "pedantic uploader"라고 불리는 내 자신의 유틸리티를 작성했습니다.이 유틸리티는 SDK를 사용하지 않고 REST API에 직접적으로 말합니다. 파일의 sha256을 계산하여 x-amz-meta-... 메타 데이터로 추가하여 비교 대상으로 가져올 수 있습니다. 압축 파일 (gzip/bzip2/xz)을 업로드 할 때 메타 데이터에 압축 및 비 압축을 모두 저장하고 압축 및 압축되지 않은 크기를 메타 데이터에도 저장합니다.

Content-MD5x-amz-content-sha256요청 헤더입니다. 그들은 다운로드와 함께 반환되지 않습니다. 이 정보를 개체 메타 데이터에 저장하려면 여기를 클릭하십시오.

EC2 내에서 실제로 무결성을 확인하기 위해 디스크에 실제로 저장하지 않고 개체를 다운로드 할 수 있습니다. EC2 인스턴스가 버킷과 동일한 영역에있는 경우 공용 IPv4 또는 IPv6 주소, NAT 인스턴스, S3 VPC 끝점 또는 IPv6 출구 게이트웨이를 통해 인스턴스를 사용하는 경우 데이터 전송에 대한 요금이 청구되지 않습니다 . (NAT 게이트웨이를 통해 IPv4를 통해 S3에 액세스하는 경우 NAT 게이트웨이 데이터 처리량에 대해 요금이 부과됩니다.) 분명히이 문제를 자동화하는 방법이 있습니다,하지만 당신은 콘솔에서 개체를 선택하면 수동으로 다운로드를 선택하고 마우스 오른쪽 버튼을 클릭 한 결과 URL을 복사 한 다음이 작업을 수행 :

$ curl -v '<url from console>' | md5sum # or sha256sum etc. 

그냥 콘솔에서 URL을 포장 ' 따옴표로 묶습니다.이 문자열은 사전 서명되어 쿼리 문자열에 &을 포함하므로 셸에서 해석하지 않아야합니다.

+0

브라우저를 사용하여 파일을 업로드했습니다. cli가 체크섬을 수행하는 것처럼 보입니다 (http://docs.aws.amazon.com/cli/latest/topic/s3-faq.html). 브라우저에서 체크섬도 수행하는지 아는 사람이 있습니까? –