Key Management Service(KMS)

データの暗号化に使用するキーを容易に作成/管理することができます。また、Alibaba Cloud ストレージサービスと連携して、格納データの機密性を向上させることができます。

Alibaba Cloud Key Management Service (KMS) は、データの保護に使用する暗号鍵の作成、制御および安全な保管ができる使いやすいサービスです。

KMS を使用すると、暗号鍵の機密性、整合性、可用性を保ちながら、コストも節約できます。ApsaraDB for RDS や Object Storage Service など、他の Alibaba Cloud サービスと KMS を統合することで、これらのサービスに格納されている証明書やキーなどの重要な情報を暗号化することができます。ユーザーは、暗号鍵の管理作業から解放され、本来のプログラム開発に専念することができます。

ユーザー別利用パターン

  • ユーザータイプ
  • アプリケーション/Web サイト開発者

  • SaaS サービス提供者

  • 最高セキュリティ責任者 (CSO)

  • 課題
  • 暗号鍵による暗号処理と、証明書による署名処理を含むプログラムを開発しています。暗号鍵と証明書を安全に管理したいという課題があります。かつ、プログラム内であれば安全に暗号鍵を使用できる仕組みが必要です。当然ながら、暗号カギを平文のままで保持する方法は危険すぎるので、使用することができません。

  • 暗号鍵の管理は、SaaS サービス提供者としては堅実は仕組みを提供しつつ、責任分担としてはユーザーの範囲としたく考えています。KMS を使用すれば、ユーザーの暗号鍵のセキュリテイ性を簡単に高めることができます。

  • 自社内における暗号鍵の管理運用が、コンプライアンス要件を満たしている必要があります。暗号鍵の権限設定と、暗号鍵の使用履歴の監査が可能であることも必要です。

  • ソリューション
  • エンベロープ暗号化手法を使用すると、KMS に Customer Master Key (CMK) を作成し、CMK で暗号化された暗号鍵のみをデプロイできます。また、KMS を呼び出して、使用する必要がある場合にのみ暗号鍵を復号できます。

  • CMK に RAM で権限を設定しておくことで、CMK を KMS 内で安全に格納し、またユーザーが暗号鍵の安全性をユーザー自身で管理できるようになります。このようにすることで、SaaS サービス提供側は暗号鍵漏れのリスクを軽減でき、本来のサービス開発作業に集中できるようになります。

  • KMS を RAM と関連付けて、統合された権限管理を行うことができます。

利点

フルマネージド
高可用性、高セキュリティ、メンテナンスフリーのサービスです。
セキュリティ
トランスポート層セキュリティ (TLS) を介したデータ転送でデータのセキュリティを確保します。
使いやすさ
Customer Master Key (CMK) より暗号鍵を暗号化すると、鍵の管理がシンプルになります。
マルチリージョンのサポート
日本、中国はもちろん、世界中のリージョンで使用でき、また、使用量はリージョンごと、およびユーザーごとでカウントされます。

特徴

  • 機能

    CMK の作成、表示、有効化、無効化ができます。データの暗号化に使用するデータキー(DK)の作成、CMKよる暗号化および復号が可能です。


    他サービスと連携している CMK のリストを表示できます。

  • セキュリティ

    HTTPS プロトコルのみ KMS にアクセスできるため、通信のセキュリティを確保できます。


    HMAC-SHA1 署名方式をサポートしています。


    データの暗号化に使用される暗号鍵そのものの機密性、整合性、可用性は KMS が保証します。

  • マルチリージョンのサポート

    利用可能なリージョンとエンドポイントは、リクエスト構造をご参照ください。

  • 連携

    格納されたデータを保護するため、 ApsaraDB for RDS など他の Alibaba Cloud プロダクトと簡単に連携できます。


    Object Storage Service に格納した静的ファイルを暗号化し、セキュリティを確保します。

  • エンベロープ暗号化技術

    CMK で暗号化したデータキー(DK)をカプセル化し、暗号化されたデータを保存、転送、使用することができます。KMS に CMK だけを格納します。


    ユーザーが必要なときにのみ KMS を呼び出し、データキーを復号できます。

  • 拡張性と耐久性

    ビジネス要件に従って暗号化のニーズに対応するため、自動的に拡張します。


    暗号化した CMK の複数コピーを格納して、高い耐久性と可用性を確保します。


    リージョン内の複数のアベイラビリティゾーンにデプロイして、暗号鍵の高可用性を確保することができます。

  • 優れたコスト効率

    オンプレミスで同等機能を用意した場合と比較すると、コストを節約できます。


    ビジネス要件に応じて必要なリソースにコストを集中させることができます。

  • 高可用性

    RESTful API とサードパーティの統合をサポートしています。


    RAM との統合および統合された認可管理をサポートします。


    使いやすい API と HTTPS 標準プロトコルをサポートしています。

利用イメージ

  • KMS を使用して小さなデータ (4 KB 未満) を直接暗号化/復号
  • エンベロープ暗号化を使用して大容量データをローカルで暗号化
  • エンベロープ暗号化を使用して大容量データをローカルで復号
