すべてのプロダクト
Search
ドキュメントセンター

PolarDB:PolarDB Always-confidential の使用

最終更新日:Apr 21, 2026

データベース管理者 (DBA) や開発者などの高い権限を持つロールは、本番データベースを保守する際に、ユーザー ID 情報やトランザクションレコードなどの機密データを公開する可能性があります。PolarDB Always-confidential 機能 (PolarDB for MySQL) は、データベースプロキシレイヤーでクエリ結果をオンザフライで暗号化することで、このリスクを軽減します。これにより、特定のドライバーを使用する承認されたアプリケーションのみが機密データを復号して表示できるようになります。アプリケーションコードへの変更を最小限に抑えながら、この機能は機密データの保護とコンプライアンス要件への準拠に役立ちます。

仕組み

PolarDB Always-confidential 機能は、データベースプロキシレイヤーで動作します。SQL クエリが設定された暗号化ポリシーに一致すると、プロキシは指定されたフィールドのデータを暗号化してから、クエリ結果をクライアントに返します。

  • データストレージ:この機能は、データベース内でのデータの物理的な保存方法を変更しません。データはオペレーティングシステム (OS) ファイルやクラウドディスク上ではプレーンテキストのままです。

  • ユーザーから見た場合

    • スーパーアカウント:クエリ結果は常にプレーンテキストで返されます。暗号化ポリシーはこれらのアカウントに影響しないため、データベース管理が簡素化されます。

    • 標準アカウント:クエリ結果は暗号文で返されます。クライアント側でデータを復号するには、EncJDBC ドライバーGoLang ドライバーなどの特定の暗号化ドライバーと正しいキーが必要です。

    • その他のユーザー:クエリ結果は暗号文で返され、キーが利用可能であっても復号することはできません。

前提条件

ご利用の PolarDB for MySQL クラスターのデータベースプロキシのバージョンは 2.9.12 以降である必要があります。

説明
  • バージョン番号の確認:クラスターのデータベースプロキシのバージョンは、設定と管理 > バージョン管理 ページで確認できます。

  • バージョンの互換性:データベースプロキシのバージョンが 2.9.12 より前で 2.8.18 より後の場合、暗号化ポリシーの設定インターフェイスは動的データマスキング機能と統合されています。ユーザーエクスペリエンスを向上させ、機能を個別に管理するために、プロキシをバージョン 2.9.12 以降にアップグレードすることを推奨します。

オンザフライ暗号化の設定

オンザフライ暗号化の設定には、キーの設定、ロールベースの権限の定義、暗号化ポリシーの作成という 3 つの主要なステップが含まれます。

操作手順

  1. PolarDB コンソールにログインします。左側のナビゲーションウィンドウで、クラスター をクリックします。クラスターがデプロイされているリージョンを選択し、クラスター ID をクリックします。

  2. 左側のナビゲーションウィンドウで、設定と管理 > セキュリティ管理 を選択し、暗号化 タブに移動します。

ステップ 1:キーの設定

暗号化 ページで、キー管理 スイッチをオンにして、クライアント側の暗号化と復号のためのキーを設定します。

KMS キーの使用 (推奨)

Alibaba Cloud Key Management Service (KMS) はキーをホストし、自動的なキーのローテーションをサポートし、高いレベルのセキュリティと保守性を提供します。KMS へのアクセスに使用される AccessKey ペアが漏洩した場合でも、AccessKey ペアを無効にするか、アクセスポリシーを制限することでリスクを軽減できます。キー自体が公開されることはありません。

説明

KMS のキータイプのうち、サポートされているのはカスタマーマスターキー (CMK) のみです。デフォルトキー タイプはサポートされていません。詳細については、「Key Management Service の概要」をご参照ください。

カスタマーマスターキー (CMK) の設定

  1. KMS インスタンスを購入して有効化します

  2. カスタマーマスターキー (CMK) を作成します

  3. PolarDB コンソールに戻り、適切な CMK を選択して OK をクリックします。

自己管理キーの使用

KMS を設定しない場合、システムはデフォルトで自己管理キーを使用します。キーの生成、配布、保管はお客様の責任となります。

重要

自己管理キーには紛失や漏洩のリスクがあり、キーのローテーションはサポートされていません。キーを紛失した場合、対応する暗号化されたデータは復号できなくなります。キーを管理するためには、厳格なセキュリティ手順を確立する必要があります。

ステップ 2:ロール権限の定義

暗号化 ページの ユーザーロール権限の設定 タブで、異なるデータベースアカウントに対してロールを設定します。この設定により、ユーザーがデータをクエリした際にプレーンテキストと暗号文のどちらが表示されるかが決まります。

  1. ロール権限ポリシーの作成 をクリックします。

  2. ロール権限の設定 ダイアログボックスで、ポリシー名を指定し、データベースアカウントをロールに割り当てます。

    1. 権限ポリシー名:ポリシーの名前を指定します。名前は最大 64 文字です。

    2. スーパー管理者:このロールに割り当てるデータベースアカウントのチェックボックスを選択します。複数のアカウントを選択できます。このリストにあるデータベースアカウントは、常にクエリ結果をプレーンテキストで受け取ります。

      説明

      スーパー管理者 ロールは最高レベルの権限を持ちます。このロールは、必要不可欠な管理アカウントまたは監査アカウントにのみ付与し、その使用を厳格に管理してください。

    3. 一般ユーザー:このロールに割り当てるデータベースアカウントのチェックボックスを選択します。複数のアカウントを選択できます。このリストにあるデータベースアカウントは、クエリ結果を暗号文で受け取りますが、特定の暗号化ドライバーと正しいキーを使用してデータを復号できます。

    説明

    その他のユーザー:スーパーアカウントまたは標準アカウントのロールに割り当てられていないデータベースアカウントは、クエリ結果を暗号文で受け取り、データを復号することはできません。

image

ステップ 3:暗号化ポリシーの作成と有効化

暗号化 ページの 暗号化ポリシーの設定 タブで、暗号化ポリシーを設定します。

  1. 暗号化ポリシーの作成 をクリックします。

  2. 表示されるダイアログボックスで、次の表に従ってポリシーパラメーターを設定します。

    説明

    正確な暗号化範囲の指定:ポリシーを作成する際は、必ずデータベース名、テーブル名、フィールド名を指定してください。意図せず他のサービスに影響を与えないように、ポリシーをすべてのデータベースやすべてのテーブルに適用することは避けてください。

    パラメーター

    説明

    ルール名

    必須。ポリシーの一意の識別子です。例:encrypt-user-email。名前は最大 64 文字です。

    説明

    任意。ポリシーの説明です。例:Encrypts the email field in the user table of the customer database。説明は最大 64 文字です。

    ON/OFF

    ポリシーの有効化を制御します。ポリシーはデフォルトで有効になっており、作成時に無効にすることはできません。この設定は後でポリシーリストから変更できます。

    権限ポリシーの関連付け

    必須。ステップ 2 で定義したロール権限ポリシーを選択します。

    データベース

    任意。ポリシーが適用されるデータベース。以下のオプションが利用可能です:

    • (デフォルト) すべてのデータベース:ポリシーをクラスター内のすべてのデータベースに適用します。

    • データベースの指定:ポリシーを指定されたデータベースにのみ適用します。複数のデータベース名はカンマ (,) で区切ります。

    テーブル名

    任意。ポリシーが適用されるテーブル。以下のオプションが利用可能です:

    • (デフォルト) すべてのテーブル:ポリシーを指定されたデータベース内のすべてのテーブルに適用します。

    • テーブルの指定:ポリシーを指定されたテーブルにのみ適用します。複数のテーブル名はカンマ (,) で区切ります。

    列名

    必須。暗号化するフィールドの名前。複数のフィールド名はカンマ (,) で区切ります。

    暗号化アルゴリズム

    必須。暗号化に使用するアルゴリズム。以下のアルゴリズムがサポートされています:

    • SM4 シリーズ:SM4-128-CBCSM4-128-ECBSM4-128-GCMSM4-128-GTR

    • AES-128 シリーズ:AES-128-CBCAES-128-ECBAES-128-GCMAES-128-GTR

    • AES-256 シリーズ:AES-256-CBCAES-256-ECBAES-256-GCMAES-256-GTR

  3. OK をクリックしてポリシーを作成します。

ステップ 4:暗号化ポリシーの管理

暗号化 ページの 暗号化ポリシーの設定 タブで、作成したポリシーをポリシーリストで管理できます。

  • ポリシーの変更:変更したいポリシーを見つけ、操作 列の Modify をクリックします。

  • ポリシーの削除:削除したいポリシーを見つけ、操作 列の Delete をクリックし、確認ダイアログボックスで OK をクリックします。

  • ポリシーの有効化または無効化:ポリシーを見つけ、ON/OFF 列のスイッチをクリックします。

詳細な権限によるセキュリティ強化

コンソール権限を持つ DBA や開発者が暗号化ポリシーを悪意を持って変更または削除するのを防ぐために、Resource Access Management (RAM) を使用してセキュリティを強化できます。

基本概念

関連担当者向けに個別の RAM ユーザーを作成します。これらのユーザーに PolarDB を管理する権限を付与しますが、暗号化ポリシーの変更または削除の権限は明示的に拒否します。

操作手順

  1. 変更を拒否するポリシーの作成

    1. RAM コンソールにログインします。左側のナビゲーションウィンドウで、権限 > ポリシー を選択します。ポリシーの作成 をクリックします。

    2. ビジュアルエディタタブで、以下のパラメーターを設定します:

      • 効果拒否

      • サービスPolarDB

      • 操作アクションの指定 を選択します。書き込み セクションで、polardb:ModifyMaskingRulespolardb:DeleteMaskingRules を選択します。

      • リソース条件:ポリシーが適用されるリソースと、ポリシーが有効になる条件を指定します。詳細については、「アクセスポリシーの要素」をご参照ください。

      • 設定が完了したら、OK をクリックします。ポリシーの作成 ダイアログボックスで、ポリシー名発言 を設定します。

  2. RAM ユーザーへの権限の割り当て

    1. RAM コンソールにログインします。左側のナビゲーションウィンドウで、ID > Users を選択します。対象の RAM ユーザーを見つけ、操作 列の 権限の追加 をクリックします。

    2. ポリシー セクションで、作成した拒否ポリシーを選択し、OK をクリックします

結果

制限された RAM ユーザーが暗号化ポリシーを変更または削除しようとすると、権限が不十分であることを示すエラーメッセージが表示されます。image

次のステップ

暗号化ポリシーを設定した後、アプリケーションは JDBC ドライバー (EncJDBC)GoLang ドライバーなどの暗号化対応ドライバーを使用して、暗号化されたデータを正しく読み書きする必要があります。

よくある質問

暗号化ポリシーを設定しましたが、データベースクライアントからデータをクエリすると、なぜまだプレーンテキストが表示されるのですか?

ログインに使用したデータベースアカウントを確認してください。アカウントに スーパー管理者 ロールが割り当てられている場合、管理を簡素化するためにクエリ結果は常にプレーンテキストになります。暗号文を表示するには、一般ユーザー ロールが割り当てられたアカウントを使用してください。

暗号化が有効になっていることを確認するにはどうすればよいですか?

スーパー管理者 リストにないデータベースアカウントを使用して、コマンドラインや Navicat などの標準的な MySQL クライアントからデータベースに接続します。その後、暗号化されたフィールドをクエリします。暗号文の結果が表示されれば、オンザフライ暗号化がデータベースプロキシレイヤーで機能していることが証明されます。

スーパーアカウントロールに関連するリスクは何ですか?

スーパー管理者 ロールは、暗号化をバイパスしてプレーンテキストデータを直接読み取ることができます。このロールは、データ修正、移行、監査などの必要不可欠なタスクにのみ使用することを推奨します。タスクが完了したら、直ちにアカウントをこのロールから削除し、すべての操作の完全な監査証跡が維持されるようにしてください。