파일 무결성 검사란, 쉽게 이야기 하면 파일이 변경 되었는지 확인하는 작업이다.
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 |