KMS を使用して小さなデータ (4 KB 未満) を直接暗号化/復号

KMS を使用して小さなデータ (4 KB 未満) を直接暗号化/復号

KMS API を呼び出し、任意の Customer Master Key (CMK) を指定してデータの暗号化と復号を行うことができます。この利用イメージは、小さなデータ (4 KB 未満) の暗号化と復号に適用されます。データの暗号化および復号の処理はサーバで実施され、サーバとの通信は安全なチャネルを使用します。

手順

  • サーバー上で HTTPS 証明書を保護する場合:

  • 1. Customer Master Key (CMK) を作成します。

  • 2. KMS の暗号化インターフェイスを呼び出して、平文の証明書を送信し、暗号化します。

  • 3. 暗号化された証明書をサーバにデプロイします。

  • 4. 証明書を使用する際は、KMS の復号インターフェイスを呼び出して暗号化された証明書を平文の証明書に復号します。

エンベロープ暗号化を使用して大容量データをローカルで暗号化

エンベロープ暗号化を使用して大容量データをローカルで暗号化

CMK で暗号化したデータキーをカプセル化し、暗号化されたデータを保存、転送、使用することができます。KMS に CMK だけを格納します。この方法は、大容量のデータの暗号化および復号に適しています。

KMS API を呼び出し、任意の Customer Master Key (CMK) を指定してローカルデータの暗号化および復号を実施します。大量のデータをネットワーク経由で送信する必要がないため、ネットワーク通信のコストを削減できます。

その結果、盗聴やフィッシングなど、様々なセキュリティリスクが大幅に軽減されます。

暗号化手順

  • ローカルファイルを暗号化する場合:

  • 1. CMK を作成します。

  • 2. KMS の GenerateDataKey インターフェイスを呼び出してデータキーを生成し、平文データキーと暗号化データキーを取得します。

  • 3. 平文データキーを使用してファイルを暗号化し、暗号文ファイルを生成します。

  • 4. 暗号化データキーと暗号文ファイルをストレージデバイスまたはサービスに保存します。

エンベロープ暗号化を使用して大容量データをローカルで復号

エンベロープ暗号化を使用して大容量データをローカルで復号

CMK で暗号化したデータキーをカプセル化し、暗号化されたデータを保存、転送、使用することができます。KMS に CMK だけを格納します。この方法は、大容量のデータの暗号化および復号に適しています。

KMS API を呼び出し、任意の Customer Master Key (CMK) を指定してローカルデータの暗号化および復号を実施します。大量のデータをネットワーク経由で送信する必要がないため、ネットワーク通信のコストを削減できます。

その結果、盗聴やフィッシングなど、様々なセキュリティリスクが大幅に軽減されます。

復号の手順

  • ローカルファイルを被暗号化する場合:

  • 1. ストレージデバイスまたはサービスから暗号化されたデータキーとファイルを読み込みます。

  • 2. KMS の復号インターフェイスを呼び出して暗号化されたデータキーを復号し、平文のデータキーを取得します。

  • 3. 平文のデータキーを使用して、ファイルを復号します。

よくある質問

1. Customer Master Key (CMK) とは何ですか。

CMK とは、Key Management Service(KMS) において、データキーを暗号化する際に使用する暗号鍵です。また、小さなデータ (4KB 未満) の暗号化に際には、CMK をそのまま使用することもできます。

2. エンベロープ暗号化技術とは何ですか。

エンベロープ暗号化は、デジタルエンベロープ手法に似た暗号化メカニズムです。CMK を使用して直接データを暗号化/復号するのではなく、データキー (DK) をエンベロープにカプセル化することで、データの格納や転送が安全に実施することができます。

3. KMS にアクセスできるリージョンはどこですか。

以下は、対応するロケーション ID とパブリックおよびプライベートネットワークアドレスを使ってKMSにアクセスできるリージョンの一覧です。

4. KMS の API エンドポイントは HTTP でアクセスできますか。

いいえ。データのセキュリティを確保するため、KMS は API および SDK でのアクセスは、HTTPS プロトコルのみをサポートします。

5. 復号する際に "Forbidden.KeyNotFound" というエラーが発生するのはなぜですか。

このエラーは、CMK を格納したリージョン以外で復号しようとした場合に、発生します。KMS は各リージョンで完全に独立しています。データを暗号化した CMK と同じリージョンでデータを復号する必要があります。

6. ユーザーが用意した暗号鍵を KMS で管理するにはどうすればよいですか。

エンベロープ暗号化手法と KMS のオープン API に基づいて、データキーを CMK で暗号化および復号することができます。平文暗号鍵をストレージデバイスに直接格納することは推奨しません。

7. 1 リージョンに 1 ユーザーが作成できる CMK の最大数はいくつですか。

デフォルトでは、200 個です。それを超える場合は、チケットを起票し、サポートセンターへお問い合わせください。

8. 暗号化/復号 API パラメータ の Encryption context とは何ですか。

Encryption context とは、データの整合性を保護するために、Encrypt、GenerateDataKey、Decrypt を含む KMS API で使用できる String : String 形式の JSON 文字列です。