[Cloud Storage] MD5 hash 값을 활용하여 파일 무결성 체크

2024. 3. 25. 14:20·Google Cloud

 

파일 무결성 검사란, 쉽게 이야기 하면 파일이 변경 되었는지 확인하는 작업이다.

Google Cloud Storage(GCS)에 저장된 파일의 MD5 값을 확인하여 .md5 파일을 생성하는 방법을 알아보자.

 

> 목표
  GCS에 있는 파일을 md5 값을 확인하여 .md5파일을 생성하기

> 과정
  GCS에 있는 파일을 전송할때 .md5 파일을 함께 전송하여 파일을 받는 측에서 csum -h MD5 명령어로 파일의 적합성을 확인합니다.


1. 현재 파일의 MD5 값 확인하기

 

- 첫번째: gsutil 값으로 확인 가능함.

https://cloud.google.com/storage/docs/gsutil/commands/hash

gsutil hash [-c] [-h] [-m] filename...

 

 


- 두번째: 객체의 메타 데이터를 직접 가져온다.
https://cloud.google.com/storage/docs/samples/storage-get-metadata?hl=ko#storage_get_metadata-pythonhttps://cloud.google.com/storage/docs/samples/storage-get-metadata?hl=ko#storage_get_metadata-python

 

   blob = bucket.get_blob(blob_name)

    print(f"Blob: {blob.name}")
    print(f"Bucket: {blob.bucket.name}")
    print(f"Storage class: {blob.storage_class}")
    print(f"ID: {blob.id}")
    print(f"Size: {blob.size} bytes")
    print(f"Updated: {blob.updated}")
    print(f"Generation: {blob.generation}")
    print(f"Metageneration: {blob.metageneration}")
    print(f"Etag: {blob.etag}")
    print(f"Owner: {blob.owner}")
    print(f"Component count: {blob.component_count}")
    print(f"Crc32c: {blob.crc32c}")
    print(f"md5_hash: {blob.md5_hash}")

 

 

2. Cloud Storage bucket 연결 후 .md5 파일 생성

- Google Storage 연결 부분

import base64
import os
from google.cloud import storage
from google.cloud.storage.blob import Blob

os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="../key.json"


storage_client = storage.Client()
# buckets = list(storage_client.list_buckets())
bucket = storage_client.bucket("본인의 버킷 Name")

 

 

- 객체의 md5 값 추출 후 GCS 파일 생성함.

def save_all_md5():
    try:
        blobs = bucket.list_blobs()
        
        for blob in blobs:
            assert isinstance(blob, Blob) # 타입 체크
            
            if not blob.name.endswith('.md5'):
                
                blob.reload() 
                # print(f"md5_hash: {blob.md5_hash}")

                #base64디코딩 and 16진수
                md5_hash = base64.b64decode(blob.md5_hash).hex() 
                print(md5_hash)
                
                # Create
                md5_filename = f"{blob.name}.md5"
                md5_blob = bucket.blob(md5_filename)
                md5_blob.upload_from_string(md5_hash)
                
                print(f"Saved MD5 hash to {md5_filename}")
                
            else:
                
                print(f".md5 file 이미 존재 {blob.name}, skip...")
    
    except Exception as e:
        print(f"error occurred : {e}")
        

save_all_md5()

 

코드 설명

  • blob.reload(): 객체를 bucket.list_blobs() 시점에 가져오지만 변동 사항을 반영하기 위해 재로딩.
  • md5_hash = base64.b64decode(blob.md5_hash).hex(): Base64로 인코딩된 MD5 해시 값을 디코딩하여 16진수 값으로 변환.

 


결론


Google Cloud Storage에서 파일의 무결성을 검사하는 것은 데이터 보안을 유지하는 중요한 절차이고, MD5 해시 값을 활용한 방법은 이러한 검사를 수행하는 효과적인 방법이다.

저작자표시 비영리 변경금지 (새창열림)

'Google Cloud' 카테고리의 다른 글

[Cloud Storage] 버킷에 CORS를 적용할 수 있다고?  (0) 2025.02.20
[Google Cloud] API Gateway에 대한 개념과 설정 방법  (0) 2025.02.11
[Cloud Storage] 이미지 업로드 성능 개선기  (0) 2025.02.10
Cloud Storage에 JSON파일이 Upload 될 때, Bigquery Loads 파이프 라인 구성  (0) 2024.08.13
[Secret Manager] API 를 통하여 SSH 비밀 키 추출 및 SFTP 전송  (0) 2024.04.09
'Google Cloud' 카테고리의 다른 글
  • [Google Cloud] API Gateway에 대한 개념과 설정 방법
  • [Cloud Storage] 이미지 업로드 성능 개선기
  • Cloud Storage에 JSON파일이 Upload 될 때, Bigquery Loads 파이프 라인 구성
  • [Secret Manager] API 를 통하여 SSH 비밀 키 추출 및 SFTP 전송
창MIN
창MIN
  • 창MIN
    미니의 코드
    만들고 도전하는것을 좋아합니다💻
  • Guest
    Gmail
    GitHub
  • 전체
    오늘
    어제
    • 분류 전체보기 (25)
      • Google Cloud (6)
      • NodeJS (3)
      • NestJS (1)
      • Python (1)
      • DB (1)
      • Docker & Kubernetes (1)
      • Server & Infra (3)
      • CS (7)
      • Algorithm (2)
        • 개념 (2)
        • 문제 (0)
      • 개발 (0)
  • 인기 글

  • 태그

    Cloud Storage
    버킷 cors
    cors 개념
    파일 무결성
    google api gateway
    Google Cloud
    서버 부하 분산
    쿠키와 세션의 개념
    Cloud Function
    redoc
    typeScript
    Secret Manager
    Cors
    cloud buckets
    알고리즘
    cloud logging
    nodejs
    서버 부하
    signed url
    cors 작동
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
창MIN
[Cloud Storage] MD5 hash 값을 활용하여 파일 무결성 체크
상단으로

티스토리툴바