Acra 엔지니어링 사례 | 문서 및 튜토리얼 | 설치 | 아크라 피드백 |
---|
Acra — 민감한 개인 데이터 보호를 위한 데이터베이스 보안 제품군입니다.
Acra는 데이터 필드에 대한 애플리케이션 수준 암호화, 다층 액세스 제어, 데이터베이스 누출 방지 및 침입 탐지 기능을 하나의 제품군으로 제공합니다. Acra는 하나 이상의 데이터베이스/데이터 저장소에 데이터를 저장하는 분산 앱(웹, 서버 측 및 모바일)을 위해 특별히 설계되었습니다.
완벽한 Acra 호환 애플리케이션 | 대표적인 산업 |
---|---|
중앙 집중식 데이터베이스 또는 객체 스토리지에 데이터를 저장하는 웹 및 모바일 앱 |
|
클라우드에서 원격 측정을 수집하고 데이터를 처리하는 IoT 앱 | |
부하가 높은 데이터 처리 앱 |
Acra는 데이터베이스/파일 저장소에 저장하기 전에 각 민감한 데이터 레코드(데이터 필드, 데이터베이스 셀, json)를 암호화하는 도구를 제공합니다. 그런 다음 안전하게 구획된 영역(아크라 쪽)에서 암호를 해독합니다. Acra를 사용하면 가능한 한 빨리 데이터를 암호화하고 암호화된 데이터로 작업할 수 있습니다.
Acra의 암호화 설계는 애플리케이션이나 데이터베이스에서 유출된 비밀(비밀번호, 키 등)이 보호된 데이터를 해독하는 데 충분하지 않도록 보장합니다. Acra는 누출 범위를 최소화하고 무단 행위를 감지하여 누출을 방지하여 운영자에게 진행 중인 사고를 알립니다.
이것은 Acra Community Edition이며, 상업적 및 비상업적 용도로 영원히 무료입니다.
| 클라이언트 측 및/또는 Acra 측 암호화 – 각 데이터 필드는 고유한 암호화 키를 사용하여 암호화됩니다. |
| 보안과 성능의 균형을 유지하기 위해 암호화할 열을 선택합니다. |
| 두 개의 암호화 봉투: AcraBlocks 및 AcraStructs. AcraBlocks는 빠른 대칭 컨테이너이므로 기본적으로 사용합니다. AcraStruct는 비대칭 컨테이너이므로 클라이언트 측 암호화에 사용합니다. |
| 암호화된 데이터를 해독하지 않고 검색합니다. AES-GCM 및 블라인드 인덱스를 기반으로 정확한 쿼리를 위해 설계되었습니다. |
| 민감한 데이터를 제거하거나 마스킹하려면 전체 또는 부분 마스킹을 사용하세요. |
| 민감한 데이터를 토큰으로 대체하고 필요한 경우에만 원본과 일치시킵니다. |
| 키 생성, 내보내기, 백업, 순환 등을 위한 내장 도구 |
| 내장된 SQL 방화벽을 통해. |
| 의심스러운 행동에 대해 경고하기 위해 독극물 기록(허니 토큰)을 사용합니다. |
| Acra Enterprise 사용자가 사용할 수 있습니다. |
| |
|
Acra는 데이터 수명주기의 다양한 부분과 단계에 대해 다양한 방어 계층을 제공합니다. 이것이 바로 심층 방어 입니다. 공격자가 외부 경계를 통과하는 경우 여러 위험을 완화하는 것을 목표로 하는 독립적인 보안 제어 세트입니다.
| 앱과 데이터베이스 간의 트래픽을 구문 분석하고 적절한 경우 보안 기능을 적용하는 데이터베이스 프록시에 포함된 모든 Acra 기능입니다. |
| Acra의 기능 대부분을 트래픽 보호 기능을 갖춘 HTTP/gRPC API로 노출하는 API 서버입니다. |
| 인증 및 전송 암호화를 위한 선택적 클라이언트측 서비스입니다. |
| Acra Enterprise 사용자가 사용할 수 있습니다. |
| |
| |
| |
|
| 추가 구성 없이 인프라가 처음부터 안전합니다. |
| 잘못된 키 길이나 알고리즘 패딩을 선택할 위험이 없습니다. |
| 구성 및 자동화가 쉽습니다. |
| 바이너리 패키지 또는 Docker 이미지를 통해. |
| 애플리케이션 코드를 최소한으로 변경해야 합니다. |
| 모든 Acra 구성 요소 전반에 걸쳐; ELK 스택, Datadog, Graylog, Prometheus, Grafana, Jaeger와 호환됩니다. |
| 데이터베이스를 일반 텍스트로 해독하는 롤백 유틸리티. |
| 수많은 웹 기반 및 Docker 기반 예제 프로젝트를 사용할 수 있습니다. |
| DigitalOcean 클라우드에서 AcraServer를 실행하세요. |
| 우리는 귀하를 위해 Acra를 설정하고 관리할 수 있습니다. |
Acra는 가장 신뢰할 수 있는 암호화의 최고의 오픈 소스 구현을 기반으로 높은 수준의 암호화 시스템을 구현하는 암호화 라이브러리 Themis를 사용합니다. Acra는 자체 제작한 암호화 기본 요소나 모호한 암호를 엄격하게 포함하지 않습니다.
고유한 보증을 제공하기 위해 Acra는 잘 알려진 암호와 스마트 키 관리 체계의 조합을 사용합니다. 암호화 및 키 관리를 참조하세요.
기본 암호화 원시 소스 | OpenSSL |
지원되는 암호화 기본 소스 ᵉ | BoringSSL, LibreSSL, FIPS 준수, GOST 준수, HSM |
스토리지 암호화(AcraBlocks) | AES-256-GCM + AES-256-GCM |
스토리지 암호화(AcraStructs) | AES-256-GCM + ECDH |
전송 암호화 | TLS v1.2+ 또는 Themis 보안 세션 |
KMS 통합 ᵉ | Amazon KMS, Google Cloud Platform KMS, HashiCorp Vault, Keywhiz 등 |
ᵉ — Acra의 Enterprise 버전에서만 사용할 수 있습니다. 전체 기능 목록과 견적을 받으려면 이메일을 보내주세요.
Acra는 여러 서비스와 유틸리티로 구성됩니다. Acra 서비스를 사용하면 정확한 인프라에 완벽하게 적합한 무한히 정교한 데이터 흐름을 구성할 수 있습니다. 아키텍처 및 사용 사례에 따라 기본 서비스만 배포하거나 모두 배포해야 할 수도 있습니다.
보안 적용 구성 요소 : "암호화가 발생하는" 서비스입니다. AcraServer, AcraTranslator, AnyProxy 또는 클라이언트 측 SDK 중 하나가 필요합니다.
키 저장소: Acra가 암호화된 키를 보관하는 데이터 저장소: Redis, 데이터베이스의 테이블, 모든 KV 저장소. 그 중 하나가 필요합니다.
마스터 키 저장소: KMS, Vault. 그 중 하나를 적극 권장합니다.
추가 서비스 및 유틸리티: 키 관리 유틸리티, 데이터 마이그레이션 스크립트, 전송 보안 서비스, 정책 관리 도구. 그 중 하나는 선택 사항입니다.
Acra 구성요소에 대한 자세한 내용은 Acra 심층/아키텍처를 참조하세요. 보다 일반적인 Acra 기반 데이터 흐름 및 배포를 보려면 Acra 심층/데이터 흐름을 참조하세요.
AcraServer를 사용하여 가장 간단한 데이터 흐름을 살펴보겠습니다.
AcraServer는 SQL 데이터베이스를 사용하여 투명한 암호화/암호 해독 프록시로 작동합니다. 애플리케이션은 데이터가 데이터베이스에 도달하기 전에 암호화되었다는 사실을 모르고, 데이터베이스도 누군가가 데이터를 암호화했다는 사실도 모릅니다. 이것이 바로 우리가 이 모드를 "투명한 암호화"라고 부르는 이유입니다.
SQL 데이터베이스와 통신하는 클라이언트 측 애플리케이션이 있습니다. SQL 프록시로 작동하는 AcraServer를 중간에 추가하고 여기에 애플리케이션을 지정합니다.
데이터베이스에 데이터를 쓰고 읽는 과정은 다음과 같습니다.
AcraServer를 배포하고 구성합니다. 데이터베이스 연결, TLS 인증서, 암호화할 필드 선택, 마스크 또는 토큰화, SQL 요청 방화벽 활성화 등이 가능합니다.
AcraServer가 배포되면 SQL 요청을 수락할 준비가 됩니다.
클라이언트 측 애플리케이션이 SQL 데이터베이스 대신 AcraServer를 가리키도록 합니다.
앱에서 SQL 쿼리를 수신하면 AcraServer는 각 쿼리를 구문 분석하고 암호화, 마스킹, 토큰화와 같은 보안 작업을 수행합니다. 변경할 값을 알기 위해 AcraServer는 어떤 열을 암호화하고, 마스크하고, 토큰화해야 하는지 설명하는 구성 파일을 사용합니다.
작업을 수행한 후 AcraServer는 수정된 쿼리를 데이터베이스에 전달하고 데이터베이스 응답을 다시 클라이언트 애플리케이션에 전달합니다. 이메일 필드 암호화를 선택했다고 가정해 보겠습니다. 이는 원본 문자열이 암호화 컨테이너로 암호화되어 이진 데이터로 데이터베이스에 전송된다는 의미입니다.
클라이언트 애플리케이션이 데이터를 읽으려고 하면 이를 데이터베이스로 보내는 AcraServer에 SELECT 쿼리를 보냅니다.
데이터베이스 응답을 검색하면 AcraServer는 지정된 필드의 암호 해독, 마스크 해제, 토큰화 해제를 시도하고 해당 필드를 애플리케이션에 반환합니다.
애플리케이션은 일반 텍스트로 데이터를 받습니다.
데이터 처리 작업을 제외하고 AcraServer는 SQL 쿼리도 분석합니다. 내장된 구성 가능한 SQL 방화벽을 사용하여 원하지 않는 쿼리를 차단하고, 포이즌 레코드를 사용하여 SQL 주입을 감지하고, 로그 및 메트릭을 보내고, 의심스러운 경우 Ops 팀에 경고합니다.
AcraServer 기능과 사용 방법에 대해 자세히 알아보려면 가이드: AcraServer를 인프라에 통합을 확인하세요.
AcraTranslator를 사용하여 가장 간단한 데이터 흐름을 살펴보겠습니다.
AcraTranslator는 HTTP 및 gRPC API를 사용하여 서비스로서의 암호화로 작동합니다. 애플리케이션은 데이터 필드 및 작업(암호화, 암호 해독, 토큰화, 토큰화 해제 등)을 포함하여 AcraTranslator에 API 요청을 보냅니다. 애플리케이션은 암호화된 데이터를 데이터베이스(NoSQL, KV 저장소, SQL, AWS S3 등)에 저장하고 AcraTranslator와 통신하여 이를 다시 해독하는 역할을 합니다.
AcraTranslator와 AcraServer는 완전히 독립적인 서버 측 구성 요소이며 인프라에 따라 함께 또는 별도로 사용할 수 있습니다.
어떤 필드를 암호화하고, 해독하고, 토큰화하고, 어디에 저장할지 알고 있는 클라이언트측 애플리케이션이 있습니다. AcraTranslator를 추가하고 이를 사용하기 위해 API 호출을 수행하도록 애플리케이션을 가르칩니다.
데이터베이스에 데이터를 쓰고 읽는 과정은 다음과 같습니다.
인프라에 AcraTranslator를 배포하고 TLS 인증서를 구성합니다.
AcraTranslator가 배포되면 API 요청을 수락할 준비가 됩니다.
귀하의 애플리케이션은 AcraTranslator를 호출하고 이에 대한 데이터 필드와 작업(암호화, 암호 해독, 토큰화, 토큰화 해제)을 보냅니다.
API 요청을 받으면 AcraTranslator는 필요한 작업을 수행하고 결과를 앱으로 다시 보냅니다. 앱이 "이메일" 필드와 "암호화" 작업을 보낸다고 가정해 보겠습니다. 이 경우 원본 문자열은 암호화 컨테이너로 암호화되어 이진 데이터로 앱에 다시 전송됩니다.
애플리케이션은 암호화된 데이터를 가져와 데이터베이스/데이터 저장소에 저장합니다.
애플리케이션이 일반 텍스트 데이터를 가져와야 하면 데이터베이스/데이터 저장소에서 암호화된 데이터를 읽고 AcraTranslator에 API 요청을 보냅니다. 앱이 "email" 필드와 "decrypt" 작업을 보낸다고 가정해 보겠습니다. 이 경우 원본 데이터(바이너리 blob)가 문자열로 해독되어 앱으로 다시 전송됩니다.
데이터 처리 작업을 제외하고 AcraTranslator는 API 쿼리도 분석합니다. 즉, 포이즌 레코드를 사용하여 침입을 감지하고, 로그와 메트릭을 보내고, 의심스러운 경우 운영 팀에 경고합니다.
AcraServer 기능과 사용 방법에 대해 자세히 알아보려면 가이드: AcraTranslator를 인프라에 통합을 확인하세요.
Acra는 구성 요소 모음이며 대부분은 "서버 측"입니다. 즉, AcraServer, AcraTranslator 또는 AnyProxy를 배포 및 구성하고 클라이언트 측 애플리케이션을 여기에 연결합니다.
Acra 구성 요소는 수많은 RDBMS, 객체 및 KV 저장소, 클라우드 플랫폼, 외부 키 관리 시스템(KMS), 로드 밸런싱 시스템과 호환됩니다.
클라우드 플랫폼 | DigitalOcean, AWS, GCP, Heroku 등 |
RDBMS | MySQL v5.7+, PosgtreSQL v9.4-v11, MariaDB v10.3; 구글 클라우드 SQL, 아마존 RDS |
객체 저장소 | 파일 시스템, KV 데이터베이스, Amazon S3, Google Cloud DataStore |
로드 밸런싱 | HAProxy, 클라우드 밸런서 |
서버측 플랫폼 | 우분투, 데비안, CentOS, RHEL; 도커 |
클라이언트 측 앱 언어 | 어느 :) |
오픈 소스 Acra는 통합 지원이 제한되어 있으며 Acra Enterprise Edition에서만 더 많은 서비스를 사용할 수 있습니다.
서버 측 Acra 구성 요소(AcraServer, AcraTranslator, AnyProxy)는 더 나은 격리 및 구분을 위해 별도의 서버/VM에서 실행되어야 합니다. 키 관리 유틸리티 및 데이터베이스 도우미는 일반적으로 AcraServer, AcraTranslator, AnyProxy와 동일한 서버에서 실행됩니다.
서버 측 Acra 구성 요소는 대부분의 Linux 배포판(Ubuntu, Debian, CentOS)에서 Docker 이미지로 실행됩니다. 서버 측 Acra 구성 요소는 Windows OS와 호스트 OS와 호환되지 않으므로 Docker 사용을 고려하십시오.
Acra를 설치하는 방법을 알아보거나 코딩 없이 Acra를 사용해 보려면 시작하기를 참조하세요.
Acra는 모든 클라이언트 애플리케이션과 함께 작동합니다. 앱을 작성하는 데 사용하는 언어에 관계없이 AcraServer(SQL을 통해) 및 AcraTranslator/AnyProxy(API를 통해)에 연결하여 데이터를 암호화, 해독, 토큰화 및 마스킹할 수 있습니다.
Acra는 특정 사용 사례에만 유용한 클라이언트 측 SDK 세트를 제공합니다.
AcraWriter – 데이터 필드를 AcraStructs로 암호화하는 SDK입니다. 앱 측에서 데이터를 암호화하는 것이 중요한 경우(종단 간 암호화된 데이터 흐름을 구축하거나 적대적인 환경에서 작업하는 경우) 이를 사용하십시오.
AcraReader – AcraStructs의 데이터 필드를 해독하는 SDK입니다. 앱 측에서 데이터를 해독하는 것이 중요한 경우(종단 간 암호화된 데이터 흐름을 구축하거나 적대적인 환경에서 작업하는 경우) 이 기능을 사용하세요.
AcraTranslator용 SDK – 보다 편리한 사용을 위해 AcraTranslator의 API를 캡슐화한 SDK입니다.
이러한 SDK는 Ruby, Python, Go, C++, Node.js, iOS(Swift, ObjC), Android(Java, Kotlin), 데스크톱 Java 및 PHP에서 사용할 수 있습니다.
Acra를 설치하는 방법을 알아보거나 코딩 없이 Acra를 사용해 보려면 시작하기를 참조하세요.
Acra 예제 프로젝트는 Acra 데이터 보호 제품군을 기존 애플리케이션, 즉 Django 및 Ruby on Rails 프레임워크 기반 웹 애플리케이션과 간단한 CLI 애플리케이션에 통합하는 방법을 보여줍니다. 우리는 잘 알려진 앱을 가져와 그곳에서 민감한 데이터를 감지하고 암호화 레이어를 추가했습니다. 데이터 보호는 사용자에게 완전히 투명하며 인프라 및 애플리케이션 코드를 최소한으로 변경하면 됩니다.
개발자 및 운영 친화적:
단일 명령을 실행하여 애플리케이션, 데이터베이스, Acra의 구성 요소, 로그 및 대시보드를 배포합니다.
코드 변경 사항을 읽고 암호화를 클라이언트 애플리케이션에 통합하는 데 얼마나 적은 시간이 소요되는지 확인하십시오.
로그를 읽고, Prometheus에서 측정항목을 모니터링하고, Jaeger에서 추적기를 확인하고, Grafana 대시보드를 보면서 Acra의 작동 방식을 알아보세요.
Docker 작성 파일, 아키텍처 구성표, 데이터베이스 테이블 등을 검사합니다.
요구 사항: Docker가 설치된 Linux 또는 macOS.
Acra 예제 프로젝트 실행 |
---|
Acra에 대한 최신 버전의 문서, 튜토리얼 및 데모는 공식 Cossack Labs 문서 서버에서 사용할 수 있습니다.
Acra에 대한 초기 이해를 얻으려면 다음을 수행할 수 있습니다.
사물의 개요를 얻기 위한 아크라(Acra)는 무엇입니까?
암호화, 마스킹, 토큰화, SQL 방화벽, 침입 탐지 등에 대해 자세히 알아볼 수 있는 Acra의 보안 제어
필요한 Acra 구성 요소와 각 조합의 장단점이 무엇인지 보여주는 일반적인 데이터 흐름입니다.
Acra를 사용할 때 얻을 수 있는 이점과 Acra가 운영하는 위협 모델이 무엇인지 더 잘 이해하려면 Acra의 아키텍처 및 보안 설계에 대한 참고 사항을 읽어보세요.
또한 Cossack Labs 엔지니어가 진행하는 다음 강연의 발표자 슬라이드를 확인해 보세요.
Anastasiia Voitova의 "마법 없는 암호화, 고통 없는 위험 관리".
Dmytro Shapovalov의 "Ruby 웹 애플리케이션을 위한 데이터 암호화".
Artem Storozhuk의 "SQL 방화벽 구축(AcraCensor): 개발자의 통찰력".
Acra 예제 프로젝트 실행 |
---|
Acra는 귀하가 다음과 같은 현행 개인정보 보호 규정을 준수하도록 도와드릴 수 있습니다.
일반 데이터 보호 규정(GDPR)
HIPAA(건강 보험 이동성 및 책임법)
DPA(데이터 보호법)
CCPA(캘리포니아 소비자 개인정보 보호법)
지정된 형식으로 Acra를 구성하고 사용하면 GDPR 제25조, 32조, 33조, 34조에 설명된 대부분의 요구 사항과 HIPAA의 PII 데이터 보호 요구 사항이 충족됩니다. 아크라 및 규정에 대해 자세히 알아보세요.
Acra의 오픈소스 버전인 Acra Community Edition은 상업적, 비상업적 용도 모두 무료입니다. 버그를 발견하거나, 가능한 개선 사항을 확인하거나, 보안 설계에 대한 의견이 있는 경우 문제를 통해 알려주시기 바랍니다.
Acra Enterprise Edition도 사용할 수 있습니다. 더 나은 성능, 중복성/로드 밸런싱을 제공하고 원하는 암호화 기본 요소(FIPS, GOST)가 사전 구성되어 제공되며 스택의 키/비밀 관리 도구, 정책 관리, 클라이언트 측 SDK와 통합되어 있으며 다양한 기능을 갖추고 있습니다. Ops 및 SRE가 Acra를 편리하게 운영할 수 있는 유틸리티 및 도구입니다. 전체 기능 목록과 견적을 받으려면 당사에 문의하세요.
민감한 데이터를 보호하려면 암호화 코드를 컴파일하는 것 이상의 것이 필요합니다. Acra는 모든 최신 보안 규정을 "기본적으로 준수"하도록 만들지 않으며 다른 어떤 도구도 그렇게 하지 않습니다.
우리는 데이터 흐름을 감사하고 평가하며 데이터를 분류하고 위험을 열거함으로써 기업이 데이터 보안 전략을 계획하도록 돕습니다. 우리는 규정 준수를 달성하기 위해 가장 어렵고 가장 적게 참여하는 부분을 수행합니다. 이를 "비즈니스 수행 비용"에서 "위험을 방지하는 보안 프레임워크"로 전환하는 것입니다.
귀하의 코드를 제공하고 싶거나 Acra에 다른 종류의 입력을 제공하고 싶다면 언제든지 환영입니다. 기여의 출발점이 여기에 있습니다.
아크라 사용자이시라면 간단한 피드백을 남겨주세요.
Acra Community Edition은 Apache 2 오픈 소스 소프트웨어로 라이선스가 부여됩니다.
기술적인 질문을 하고 싶다면 언제든지 문제를 제기하거나 [email protected]으로 메일을 보내주세요.
Cossack Labs Limited의 사업부에 문의하려면 [email protected]으로 이메일을 보내주세요.