Acra エンジニアリングの例 | ドキュメントとチュートリアル | インストール | アクラのフィードバック |
---|
Acra — 機密データや個人データを保護するためのデータベース セキュリティ スイート。
Acra は、データ フィールドのアプリケーション レベルの暗号化、多層アクセス制御、データベース漏洩防止、および侵入検知機能を 1 つのスイートで提供します。 Acra は、1 つまたは複数のデータベース/データストアにデータを保存する分散アプリ (Web、サーバーサイド、モバイル) 向けに特別に設計されました。
完璧な Acra 互換アプリケーション | 代表的な産業 |
---|---|
データを一元化されたデータベースまたはオブジェクト ストレージに保存する Web アプリとモバイル アプリ |
|
テレメトリを収集し、クラウドでデータを処理する IoT アプリ | |
高負荷なデータ処理アプリ |
Acra は、データベース/ファイル ストレージに保存する前に、各機密データ レコード (データ フィールド、データベース セル、JSON) を暗号化するためのツールを提供します。そして、安全な区画領域 (Acra 側) でそれらを復号化します。 Acra を使用すると、できるだけ早くデータを暗号化し、暗号化されたデータを操作できます。
Acra の暗号化設計により、アプリケーションやデータベースから秘密情報 (パスワード、キーなど) が漏洩しても、保護されたデータを復号化するのに十分ではないことが保証されます。 Acra は漏洩範囲を最小限に抑え、不正行為を検出して漏洩を防止し、進行中のインシデントをオペレーターに通知します。
これは Acra Community Edition で、商用、非商用を問わず永久に無料で使用できます。
| クライアント側および/または Acra 側での暗号化 – 各データ フィールドは固有の暗号化キーを使用して暗号化されます。 |
| 適切なセキュリティとパフォーマンスのバランスをとるために、どの列を暗号化するかを選択します。 |
| 2 つの暗号エンベロープ: AcraBlocks と AcraStructs。 AcraBlocks は高速な対称コンテナーであり、デフォルトで使用します。 AcraStructs は非対称コンテナーであり、クライアント側の暗号化に使用します。 |
| 復号化せずに暗号化されたデータを検索します。 AES-GCM とブラインド インデックスに基づいて、正確なクエリ向けに設計されています。 |
| 完全または部分的なマスキングを使用して、機密データを削除またはマスクします。 |
| 機密データをトークンに置き換え、必要な場合にのみ元のデータと照合します。 |
| キーの生成、エクスポート、バックアップ、ローテーションなどのための組み込みツール。 |
| 組み込みの SQL ファイアウォールを経由します。 |
| ポイズン レコード (ハニー トークン) を使用して、不審な行動について警告します。 |
| Acra Enterprise ユーザーが利用できます。 |
| |
|
Acra は、データ ライフサイクルのさまざまな部分および段階にさまざまな防御層を提供します。これが多層防御の意味であり、攻撃者が外周を越えた場合に複数のリスクを軽減することを目的とした独立した一連のセキュリティ制御です。
| Acra のすべての機能は、アプリとデータベース間のトラフィックを解析し、必要に応じてセキュリティ機能を適用するデータベース プロキシに詰め込まれています。 |
| API サーバー。Acra のほとんどの機能をトラフィック保護を備えた HTTP / gRPC API として公開します。 |
| 認証およびトランスポート暗号化のためのオプションのクライアント側サービス。 |
| Acra Enterprise ユーザーが利用できます。 |
| |
| |
| |
|
| 追加の構成を行わなくても、インフラストラクチャは最初から安全です。 |
| 間違った鍵の長さやアルゴリズムのパディングを選択するリスクはありません。 |
| 構成と自動化が簡単です。 |
| バイナリ パッケージまたは Docker イメージ経由。 |
| アプリケーションコードの変更は最小限で済みます。 |
| すべての Acra コンポーネント全体にわたって。 ELK スタック、Datadog、Graylog、Prometheus、Grafana、Jaeger と互換性があります。 |
| データベースを平文に復号化するロールバック ユーティリティ。 |
| 多数の Web ベースおよび 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 ストア。そのうちの 1 つが必要です。
マスターキーストレージ: KMS、Vault。そのうちの 1 つを強くお勧めします。
追加のサービスとユーティリティ:キー管理ユーティリティ、データ移行スクリプト、トランスポート セキュリティ サービス、ポリシー管理ツール。それらはいずれもオプションです。
Acra コンポーネントの詳細については、「Acra-in- Depth / アーキテクチャ」を参照してください。より一般的な Acra ベースのデータフローとデプロイメントについては、「Acra-in- Depth / データ フロー」を参照してください。
AcraServer を使用した最も単純なデータフローを見てみましょう。
AcraServer は、SQL データベースとの透過的な暗号化/復号化プロキシとして機能します。アプリケーションは、データがデータベースに送信される前に暗号化されていることを認識しません。また、データベースも、誰かがデータを暗号化したことを認識しません。このため、このモードを「透過的暗号化」と呼ぶことがよくあります。
SQL データベースと通信するクライアント側アプリケーションがあります。 SQL プロキシとして機能する AcraServer を中間に追加し、アプリケーションをそこにポイントします。
データベースへのデータの書き込みとデータベースからのデータの読み取りのプロセスは次のようになります。
AcraServer を展開して構成します。データベースへの接続、TLS 証明書、暗号化するフィールドの選択、マスクまたはトークン化、SQL リクエスト ファイアウォールの有効化などです。
AcraServer がデプロイされると、SQL リクエストを受け入れる準備が整います。
クライアント側アプリケーションが SQL データベースではなく AcraServer を指すようにします。
アプリから SQL クエリを受信すると、AcraServer は各クエリを解析し、暗号化、マスキング、トークン化などのセキュリティ操作を実行します。どの値を変更するかを知るために、AcraServer は、どの列を暗号化、マスク、トークン化する必要があるかを記述した構成ファイルを使用します。
操作の実行後、AcraServer は変更されたクエリをデータベースに渡し、データベースの応答をクライアント アプリケーションに返します。電子メール フィールドを暗号化することを選択したとします。これは、元の文字列が暗号化コンテナ内で暗号化され、バイナリ データとしてデータベースに送信されることを意味します。
クライアント アプリケーションがデータを読み取りたい場合、AcraServer に SELECT クエリを送信し、AcraServer がデータをデータベースに送信します。
データベース応答を取得すると、AcraServer は指定されたフィールドの復号化、マスク解除、トークン化解除を試み、それらをアプリケーションに返します。
アプリケーションはデータを平文で受信します。
データ処理操作を除き、AcraServer は SQL クエリも分析します。組み込みの構成可能な SQL ファイアウォールを使用して不要なクエリをブロックし、ポイズン レコードを使用して SQL インジェクションを検出し、ログとメトリクスを送信し、疑わしいケースが発生した場合は運用チームに警告します。
AcraServer の機能とその使用方法の詳細については、「ガイド: AcraServer をインフラストラクチャに統合する」を参照してください。
AcraTranslator を使用した最も単純なデータフローを見てみましょう。
AcraTranslator は、HTTP および gRPC API を使用した Encryption-as-a-Service として機能します。アプリケーションは、データ フィールドと操作 (暗号化、復号化、トークン化、トークン化解除など) を含む API リクエストを AcraTranslator に送信します。アプリケーションは、暗号化されたデータをデータベース (NoSQL、KV ストア、SQL、AWS S3 – 任意) に保存し、AcraTranslator と通信して復号化する必要があります。
AcraTranslator と AcraServer は完全に独立したサーバー側コンポーネントであり、インフラストラクチャに応じて一緒に使用することも、別々に使用することもできます。
どのフィールドを暗号化、復号化、トークン化し、それらをどこに保存するかを認識するクライアント側アプリケーションがあります。 AcraTranslator を追加し、それを使用するための API 呼び出しを実行するようにアプリケーションに指示します。
データベースへのデータの書き込みとデータベースからのデータの読み取りのプロセスは次のようになります。
AcraTranslator をインフラストラクチャにデプロイし、TLS 証明書を構成します。
AcraTranslator をデプロイすると、API リクエストを受け入れることができるようになります。
アプリケーションは AcraTranslator を呼び出し、データ フィールドとそのフィールドに対する操作 (暗号化、復号化、トークン化、トークン化解除) を送信します。
API リクエストを受信すると、AcraTranslator は必要な操作を実行し、結果をアプリに送り返します。アプリが「電子メール」フィールドと「暗号化」操作を送信するとします。その場合、元の文字列は暗号化コンテナーに入れられ、バイナリ データとしてアプリに送り返されます。
アプリケーションは暗号化されたデータを取得し、データベース/データストアに保存します。
アプリケーションは平文データを取得する必要があると、データベース/データストアから暗号化されたデータを読み取り、API リクエストを AcraTranslator に送信します。アプリが「電子メール」フィールドと「復号化」操作を送信するとします。その場合、元のデータ (バイナリ BLOB) が文字列に復号化され、アプリに送り返されます。
データ処理操作を除き、AcraTranslator は API クエリも分析します。つまり、ポイズン レコードを使用して侵入を検出し、ログとメトリクスを送信し、疑わしいケースがあれば運用チームに警告します。
AcraServer の機能とその使用方法の詳細については、「ガイド: AcraTranslator をインフラストラクチャに統合する」を参照してください。
Acra は一連のコンポーネントであり、そのほとんどは「サーバー側」です。つまり、AcraServer、AcraTranslator、または AnyProxy を展開して構成し、クライアント側アプリケーションをそれらに接続します。
Acra コンポーネントは、多数の RDBMS、オブジェクトおよび KV ストア、クラウド プラットフォーム、外部キー管理システム (KMS)、負荷分散システムと互換性があります。
クラウドプラットフォーム | DigitalOcean、AWS、GCP、Heraku、いずれか |
RDBMS | MySQL v5.7 以降、PosgtreSQL v9.4 ~ v11、MariaDB v10.3。 Google Cloud SQL、Amazon RDS |
オブジェクトストア | ファイルシステム、KV データベース、Amazon S3、Google Cloud DataStore |
負荷分散 | HAProxy、クラウドバランサー |
サーバー側プラットフォーム | Ubuntu、Debian、CentOS、RHEL。 ドッカー |
クライアント側のアプリ言語 | どれでも :) |
オープンソース Acra の統合サポートは限定的であり、より多くのサービスは Acra Enterprise Edition でのみ利用可能です。
サーバー側の Acra コンポーネント (AcraServer、AcraTranslator、AnyProxy) は、分離と区画化を強化するために、別個のサーバー/VM 上で実行する必要があります。キー管理ユーティリティとデータベース ヘルパーは通常、AcraServer、AcraTranslator、AnyProxy と同じサーバー上で実行されます。
サーバー側の Acra コンポーネントは、ほとんどの Linux ディストリビューション (Ubuntu、Debian、CentOS) 上で Docker イメージとして実行されます。サーバー側の Acra コンポーネントはホスト OS としての Windows OS と互換性がないことに注意してください。Docker の使用を検討してください。
Acra のインストール方法を学ぶか、コーディングせずに Acra を試す方法については、「はじめに」を参照してください。
Acra はあらゆるクライアント アプリケーションで動作します。アプリの作成に使用する言語に関係なく、アプリを AcraServer (SQL 経由) および AcraTranslator/AnyProxy (API 経由) に接続して、データを暗号化、復号化、トークン化、マスクすることができます。
Acra は、特定の使用例でのみ役立つクライアント側 SDK のセットを提供します。
AcraWriter – データ フィールドを AcraStructs に暗号化する SDK。アプリ側でのデータの暗号化が重要な場合 (エンドツーエンドの暗号化されたデータフローの構築または敵対的な環境での作業の場合) に使用します。
AcraReader – AcraStructs からのデータ フィールドを復号化する SDK。アプリ側でのデータの復号化が重要な場合 (エンドツーエンドの暗号化されたデータフローの構築または敵対的な環境での作業の場合) に使用します。
SDK for AcraTranslator – より便利に使用できるように 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 フレームワークに基づく Web アプリケーション、および単純な CLI アプリケーション) に統合する方法を示します。私たちはよく知られたアプリを採用し、そこで機密データを検出し、暗号化レイヤーを追加しました。データの保護はユーザーにとって完全に透過的であり、インフラストラクチャとアプリケーション コードの変更は最小限で済みます。
開発者と運用担当者に優しい:
単一のコマンドを実行して、アプリケーション、データベース、Acra のコンポーネント、ログ、ダッシュボードをデプロイします。
コードの変更を読んで、クライアント アプリケーションに暗号化を統合するのにどれだけの時間がかかるかを確認します。
ログを読み取り、Prometheus でメトリクスを監視し、Jaeger でトレーサーを確認し、Grafana ダッシュボードを観察することで、Acra がどのように機能するかを学びます。
Docker-compose ファイル、アーキテクチャ スキーム、データベース テーブルなどを検査します。
要件: Docker がインストールされている Linux または macOS。
Acra サンプル プロジェクトを実行する |
---|
Acra のドキュメント、チュートリアル、およびデモの最新バージョンは、公式 Cossack Labs Documentation Server で入手できます。
Acra について最初に理解するには、次のことを行うとよいでしょう。
物事の全体像を把握するための Acra とは何ですか。
Acra のセキュリティ制御では、暗号化、マスキング、トークン化、SQL ファイアウォール、侵入検出などについて詳しく学びます。
必要な Acra コンポーネントと、それぞれの組み合わせの長所と短所を示す一般的なデータフロー。
Acra のアーキテクチャとセキュリティ設計に関するメモを読んで、Acra を使用すると何が得られるのか、そして Acra が動作する脅威モデルとは何かをよりよく理解してください。
Cossack Labs エンジニアによる次の講演のスピーカー スライドもチェックしてください。
「魔法なしの暗号化、痛みなしのリスク管理」アナスタシア・ヴォイトヴァ著。
「Ruby Web アプリケーションのデータ暗号化」Dmytro Shapovalov 著。
Artem Storozhuk による「SQL ファイアウォールの構築 (AcraCensor): 開発者からの洞察」。
Acra サンプル プロジェクトを実行する |
---|
Acra は、次のような現在のプライバシー規制への準拠を支援します。
一般データ保護規則 (GDPR)
HIPAA (医療保険の相互運用性と責任に関する法律)
DPA (データ保護法)
CCPA (カリフォルニア州消費者プライバシー法)
指定された形式で Acra を構成して使用すると、GDPR の第 25 条、第 32 条、第 33 条、および第 34 条に記載されている要求のほとんどと、HIPAA の PII データ保護要求に対応できます。 Acra と規制について詳しくはこちらをご覧ください。
これは Acra Community Edition であり、Acra のオープンソース バージョンであり、商用および非商用に無料で使用できます。バグに遭遇した場合、拡張機能の可能性がある場合、またはセキュリティ設計についてコメントがある場合は、問題でお知らせください。
Acra Enterprise Edition も利用可能です。より優れたパフォーマンス、冗長性/負荷分散を提供し、選択した暗号化プリミティブ (FIPS、GOST) で事前構成され、スタック内のキー/シークレット管理ツールとの統合、ポリシー管理、クライアント側 SDK が備わっており、豊富な機能を備えています。運用担当者と SRE が Acra を便利に操作できるようにするためのユーティリティとツールをまとめました。全機能リストと見積もりについては、お問い合わせください。
機密データを保護するには、暗号化コードを取得してコンパイルするだけでは不十分です。 Acra を使用しても、最新のセキュリティ規制すべてに「すぐに準拠」できるわけではありませんし、他のツールも同様です。
当社は、データフローを監査、評価し、データを分類してリスクを列挙することで、企業のデータセキュリティ戦略の計画を支援します。私たちは、コンプライアンスを達成する上で最も困難で最も人が集まらない部分、つまりコンプライアンスを「ビジネスのコスト」から「リスクを防ぐセキュリティ フレームワーク」に変える作業を行っています。
コードを貢献したり、Acra に他の種類の入力を提供したりする場合は、大歓迎です。貢献の出発点はここです。
Acra ユーザーの方は、短いフィードバックを残してください。
Acra Community Edition は、Apache 2 オープンソース ソフトウェアとしてライセンスされています。
技術的な質問が必要な場合は、お気軽に問題を提起するか、[email protected] にメールしてください。
Cossack Labs Limited のビジネス部門に問い合わせる場合は、[email protected] まで電子メールをお送りください。