こんにちは!Cloud Spannerの世界へようこそ。
チーフアーキテクトの私です。
「Cloud Spannerって、なんだかすごそうだけど、セキュリティや暗号化の話になると、途端に難しく感じる……」
そんな風に思っていませんか?大丈夫、安心してください。今日ここでお話しする「暗号化とKMS統合」の基本さえ押さえれば、Cloud Spannerのセキュリティの仕組みは手に取るように分かりますよ。
ここをクリアすれば、あなたのデータベース運用の引き出しはグッとプロっぽくなります。一緒に優しく紐解いていきましょう!
—
1. そもそも、データが守られるってどういうこと?(日常の例え)
いきなりですが、あなたの大切な日記帳を想像してみてください。
鍵のかかる引き出しにしまっておくのは基本ですが、もしその引き出しごと誰かに盗まれてしまったら……中身を読まれてしまいますよね。
じゃあ、どうすれば安全でしょうか?
「日記帳に書かれている文字そのものを、独自の暗号(読めない文字)で書き換えておく」 のです。そうすれば、たとえ日記帳ごと盗まれても、誰も読むことはできません。
Cloud Spannerの暗号化も、これとまったく同じことをしています。
Cloud Spannerに保存されたデータは、ディスク(ハードディスクなどの記憶装置)に書き込まれるその瞬間に、自動的にぐちゃぐちゃの暗号に変換されます(これを「保存データ暗号化」と呼びます)。そして、私たちが読み出そうとする時には、自動的に元の綺麗なデータに戻してくれます。
—
2. デフォルトの暗号化:何もしなくても「超・堅牢」
まず知ってほしいのは、Cloud Spannerは、あなたが特別な設定をしなくても、最初から最高レベルの暗号化が標準(デフォルト)でかかっているということです。
これは、Googleが用意してくれた「最強の警備員」が、24時間体制であなたのデータを守ってくれているような状態です。
Googleが管理する暗号の鍵を使って、すべてのデータが自動で守られるため、あなたが何か面倒な操作をする必要はありません。「作った瞬間から安全」という、エンジニアにとってはこの上なくありがたい仕様になっています。
—
3. さらにこだわりたい人へ:CMEK(顧客管理の暗号鍵)とは?
「デフォルトですごい安心なのは分かった。でも、うちの会社(あるいはプロジェクト)のルールとして、暗号の鍵は自分たちで管理したいんだよね」
そんな厳しいセキュリティ要件を持つ現場で登場するのが、CMEK(Customer-Managed Encryption Key:顧客管理の暗号鍵)です。
これを先ほどの例えで説明しましょう。
デフォルトの暗号化が「Googleという信頼できる警備会社が金庫の鍵を持っている状態」だとしたら、CMEKは「金庫の鍵を、あなた自身が持って、会社のロッカーの奥深くにしまっておく状態」です。
鍵を持っているのは「あなた(またはあなたの会社)」です。
そのため、万が一(万が一ですよ!)Googleのシステム全体に何かあったとしても、あなたが鍵を渡さない限り、誰もあなたのデータを見ることはできません。さらに、「いつ、誰がその鍵を使ったか」という履歴(監査ログ)も、完全にあなたの手元でコントロールできます。
この鍵の管理に使われるGoogle Cloudのサービスが、Cloud KMS(Key Management Service)です。
—
4. 実務での設定:CMEKをどうやってSpannerに組み込むのか?
百聞は一見にしかず。実際にCMEKを使ってCloud Spannerのインスタンスを作る雰囲気をみてみましょう。
(※専門用語を抑えつつ、直感的に分かるようにコードブロックを用意しました)
ステップ①:自分の鍵(KMSキー)を作る
まずは、Cloud KMSを使って「我が社専用の鍵」を作ります。
鍵のリング(鍵をまとめる束)を作るイメージ
gcloud kms keyrings create my-spanner-keyring \
–location=asia-northeast1
その中に、実際の「暗号の鍵」を作る
gcloud kms keys create my-spanner-key \
–location=asia-northeast1 \
–keyring=my-spanner-keyring \
–purpose=encryption
(コメント:東京リージョン(`asia-northeast1`)に、自分たち専用の鍵を作成しています。この鍵のオーナーは、もちろんあなたです!)
ステップ②:Spannerに「この鍵を使ってね」と教える
次に、Cloud Spannerのデータベースを作る(あるいは設定する)時に、先ほど作った鍵を指定します。
CMEKを指定してCloud Spannerのインスタンスを作成する例
gcloud spanner instances create my-secure-instance \
–config=regional-asia-northeast1 \
–description=”Super Secure Instance” \
–nodes=1 \
–kms-key=projects/YOUR_PROJECT_ID/locations/asia-northeast1/keyRings/my-spanner-keyring/cryptoKeys/my-spanner-key
(コメント:`–kms-key`というオプションで、先ほど作った鍵の住所を指定しています。これで、このSpannerインスタンスのデータは、あなたの鍵でしか開けられない要塞になります)
—
5. 運用上の注意点(ここがプロの知見!)
CMEKを使うときには、プロとして知っておくべき「ちょっとしたコツ(注意点)」があります。それが「鍵の無効化(KMS Key Revocation)」です。
もし万が一、セキュリティ上のインシデント(不正アクセスの疑いなど)が発生した場合、あなたはCloud KMS側でその鍵を「無効化」することができます。
鍵を無効化するとどうなるか?
Cloud Spannerは、即座にそのデータへのアクセスを停止します。 どんな権限を持ったユーザーであっても、鍵がないためデータを読めなくなります。まさに「緊急時の自爆ボタン」のような強力な機能です。
ただし、使い所には細心の注意を払ってください。
うっかり正当な理由でシステムが動いている最中に鍵を無効化してしまうと、アプリケーションが一斉にエラーを起こして止まってしまいます。「鍵の管理は、会社の命運を握る重みがある」ということを、ぜひ覚えておいてくださいね。
—
まとめ:セキュリティの基本はバッチリです!
いかがでしたでしょうか?
- デフォルト暗号化:何もしなくてもGoogleがガッチリ守ってくれる(普段使いならこれで十分!)
- CMEK(KMS統合):鍵を自分たちで持って、より厳重にコントロールしたいときに使うプロ仕様。
「暗号化とKMS統合」と言われると難しく聞こえますが、本質は「データを守る鍵を誰が持つか」という非常にシンプルな話なんです。
ここをクリアできれば、Cloud Spannerのセキュリティ設計における基礎はもうバッチリマスターできていますよ!自信を持って次のステップへ進んでくださいね。それでは、また次の現場でお会いしましょう!
コメント