Skip to content

대규모 데이터의 인프라

RustFS는 확장을 위해 설계되었습니다. 기술적 규모, 운영 규모, 경제적 규모. 기본 규모.

객체 스토리지 분야에서는 협상 테이블에서 한 자리를 차지하려면 강력한 암호화가 필요합니다. RustFS는 최고 수준의 암호화와 광범위한 최적화를 통해 더 많은 기능을 제공하여 일반적으로 스토리지 암호화 작업과 관련된 오버헤드를 거의 제거합니다.

데이터 암호화 아키텍처

RustFS는 디스크에 저장될 때와 네트워크를 통해 전송될 때 데이터를 암호화합니다. RustFS의 최첨단 암호화 방식은 현대적인 업계 표준 암호화 알고리즘(AES-256-GCM, ChaCha20-Poly1305, AES-CBC 등)을 사용한 세밀한 객체 수준 암호화를 지원합니다. RustFS는 S3 암호화 시맨틱과 완전히 호환되며, 또한 Hashicorp Vault, Gemalto KeySecure, Google Secrets Manager와 같은 비 AWS 키 관리 서비스를 지원하여 S3를 확장합니다.

네트워크 암호화

객체 스토리지와 애플리케이션 간에 데이터가 전송될 때, 임의의 수의 알려지지 않고/신뢰할 수 없는 네트워크 간에 반송될 수 있습니다. 네트워크를 통해 전송되는 데이터를 암호화("온 더 와이어"라고도 함)하면 중간자 공격을 성공적으로 완화할 수 있으며, 어떤 라우팅이 채택되든 데이터가 안전하게 유지됩니다.

RustFS는 클러스터의 모든 구성 요소 간에 TLS(전송 계층 보안) v1.2+를 지원합니다. 이 방법은 클러스터 간 또는 클러스터 내 암호화 트래픽에서 취약점이 없음을 보장합니다. TLS는 어디서나 사용되는 암호화 프레임워크입니다: 은행, 전자상거래 웹사이트 및 데이터 스토리지 암호화에 의존하는 기타 엔터프라이즈급 시스템에서 사용하는 것과 동일한 암호화 프로토콜입니다.

RustFS의 TLS 구현은 CPU 명령어 수준에서 최적화되어 성능 오버헤드를 무시할 수 있습니다. 클러스터의 각 RustFS 서버에 대해 TLS 개인 키와 공개 인증서만 지정하면 됩니다. Kubernetes 환경의 경우, RustFS Kubernetes Operator는 테넌트 배포 과정에서 TLS 인증서를 통합/자동 생성하고 할당합니다. RustFS는 여러 TLS 인증서를 지원하며, 각 인증서는 특정 도메인 이름에 해당합니다. RustFS는 SNI(서버 이름 표시)를 사용하여 특정 요청에 대해 제공할 인증서를 결정합니다.

객체 암호화

디스크에 저장된 데이터는 완전히 디스크의 보안에 의존하며, 호스트 시스템까지 확장되어 데이터의 보안을 보장합니다. RustFS 서버측 객체 암호화는 데이터가 디스크에 저장되기 전에 자동으로 암호화합니다(정적 암호화). 이 방법은 암호화되지 않은 디스크에 데이터가 쓰이지 않음을 보장합니다. 이 기준 보안 계층은 정적 데이터의 기밀성, 무결성 및 진위성을 보장합니다. RustFS는 데이터 암호화의 최대 유연성을 위해 클라이언트 기반 및 자동 버킷 기본 객체 암호화를 지원합니다.

RustFS 서버측 암호화는 Amazon AWS-S3 시맨틱(SSE-S3)과 호환됩니다. RustFS는 AWS KMS에 대한 기준 지원을 확장하여 Hashicorp Vault, Thales Ciphertrust(이전 Gemalto KeySecure) 등의 일반적인 엔터프라이즈 KMS 시스템을 포함합니다. RustFS는 또한 클라이언트 기반 암호화(SSE-C)를 지원하며, 여기서 애플리케이션이 객체를 암호화하는 데 사용할 데이터 키를 지정할 수 있습니다. SSE-S3 및 SSE-C의 경우, RustFS 서버는 키 순환 및 객체 재암호화를 포함한 모든 암호화 작업을 수행합니다.

자동 서버측 암호화를 통해 RustFS는 각 객체를 고유한 키로 암호화하고, 외부 KMS 또는 클라이언트에서 제공한 키에서 파생된 키와 동적 암호화 키를 사용하여 다층 추가 암호화를 적용합니다. 이 안전하고 복잡한 접근 방식은 RustFS에서 수행되며, 여러 독립적인 커널 및 사용자 공간 암호화 유틸리티를 처리할 필요가 없습니다.

RustFS는 객체가 객체 스토리지에 쓰이거나 읽힐 때 AEAD(인증 암호화 방식)를 사용하여 객체를 암호화/복호화합니다. RustFS AEAD 암호화는 AES-256-GCM, ChaCha20-Poly1305 등의 업계 표준 암호화 프로토콜을 지원하여 객체 데이터를 보호합니다. RustFS의 CPU 수준 최적화(SIMD 가속 등)는 암호화/복호화 작업의 성능 오버헤드를 무시할 수 있도록 보장합니다. 조직은 언제든지 자동 버킷 수준 암호화를 실행할 수 있으며, 차선의 보안 선택을 강요받지 않습니다.

RustFS 키 암호화 서비스

RustFS는 키 암호화를 위한 내장 옵션을 제공합니다. RustFS의 키 암호화 서비스(KES)는 고성능 애플리케이션을 위한 무상태 분산 키 관리 시스템입니다. Kubernetes에서 실행되고 애플리케이션에 암호화 키를 배포하도록 설계되었습니다. KES는 RustFS 서버측 객체 암호화(SSE-S3)의 필수 구성 요소입니다.

KES는 RustFS 클러스터의 암호화 작업을 지원하며, 확장 가능하고 고성능 암호화 작업을 보장하는 핵심 메커니즘입니다. KES는 RustFS 클러스터와 외부 KMS 사이의 중개자 역할을 하여 필요에 따라 암호화 키를 생성하고 암호화 작업을 수행하며, KMS 제한의 제약을 받지 않습니다. 따라서 여전히 마스터 키를 보호하고 인프라에서 신뢰의 근원 역할을 하는 중앙 KMS가 있습니다. KES는 애플리케이션 그룹마다 KMS를 시작할 필요를 없애므로 배포 및 관리가 간소화됩니다. 대신 애플리케이션은 KES 서버에서 데이터 암호화 키(DEK)를 요청하거나 KES 서버에 암호화된 DEK를 복호화하도록 요청할 수 있습니다.

KES 서버는 완전히 무상태이므로 Kubernetes 수평 자동 스케일러를 통해 자동으로 확장될 수 있습니다. 동시에 KES가 대부분의 애플리케이션 요청을 독립적으로 처리하므로 중앙 KMS의 부하가 크게 증가하지 않습니다.

Kubernetes 환경의 경우, RustFS Kubernetes Operator는 각 테넌트에 대한 KES 배포 및 구성을 지원하여 각 테넌트 배포의 일부로 SSE-S3를 활성화합니다.

KES 키 암호화 서비스 아키텍처

지원되는 외부 키 관리 시스템

AWS KMSHashiCorp VaultGoogle Secret Manager
Azure Key VaultThales CipherTrustFortanix

Apache License 2.0 하에 출시되었습니다.