活動中のサービスとしての暗号化
6778 ワード
TLドクター
このブログの記事を読んだ後、なぜ我々はサービスとして暗号化が必要なの概要があります.また、PythonとHashicorp Vaultを使ってPOCを実装し、我々が学んだことを適用します.
概要
現在、銀行や健康情報などの機密データを扱う企業があります.これは、セキュリティ違反の場合には、会社は、法的、金融、悪いPRの影響を受ける可能性があることを意味します.その結果、このタイプのデータを格納する業界標準のガイドラインがあります.例えば、クレジットカードデータを格納する際には、データベースに格納された口座番号を暗号化する必要がある.
交通の暗号化
残りの暗号化はシームレスに行うことができますusing a cloud provider , データを扱うときには、サービスの周りに移動するトリッキーすることができます.はい、サービス間で安全な通信チャネル(例えば、TLS)を使用できますが、これは十分ではありません.TLSを使用しても間違って行くことができる1つのことは、誤って情報をロギングすることです.これはcompanies that are worth billions of dollars and with an awesome engineering team .
アプリケーションレベルでの暗号化の取り扱い
これは、そこに良い暗号ライブラリがあるので可能です.しかし、開発者は正しい方法で実装を行うべきです.
さらに、会社がAを走らせている間Majestic Monolith , チャンスは、メインサービスと相互作用する他のサービスを持っていることです.これは以下のような質問になります.
鍵管理システムの使用
解決策は集中管理された鍵管理システムで機密データを保護することである.これはHashicorp Vault、AWS KMS、Google CMKなどを使用して行うことができます.アイデアは暗号化と復号化の責任をこのサービスに委ねることです.Hashicorp Vaultのようなソリューションを使用すると、https API呼び出しでアプリケーションデータを暗号化して復号化できます.つまり、
どうやって動くの?
ソースコードを見つけることができますhere .
ご覧のように、3つのサービスがあります.
API
このアプリケーションでは、名前とパン(主要アカウント番号)と“クレジットカード”を作成することができます.すべてのデータが暗号化されて格納され、APIは、使用されるタイプの暗号化について何かを知っているか、またはそれを復号する方法.
カードプロセッサ
このサービスは、ビジネスロジックに従って、これまでに作成したクレジットカードを処理します.APIと同様に、暗号化や復号化について何も知りません.
ボルト
このサービスはカードプロセッササービスによって行われたAPIと復号によって行われる暗号化を扱います.新しいサービスが将来追加されるならば、暗号化または復号化に関するすべてはまだVaultの上で100 %に依存するでしょう.最良の部分は、他のサービスで変更が行われないことです.
ハウツー動画
ジャストドゥー
docker-compose up --build
そして、あなたは行く準備ができていなければなりません.構成
次のスクリプトを実行します
./bin/vault.sh
3つのことが起こりました.token
出力値からVAULT_TOKEN
env var in :app/settings.py
card_processor.py
クレジットカードAPIの使用
ポストリクエストを送る
http://localhost:8000/credit-cards/
を返します.{
"name":"Carlos Gardel",
"pan":"4539296620131157"
}
すべてがうまくいけば、暗号化された主要なアカウント番号を受け取る必要があります.{
"name": "Carlos Gardel",
"pan": "vault:v1:JnC8pS/zmHhHPGd7dk5eCGilnUi8odvRIBP9Z+rBmMLAWXJ/dgYqGAU4MTk="
}
を返しますhttp://localhost:8000/credit-cards/
まだ暗号化されたパンフィールドが表示されます.カードプロセッササービスの使用
では、このカードを使ってカードを処理しましょう
card_processor.py
サービスpython3 card_processor.py
カードがうまく解読され処理されたことを見ることができます.Processing CARLOS GARDEL card with number 4539296620131157
回転キー
キーが漏らされるならば、危険を最小にするために、Vaultにそれを回転させるように伝えましょう.
./bin/rotate.sh
我々がクレジットカードアプリケーションにもう一つのポスト要求をするならば、我々は我々が使用したのを見ますv2
暗号化を実行する.{
"name": "Aníbal Troilo",
"pan": "vault:v2:vdIlXggLzrM4n5Xlzxh6a/xpmd7yz/F9MsoifuR/kmOodGKV5wPaWvMMiEw="
}
我々の異なる暗号化キーバージョン(V 1とV 2)を得て、見ましょう:[
{
"name": "Carlos Gardel",
"pan": "vault:v1:JnC8pS/zmHhHPGd7dk5eCGilnUi8odvRIBP9Z+rBmMLAWXJ/dgYqGAU4MTk="
},
{
"name": "Aníbal Troilo",
"pan": "vault:v2:vdIlXggLzrM4n5Xlzxh6a/xpmd7yz/F9MsoifuR/kmOodGKV5wPaWvMMiEw="
}
]
に戻りましょうcard_processor.py
サービス現在、我々は両方のエントリを解読して、処理することができます.一つは復号されたv1
もう一方はv2
.Processing CARLOS GARDEL card with number 4539296620131157
Processing ANÍBAL TROILO card with number 2720997130887021
ベイル暗号化キーと回転はVaultによって処理されました.更なる考察
生産はまだ準備中ですか。
そうは思わない.
オープンソース対クラウドプロバイダーソリューション
あなた自身のオープンソースソリューションに対処するか、またはそれぞれのクラウドプロバイダのソリューションに対処するか?
包み上げる
あなたが議論するか、実装に挑戦したいならば、私はそうするのがうれしいです.ちょうどコメントを残すか、私を見つけてください.
参考文献
Reference
この問題について(活動中のサービスとしての暗号化), 我々は、より多くの情報をここで見つけました https://dev.to/sergiodn/encryption-as-a-service-in-action-213nテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol